|
Malcolm Gladwell's new book, “Outliers: The Story of Success”, tells us that it takes 10,000 hours of practice to master a skill. That's a long time. Canada Revenue Agency considers 1,920 hours to be the average work-year. Therefore, it would take just over five years to chalk up the requisite 10,000 hours. Considering that most technologies have a short lifecycles, one has to wonder if anyone can ever get 10,000 of quality time with any technology before it became obsolete. In Information Technology, it has been said that technical knowledge has a half-life of 18 months. This means that if you graduate university with 100% knowledge of a technical subject, only half of what you know will be useful in 18 months. You'll be down to a quarter by the third year and one eighth by the time you hit year 5. Technology keep changing at a breakneck pace and IT professionals have to accept life-long on-the-job learning if they are to be successful. Or, so you'd think. Given the above, it's virtually impossible to get 10,000 hours of experience with any technology because it changes within 18-24 months. There is always some new release or paradigm shift towards some new technology. This means it's virtually impossible to become an expert in any technology. When I wrote my first program, a prime number generator, it took about two dozen instructions in Fortran II. Fortran II was a fairly simple language. It didn't have a lot of features, but it did what I needed it to do. Let's fast forward to today's Visual Basic language as a comparable language with similar language constructs. It now takes about three dozen instructions to accomplish the same task. The code is a lot more cryptic. There are so many options available to the programmer that you need a on-line guide handy just to get the syntax correct. Back in the 1960s, I don't recall anyone having to keep Fortran Programming manual handy beside their keypunches. I don't know about you, but I can't live without MSDN, and I cut and paste from the programming samples. What happened? I thought things were supposed to get easier? Somehow, things have become more complex. The problem with any technology is that we keep improving it. While that's usually a good thing, it tends to introduce an ever increasing level of complexity and it has been happening for at least 10,000 years. At the end of World War II, piston engines used in aircraft were at the zenith of efficiency. The problem was that the engines were so complex that they broke down more often and required increasing levels of maintenance. Towards the end of the war, the jet engine made its debut. There were much less complex machines with fewer than a dozen moving parts. Instead of moving back and forth, and most of the parts spun around. That made the whole system less suceptable to fatigue because the parts were subject to less stress than the typical collection of reciprocating parts found in piston engines. Simple was better, to be sure, but it didn't last long. Within 45 years, jet engines were no longer the simple contraptions they were in 1945. Instead of a few moving parts, they now had nearly 25,000 moving parts. Admittedly the first jet engines lacked the power required by modern standards, but at least they were simple and reliable. Today's jet engines suffer from over-complexity and some small part eventually breaks leading to catastrophic failure. The weak-link is the humans charged with the responsibility to maintain these fantastically complex machines. If history teaches us anything, the solution always lies with a newer technology. With jet engines, the answer is not evident, but it may be soon. With software, the answer is not as encouraging. Systems are becoming increasingly complex and there's no new technology on the horizon that promises to make things simpler and more understandable. 5GL was a bust and 4GLs are not widely adopted. The programming community is firmly rooted in low level programming languages such as C# and C++. What does this mean for us? A solution will avail itself sometime in the future - hopefully in the near future. Until that happens, expect to see more buggy software - not less. Programming frameworks are becoming overly complex. Expect to see more cyber-threats like viruses and worms because few people understand the vulnerabilities of their systems. |