First it was PCs. Then the Web. Now it’s mobile. Every developer is concerned about which skills will matter in the next wave. Which platform should they bet on to be relevant? All of them, says Shawn Wildermuth.
The last few years seem rife with disruptive technologies: iPhone, Android, iPad, HTML5, and more. Lots more. For some organizations – not to mention the developers and testers who work in them – these disruptive technologies can be scary. You’ve spent months or years working with a particular platform and getting good at it. Now these new technologies come along and require you to learn new things all over again.
It can be frightening... unless, of course, you expected it all along.
Change is Constant
I got into this business to learn. As a kid, I loved to get a new piece of software and see what I could make it do. I eagerly awaited my trusty copy of Compute magazine so I could type in another Basic program to see how the new program worked.
Even today, I see new technologies as challenges. I try my best not to get caught up in Chicken Little thinking. For me, these changes are precisely why we are developers.
Let’s look at an example from the somewhat recent past.
Back in 2000, Microsoft held a little conference called the Professional Developers’ Conference (PDC), where it introduced a tightly held secret: .NET. At the time, developers using Microsoft technologies were largely, though not exclusively, C++ and Visual Basic programmers.
The unveiling of .NET had two predictable reactions from developers: Either you were excited by the new platform or you were terrified of it. Some developers who had invested heavily in their skill sets refused to budge. There was even a petition to get Microsoft to continue investing in Visual Basic instead of Visual Basic.NET.
What is Next?
Even so, the migration to .NET was not a revolution. Windows programmers continued to use Windows; their knowledge of the operating system didn’t become irrelevant.
But the past few years have been particularly full of disruptive technologies. Some people in our industry want to figure out where to place their bets. The problem is that disruptive technologies are just that: disruptive. If you could plan for them, they wouldn’t be disruptive. So what should you do? Nothing.
You can’t plan for disruption, but you can prepare for it. Preparation for an organization means having a wide variety of personalities and skills so that when disruption happens, you have the people to adapt. So when disruption occurs, what do you really need to learn?
The reality is that development hasn’t changed much in the 25 years I’ve been here. I’ve changed languages quite often and the venerable ‘if’ and ‘while’ statements are still here. So learning a new language is not that difficult. Each language has its peculiarities, but they have more in common than they have in contrast.
What has changed are the platforms. Organizations used to be able to pick a platform and ride that wave for years to come. Even if the platform moved a little, most of the shared knowledge was the same. For example, shifting focus from Windows Forms to ASP.NET required effort, but the .NET Framework and languages were still the same. This is what is changing.
It used to be that you could build a product and be content as to where it lived. It could be a desktop application or a web property or perhaps a mobile application. But those distinctions are becoming blurry. Today if you are building for the masses (not necessarily for the enterprise) you have to make it accessible everywhere. This means that building a typical customer reaching service means building a number of things:
- A great website
- A great web API
- Great mobile applications
- A great tablet application
You might already be grumbling that I didn’t mention bridging technologies like MonoTouch, MonoDroid, or PhoneGap. These work well, but of course as I mentioned earlier, the real learning curve is the platform (e.g. iOS, Android, and Windows Phone) as well as how to create great applications (e.g. touch versus mouse) that do what the user wants (all the design and testing skills you already know). These intermediate tools help, but they don’t prevent you from having to learn a platform; they just skip having to learn a new language.
What to Do?
The real power is to give up any notion that you can brace yourself for change. If you are in a culture that can adapt, that is the key. In other words, accept that change is going to happen and that your developers get to learn new stuff all the time. For most organizations, having a staff of developers with specific skills shouldn’t be as important as having bright, eager programmers. These are the people who can adapt to new environment (or even see it coming). The technologies you do bet on aren’t going away, but realizing that the new platform is a bunch of platforms aids you in adapting. Adaptation is the key to the survival of any organization.
Sure, you could stick with FORTRAN, RPG, or COBOL but that leaves an organization mired in their technology instead of doing what organizations do well: empowering business.