Every once in a while I stop to take a look at where technology has come from and where it is going. This time my musings took me back to the late 90’s and what it was like to hard wire all my HTML into Servlets, WOW what a great idea that was! Right? We look back and laugh now at what we did just as we will in ten years at what we do now.
Remember how JSPs were the greatest thing since sliced bread? Then a massive spike of activity came because everyone wanted to convert their system to use EJBs. Then arose the era of Struts! Life was a bed of roses; there was no way web development could get any better. Then a flurry of frameworks and standards arose to make our collective lives much easier: Spring, Hibernate, Java Server Faces, JMS, script.aculo.us, Rails, and the list could go on and on.
While thinking about all of the tools that I have used through the years to make the latest and greatest sites, I realized just how much work it is to keep up on the power curve of programming. There are so many little cogs in the web machine that you need to know to be proficient, it is actually a bit daunting. As long as you are keeping up with the emerging technologies you are fine, but woe unto you if you aren’t.
In a recent chat with a buddy, I realized that there is actually a half-life to programming skills. The time of these half-lives seem to keep in the tradition of Moore’s Law if not even a little faster, about an eighteen month span. After five half lives have past your skills are pretty much worthless.

What does this mean for programmers? If you are not updating your skills constantly, you will become obsolete very quickly. What type of technology stack were you using seven years ago? If you were like me, it was a couple servlets for an entire site that used a proprietary template system. Definitely not a “modern” approach to web programming.Here at JavaRant.com, I am going to be adding tutorials and challenges to help you stay on the power curve of technology. I would love to hear any questions or suggestions that you have for topics. In February, I will also be adding a podcast, so send in your suggestions to comments@javarant.com or leave a voice comment at 206-350-8705 (it may even get played on the podcast).
I will leave you with one final thought to stress the importance of honing your skills, if you aren’t riding the wave, you’ll find yourself under it.





I agree that there is definitely a half-life to knowledge, but I don’t think that it is eighteen months. If that were the case, then you would be using virtually none of the knowledge that you gained 8 years ago. Yet you still use your HTML skills, you still use Java, you still use servlets and xml and sql and jdbc and I could go on and on. I expect that the half life of knowledge is closer to 4 years - and then, only if you are constantly being exposed to emerging technologies - such as if you move from job to job frequently, or you are either in an organization that keeps up with technology.
But in reality, very few companies can afford to adopt each technology as it comes out. What really happens is that most organizations adopt a technology and stick with it for 7 to 10 years, then re-evaluate. During those years, there’s not a lot of revolutionary new skills coming in, just refinement and minor updates to the old ones. Then after about 10 years, the organization plays catch-up to current standards — perhaps– and the cycle repeats. Only when the company changes its technology is the learning curve really encountered.
None of this is to discount your main point, which is to evolve or become extinct. I have seen dozens and dozens of people who don’t keep their edge, and when the time comes that technology does change on them, they have forgotten how to learn new skills. The ability to learn new skills is a skill in and of itself, that ability must be practiced continually or you forget how to do it when your livelihood depends on it.
I certainly agree with both of these perspectives (18 mos & 4 yrs). Having experienced skill attrition personally (in this decade), I believe the rate depends on the area of the software industry, and this tends to follow language preference lines. We all know you use the right tool for the job. Some tools wear out faster than others. Take assembly, that’s a tool that’s not widely used but is never going away. Incidentally, if you’re familiar with Assembly, it still means you have to learn a new instruction set whenever you change architectures. New architectures are appearing historically at the predicted rate of Moore’s law (just visit Intel.com). When it comes to process automation and other real-time systems, C/C++ is probably your tool of choice. Yet, there is not much revolutionary advancement in this area - again, the language is adapted to an evolving underlying hardware platform, except you don’t have to learn a new instruction set - the hardware is the evolutionary force here.
Admittedly, these problem domains have seen an influx of new tools and a variety of IDEs to simplify the solution development process (bringing the more complex problems into reach). In large part, however, most of these are still operating under a waterfall lifecycle and I suspect only a few have gone the way of XP style practices.
Here I’m jumping paradigms: tool over problem domain. Scripting languages have made leaps in the last 5 years - Python, Perl, JavaScript, introduction of Groovy, Rails, and Ruby. These languages have seen a broader array of problem domains than traditionally exposed to. Groovy and Ruby have changed the implementation tactics of delivering dynamic content over the web. As a consequence, AJAX (Web 2.0) has arrived on the scene.
For the heavy lifters, today being Java and .NET, the web environment has seen a spike in the development of frameworks, most of which are open source. Frameworks have introduced gravitational changes in the web development industry - fostering an integration development process over unit by unit development process. Here XP and Agile methodologies fit best, and the new (or re-labeled) methods of tomorrow are evolving with this industry.
It is the web development arena that we see the most rapid evolution. Internet-borne solutions are the target today for much of the innovation. Just now, we’re beginning to see the other industries ramp up their pace: bio-engineering, real-time/embedded systems, aeronautical engineering, etc. It appears that commerce has been leading this pack - the drive to bring marketable services to the user at home.
So I think it depends on the industry your in. But I know (and agree) that if you lag the web sphere for long - you better be able to sprint if you ever want to get back in the game. There’s one other point worth mentioning: even in the web sphere, there’s degrees of hotness, any of which will enable you to move forward on the leading edge of the wave.