The Longevity of Information Technology (IT) Skills

 
    Home  |  Articles  |  Agility@Scale Blog  |  Books  |  IT Surveys  |  Podcasts  |  Contact Me  |  Mailing List  |  Site Map
Enterprise Unified Process In the early 1990s I spent a lot of time mentoring and training people in object technology, and over the past few years my focus has shifted to mentoring people in agile software development techniques and the Unified Process.  One of the realizations that I’ve come to, depicted in Figure 1, is that any given skill has an expected period of time for which it is in demand.  My experience is that platform-specific skills, such as C# or Java programming skills, will be in high demand over a period of five-to-ten years and then will dwindle in popularity as new platforms being to dominate.  This isn't to say that you still won't be gainfully employed as a Java programmer for more than 10 years, it's just that you likely won't be paid as much, or be in as much demand, as people who have skills developing on a newer platform. When I first wrote about this concept in 1997 in More Process Patterns C++ and Java were leading languages: C++ was declining in popularity and Java was clearly gaining.  Now, in 2005, C++ is an important but mature niche platform and Java programmers effectively have commodity skills.  C# is now in ascendancy and programmers with C# experience are clearly sought after.  

 

Figure 1. The longevity of skills.

Similarly, paradigm specific skills such as object-oriented modeling, structured testing, object programming (in general), and traditional project management have a lifespan of between 15-25 years.  Paradigms such as structured development, object-oriented development, or agile software development, tend to run their course over this time frame.  Structured analysis and design was overtaken by object-oriented modeling (in particular UML-based modeling) in the late 1990s and early 2000s and traditional project management is clearly being overtaken by agile project management techniques.  Structured modelers had a pretty good run but are now finding it difficult to find employment without at least object modeling skills, if not agile modeling skills.  Similarly, I expect that traditional project managers, regardless of their level of PMI certification, will discover over the next few years that they need to improve their skillset.

Finally, communication and collaboration skills, often referred to as "people skills", will easily last you your entire career.  This includes basic writing, presentation, and meeting facilitation skills.  More importantly, it includes listening skills too.

I'd like to make several observations pertaining to Figure 1:

  1. The more technical a skill is the shorter the period of its usefulness to you.  This should not be a surprise – the rapid rate of change in the technology field necessitates an equally rapid change in the skills of technologists. 

  2. If you choose to specialize in a specific programming language, and many people do, then you need to be prepared to overhaul your skillset every ten years or so.  Yes, you might be able to stay with a single language for fifteen or twenty years, look at COBOL and C programmers, but then again look at the sparse employment opportunities for APL, BASIC, and FORTRAN programmers.  In short, you need to be good at guessing what the next big thing is and then make the jump to it at the right time.  This is easier said than done: in late 1995 I realized that I needed to transition out of Smalltalk and into another language, and at the time my leading choices were Java and Eiffel, both of which had similar levels of buzz within the industry.  Luckily I picked Java.

  3. If you choose to stick to skills with greater longevity, for example project management or modeling, you still need to be prepared to keep current with new technologies.  In many ways project managers have an even greater need than programmers for training – programmers specializing in a single language need to gain detailed skills in a reasonably narrow topic, whereas project managers need to gain a shallow knowledge of a broad range of skills.

  4. Communication and collaboration skills enable you to transition to new paradigms, and paradigm-specific skills enable you to transition to new platforms.  Making the jump from Java to C# is fairly easy if you understand the fundamentals of object-oriented programming, the UML, ...  Making the jump from the traditional software development paradigm to the agile software development paradigm is similarly easier if you have the higher-level communication skills which are needed in both environments.  The point is that your employer will still want you to add value to a project team while you're going through the learning curve associated with the transition, and the way you do that is by applying the higher-levels skills which you've gained over the years.

I believe that all IT professionals should strive to become a generalizing specialist, someone with one or more technical specialties who actively seeks to gain new skills in both their existing specialties as well as in other areas, including both technical and domain areas.  Hopefully this article provides some insight into how to go about this.  So should Strategies for Effective Training and Education in I.T.

 

Recommended Resources

 

The Object Primer 3rd Edition: Agile Model Driven Development (AMDD) with UML 2   The Object Primer 3rd Edition: Agile Model Driven Development with UML 2 is an important reference book for agile modelers, describing how to develop 35 types of agile models including all 13 UML 2 diagrams.  Furthermore, this book describes the techniques of the Full Lifecycle Object Oriented Testing (FLOOT) methodology to give you the fundamental testing skills which you require to succeed at agile software development.  The book also shows how to move from your agile models to source code (Java examples are provided) as well as how to succeed at implementation techniques such as refactoring and test-driven development (TDD).  The Object Primer also includes a chapter overviewing the critical database development techniques (database refactoring, object/relational mapping, legacy analysis, and database access coding) from my award-winning Agile Database Techniques book. 

 

Let Me Help

I actively work with clients around the world to improve their information technology (IT) practices as both a mentor/coach and trainer.  A full description of what I do, and how to contact me, can be found here


Copyright © 2005-2009 Scott W. Ambler


Agile Data (AD)  |  Agile Modeling (AM)  |  Agile Unified Process (AUP)  |  Enterprise Unified Process (EUP)  

Follow Scott W. Ambler on Twitter