Before I discuss my 2010 predictions, it’s important to provide a disclaimer using my 2009 predictions. One of my predictions was spot on. At the end of this post, I said:
“Of course, I’m probably wrong about many of these.”
That one was right. The other four, less so. Cloud Computing has not achieved the market share I would have thought it would by now. I’m going to call that one “delayed” not “wrong”. I still think Cloud Computing will be important, it is just taking longer. Rich Internet Applications was just plain wrong. While I think (almost) every application will make use of the internet, and people want rich applications, the term will lose favor. It won’t have meaning if everything is ‘rich’ and ‘internet’. “Multi-touch goes mainstream”. Not yet. I still think that will happen. The mouse as a metaphor is very long in the tooth. We do crave better ways to interact with our computers. We have it with some special purpose applications. We’ll get there with other apps as well. My final prediction “Social Networking as a business tool”, was much better. In the last year, Detroit and Ann Arbor newspapers stopped printing. I didn’t miss a beat. All those papers have great web sites (http://www.freep.com, http://www.detnews.com, and http://www.annarbor.com). Even more immediate, all those sources, and several of their reporters are on twitter. I get news more quickly following them, and following their links than I did reading the dead tree edition with my morning coffee.
On to 2010 Predictions
Armed with the confidence that I’m probably wrong, I’m ready to divulge my thoughts about 2010.
Polyglot Programming Languages
For the past few years, many industry leaders were saying that developers needed to know multiple languages. They were right, because learning multiple languages (if done correctly) meant that you needed to learn different programming idioms: procedural programming, object oriented programming, functional programming, and so on.
But that’s painful. Why should I need to learn new syntax to use new idioms? Curly braces aren’t allowed in FP? semicolons aren’t permitted in dynamic languages?
Instead, why can’t a general purpose programming language support multiple programming idioms? C#, VB.NET, and C++ are starting to seriously support that. (Other languages may be doing this as well; I don’t know). All these languages have added (or are adding) lambda expressions which support functional programming concepts. (C++ has used Class Type Functors for this purpose for some time). C# is adding support for dynamic typing (as is VB.NET, in a more strict fashion than previously supported). Implicit typing is supported in C#, C++, and VB.NET as well.
This trend will continue as more and more developers want to use the best programming idiom for a particular task without learning a totally different syntax. Any programming language that calls itself a “general purpose language” will support multiple idioms.
Value Placed on Comp. Sci Skills
For the past several years, the conventional wisdom has been that ‘business skills’ are more important than ‘core technical skills’. That trend is changing. While I don’t believe we’ll return to those days where anti-social behavior is tolerated (or worse, celebrated), I do believe that serious technical talent is valued more than it was. Even The Economist has predicted fewer MBA students in the coming year, saying it will “…cut off the supply of bullshit at the source.”
OK, MBAs aren’t that bad. Or, maybe they are. But the fact is that technical talent and skill is important. “Soft Skills” complement hard skills; they aren’t a substitute.
In 2010, more companies will want Comp Sci or Software Engineering grads for their developer positions.
Small, Focused Applications Rule
In an interconnected world, large enterprises are no longer going to tolerate the “One Application to Rule them All” concept. They will start looking for best of breed solutions to each individual problem. The suites that solve everything are going to decrease in value. (or at least customer value). They do everything, but not exactly the way a large enterprise wants. More importantly, they don’t have the integration points needed between these important processes.
Finally, CIOs will be looking to avoid “vendor lock in”, whether that’s a real strategy, or just defensive posturing.
But APIs are the Key Value
Balancing that trend is the fact that too many business processes are stitched together from disparate programs that have no interoperability strategy. Businesses cannot compete if their disparate programs don’t coordinate automatically. It’s too much friction, and no added value. In fact, that’s what drove the trend toward the enterprise suites that claimed to do everything: it was a way to finesse the interoperability requests.
Going forward, the single most important feature for business programs will be data import / export. That must be in a standard format, and it must be a programmable API.IT may or may not be REST, SOAP, or some new made up word. But, I’m confident that any serious product in the business world will have a clear strategy to interoperate with other programs that solve other business problems.
Conclusions
These last two predictions will mean that future systems will built using these concepts:
- Each process is a small, focused applications that solves a single problem.
- The inputs and outputs of that process will be in a standard format.
- Enterprise developers will stitch together different commercial applications are handle *part* of their business processes.
Notice how those last two also fit well with the cloud strategy? Processes in the cloud. You’ll interact with those small processes using a rich UI on whatever screen you have.
Of course, I’m probably wrong again.