2011 is here! While I don't like to make predictions per se, I do like to explore what topics I think may be important to developers for the next twelve months. Let's jump right into my look ahead for 2011.
2010 was the year that Silverlight (and with it, WPF for apps that need access to local resources) gained real momentum. The more I play with Silverlight, the less it frustrates me, though lots of aspects of the technology still rub me the wrong way. In my opinion, the "patterns and practices" people pollute Silverlight's ecosystem; they waste a lot of time and effort on a million frameworks to do things that address a couple of stylistic and academic concerns at the expense of increased complexity, indirectness of code, and significantly raising barriers to entry.
Fortunately, I learned that you don't need to do things the way these folks push. In fact, the default, out of the box Silverlight development experience is very similar to WinForms (for better or for worse), and the learning curve is not nearly as bad as it appears when you first survey the landscape. This is particularly good news because, in 2011, enough development is moving to Silverlight and WPF that folks who don't have the time and energy to learn new development paradigms will be moving to it.
Windows Phone 7
In my TechRepublic columns about Windows Phone 7 development, I note that the experience hasn't always been pleasant. While aspects of Windows Phone 7 development still frustrate me, it is a much better experience than its competition in terms of writing applications.
I don't know if Windows Phone 7 will be a big hit, but if it's a success, it will be a late bloomer like Android. Remember, Android was anemic until the Droid 1 was released just over a year ago, and now it's a big hit. That said, I think that Android is the odd man out right now. The development experience is tough because of the fragmentation. You never know what resolutions to expect, for example, or baseline phone functionality. Even on a particular model, you can't expect a particular version of Android. With iPhone, BlackBerry, and Windows Phone 7, you do.
RIM has lost an incredible amount of momentum, and none of its recent attempts at regaining it have looked promising. Palm's WebOS is on ice until HP figures out what it wants to do with it. Symbian has huge worldwide success except for the United States. iPhone continues to move crazy unit numbers. If Windows Phone 7 becomes a hit, it will be at the expense of RIM and Android. I think Android has enough problems, and Windows Phone 7 has both enough potential to pull it off. Windows Phone 7 is already quite good in ways that Android isn't, both to developers and users. If I were an Android developer, I would be watching Windows Phone 7 to see where it goes.
Mainstream development alternatives
The more I see of Java and .NET, the less I am happy with them. Java and .NET work really well for some things; however, both have a lot of problems, not the least of which is the ecosystems. The Java ecosystem isn't sure if it wants to be some open source haven or the next COBOL. The .NET folks are going insane replicating development patterns that were pioneered 30 years ago, but instead of studying the literature and figuring out how to do it right, they get hung up in replicating what was done ages ago, including the workarounds that were needed due to technical limitations at the time. Meanwhile, neither ecosystem is doing much of anything to deliver products that allow typical developers to produce better applications quicker with fewer bugs and security problems.
Frameworks that enable developers to use the latest pattern fads cover up the fundamental problems with both platforms, which is the amount of complexity in the typical application is overwhelming. I hope that the alternatives to these mainstream development platforms get more traction in the future. I haven't talked to anyone who left Java or .NET and was eager to go back, particularly around Web development. If you think there has to be a better way to get apps out the door, 2011 is a great year to check out your choices!
Web development maturity
In the last decade, Web development has really taken off, and there has been a ton of innovation in the space. Going forward, we are going to see a lot more maturity in the market. For better or for worse, HTML5 continues its progress toward being a universal standard for building Web applications. Web browsers are following suit, and even Internet Explorer is trying hard to comply with the HTML5 standard. This means that developers can spend more time getting stuff done and less time figuring out one-off workarounds and clever hacks for problems that shouldn't even exist.
In 2010, the economy picked up steam for tech workers, but the momentum seems to be more for specialists than generalists. "Plain vanilla" developers are watching their wages remain steady, and entry-level developers are in tough competition with more experienced overseas workers within the same salary range. It seems like not many companies want to make a long-term investment in less-experienced developers who show promise, and even fewer want to put anything into their existing staff.
The trend of hiring to fill knowledge gaps instead of training will only increase. The really bright spots are for people with in-demand, specialized skills, such as Silverlight and mobile developers. It looks like Ruby and Rails will also have more demand as time goes on.
I also think this is a great opportunity for independent consultants. Companies have learned to be choosy enough about projects that their overall need for workers may stay the same in terms of total developers needed, but they are much more likely to need certain skill sets for limited periods of time.
What development topics will you follow in 2011? Let us know in the discussion.
J.JaDisclosure of Justin's industry affiliations: Justin James has a contract with Spiceworks to write product buying guides; he has a contract with OpenAmplify, which is owned by Hapax, to write a series of blogs, tutorials, and articles; and he has a contract with OutSystems to write articles, sample code, etc.
Justin James is the Lead Architect for Conigent.