It seems like there are two really interesting challenges in
computing, for us humans involved:
(a) Learning skills that are valuable and enduring.
E.g., Learning how Ethernet works in 1985: good investment of time.
E.g., Learning intricacies of Turbo Pascal 6.0 modules in 1991: that
knowledge has expired.
E.g., Learning Unix system administration in 1987: good investment of
time.
E.g., Learning intricacies of the Windows ME registry in 1997: poor
choice of time.
E.g., Learning ANSI C++ in 1991: good use of time.
(b) Designing systems that are a good fit for the application, and,
harder still, are a good fit for changes we don't yet know about yet.
E.g., Choosing OS/2 as the desktop platform for Bank of America in
1995: not a long-term choice.
E.g., Choosing Unix as a server OS in 1994: good, flexible choice.
E.g., The Berkeley Sockets API for Network Programming: awkward
choice. (The fitter choice: file handles.)
E.g., SQL-accessible database for multi-user applications: flexible,
long-term choice.
E.g., Filesystem database for multi-user applications: tough choice to
maintain.