Windows 8

10 skills for developers to focus on in 2013

Development trends that began to emerge in 2012 are picking up steam. Here's a look at the must-know technologies for the year ahead.

Editor's note: At the beginning of 2012, Justin James wrote a list of technologies that were gaining momentum in the dev world. Now he revisits that list with an eye toward 2013.

Looking back on this article after nearly a year, I'm struck by how quickly some of these trends have steamrolled. Of course, mobile development was expected to be big. But the growth in tablets, especially in Android tablets, has propelled that market to new heights.

Thanks to mobile devices that receive frequent updates (notably iOS devices) and the short release cycles of Chrome and Firefox, it has been possible for HTML5 to rapidly ascend to the top of the pile in many ways. The Web development world has divided itself into two segments:

  • The enterprise market running Java and .NET on the backend and using SOAP for communications
  • The consumer market using PHP, Ruby, and Python on the backend with lightweight REST Web services

In fact, I am starting to encounter folks dropping the backend server layer away significantly, in favor of a REST API and an HTML5 + JavaScript front end communicating with the API. And thanks to the power of jQuery and similar tools, the Web now easily matches the functionality of the desktop in the UI department -- something that's becoming obvious on more and more Web sites.

Looking ahead to 2013, I really do not think that the items on this list need to change much. Learning Ruby and Python (and NoSQL databases) are not mandatory items for your career, but they can certainly open some doors to alternative career paths. Windows 8 development is not a must-have either, and it remains to be seen whether Windows 8 picks up adoption quickly enough to justify making it a priority. But this list can still serve as a fundamental guide for your 2013 "techs I need to learn" list.

What skills do you need?

Software development had a few years of relative calm. But now the rollercoaster is back on track and it's picking up speed, as HTML5 gains a foothold and Windows 8 threatens to significantly change the Windows development landscape. If you want to stay ahead of the curve, you should consider learning at least a few of these 10 software development skills.

1: Mobile development

If you don't think it is worth your time to learn mobile development, think again. According to a recent Gartner report, Android mobile device sales outstripped PC shipments in the third quarter of 2012. Add in the other big-name mobile devices (iPhones, iPads, and even the "dying" RIM devices), and what you see is that mobile devices now dwarf PCs in sales. What does this mean? If you make your living from software that can run only on a PC (which includes Web sites that don't work or are hard to use on mobile devices), now is the time to learn mobile development.

2: NoSQL

I appreciate a well-designed relational database schema as much as the next person, but they just are not appropriate for every project. We've been using them even when they aren't the best tool because the alternatives haven't been great. The last few years have seen the introduction of a wide variety of NoSQL database systems. And now that major service vendors (like Amazon and Microsoft) support NoSQL as well, there is no technical limitation on their use. Are they right for every project? No. Are they going to replace traditional databases? In some projects, and for some developers, definitely. This is the year to learn how to use them, as they will only become more prevalent in the year to follow.

3: Unit testing

We've seen unit testing go from being, "Oh, that's neat" to being a best practice in the industry. And with the increasing use of dynamic languages, unit testing is becoming more and more important. A wide variety of tools and frameworks are available for unit testing. If you do not know how to do it, now is the time to learn. This is the year where it goes from "resume enhancement" to "resume requirement."

4: Python or Ruby

Not every project is a good fit for a dynamic language, but a lot of projects are better done in them. PHP has been a winner in the industry for some time, but Python and Ruby are now being taken seriously as well. Strong arguments can be made for Ruby + Rails (or Ruby + Sinatra) or Python + Django as excellent platforms for Web development, and Python has long been a favorite for "utility" work. Learning Python or Ruby in addition to your existing skill set gives you a useful alternative and a better way to get certain projects done.

5: HTML5

HTML5 is quickly pulling away from the station. The release of IE 10 made the full power of HTML5 available to most users (those not stuck with IE 6 or IE 8). Learning HTML5 now positions you to be on the forefront of the next generation of applications. Oh, and most mobile devices already have excellent support for it, so it is a great way to get into mobile development too. And don't forget: HTML5 is one route for UI definitions in Windows 8.

6: Windows 8

Windows 8 may be getting off to a slow start, but being the top dog in an app store is often based on being the first dog in the race. The first mover advantage is huge. It is better to be in the Windows Store now than to take a wait-and-see approach. Even if Windows 8 sales disappoint, it's better to be the only fish in a small pond than a fish of any size in a big pond, as recent app sales numbers have shown.

7: RESTful Web services

While I personally prefer the convenience and ease of working with SOAP in the confines of Visual Studio, REST is booming. Even Microsoft is starting to embrace it with OData. JSON really was the final straw on this matter, relegating SOAP to be for server-to-server work only. Unless your applications can run in isolation, not knowing REST is going to hold you back.

8: JavaScript

Before Windows 8, it was easy for non-Web developers to look at JavaScript as a Web-only language. No more! JavaScript is now a first-class citizen for native desktop and tablet development, thanks to the Windows 8 Modern UI and WinRT API. XAML + C# or VB.NET may be a good way for you to get things done. But if you want to maximize what you can get out of your knowledge, HTML5 and JavaScript are the best bet. They give you Web and Modern UI/WinRT, and you can use them for some of the cross-platform mobile systems out there, like Appcelerator's Titanium product.

9: jQuery

If you are going to do any kind of Web development where you are working directly with HTML, jQuery is a must-know skill. While there are plenty of credible alternatives, jQuery is quickly turning into the de facto tool for rich UIs with HTML.

10: User experience

Other than getting that first mover advantage in new app stores, there is little to differentiate many applications on a feature basis; it's a crowded field. User experience, on the other hand, is a different story.

Creating a great user experience is not easy; it starts before anyone even downloads your application and continues through to the uninstall process. In the age of instant $0.99 and free app downloads, and ad-supported Web apps, the barriers to switching to another application are mighty low. If your user experience is poor, do not expect much business.

Additional resources

About

Justin James is the Lead Architect for Conigent.

25 comments
kevin159
kevin159

I am a student right now and I gather all information regarding development because I want to become an expert developer. So I'd like to say thanks for this information which you shared with us.http://www.goodcoresoft.com/

danieljack
danieljack

Being a no 1 spot in 2013, as a Innoppl mobile app developers San Francisco its a great news for me. What about the BigData & Business Intelligence? how's that scope in the year of 2 from now?

egkareem
egkareem

I would place HTML5/JS in the top 3, and would not care much about Windows 8 programming.

greenlinux
greenlinux

Should developer learn native mobile development or web mobile development? Thanks

DevelopIntelligence
DevelopIntelligence

Just about every analyst in every industry is predicting mobile will be huge in 2013 for them in one way or another. As more customers buy mobile devices more businesses will need mobile technology which means developers will mobile skills will be in high demand.

ChadR114
ChadR114

I may be a greenhorn, but I would think that big data would enter into this discussion, and Hadoop would be on this list somewhere. Am I missing some alt name for it?

thundersound
thundersound

While most of the article makes sense, the writing style makes me cringe. "Top dog", "pulling away from the station". Is that some sort of corporate talk? Can we just stick with simple presentation of facts?

peter
peter

I continually recruit and I would say that most of those skills are required now, and have been this year - Engineering practices are a must, and with the likes of MongoDB NoSQL has been around for 2 years on major projects where I work... I would say that if you don't have these skills now, you better hope you have by end of Q1 2013 or else you will stay in that dull programming job.

dguell
dguell

Glad to see Unit Testing on this list. Probably should have been on such a list a few years ago.

swampwiz
swampwiz

i.e., Javascript would be virtually completely subsumed by a well structured API abstraction in the way that MFC (and later .NET) subsumed Win32. It seems that Node.js is incomplete in this regard.

jamonholmgren
jamonholmgren

Node has become very popular in a very short time for REST APIs. It's a good idea to learn Node and Express.js.

dzinn
dzinn

Where do you see VBscript in the mix. Microsoft let it die but Adobe has promoted this tool.

ashepard
ashepard

NoSQL - groups of tables of data without SQL. Used to be called dBase :) Which one to study? My money is on Oracle NoSQL. I know they will be around and a business may like having a big name backing it. List on NoSQL database from WikiPedia ( http://en.wikipedia.org/wiki/NoSQL ) : Eventually?consistent key?value store Apache Cassandra Dynamo Hibari OpenLink Virtuoso Project Voldemort Riak[11] Hierarchical key–value store GT.M[12] InterSystems Caché Hosted services Freebase OpenLink Virtuoso Datastore on Google Appengine Amazon DynamoDB Cloudant Data Layer (CouchDB) Key–value cache in RAM memcached OpenLink Virtuoso Oracle Coherence Redis Hazelcast Tuple space Velocity Key–value stores on solid state or rotating disk ArangoDB BigTable CDB Ceph Couchbase Server Keyspace LevelDB MemcacheDB MongoDB OpenLink Virtuoso Tarantool Tokyo Cabinet Tuple space Oracle NoSQL Database Ordered key–value stores Berkeley DB IBM Informix C-ISAM InfinityDB MemcacheDB NDBM Multivalue databases Northgate Information Solutions Reality, the original Pick/MV Database Extensible Storage Engine (ESE/NT) jBASE OpenQM Revelation Software's OpenInsight Rocket U2 D3 Pick database InterSystems Caché InfinityDB Object database Main article: Object database db4o Eloquera GemStone/S InterSystems Caché JADE NeoDatis ODB ObjectDB Objectivity/DB ObjectStore OpenLink Virtuoso Versant Object Database Wakanda ZODB ]RDF database: Meronymy SPARQL Database Server Tabular Apache Accumulo BigTable Apache Hbase Hypertable Mnesia OpenLink Virtuoso ]Tuple store Apache River OpenLink Virtuoso Tarantool

Darren B - KC
Darren B - KC

It seems a endless chase... we try to learn these things so we can get jobs with good pay, maybe even the best pay, but in order to keep up, you have to spend most of what you earn just to pay for the education to get the next big job! Worst career choice ever.

FarmMom
FarmMom

Just curious where you think SharePoint development is going this coming year, especially with 2013 and Office 365.

thundersound
thundersound

Look for "noSQL" in the paper, it's pretty synonymous with Big Data. As to Hadoop, it does deserve an honorable mentioned.

Tony Hopkinson
Tony Hopkinson

It's not new, just that academia and business went barking mad on sql. Do you want to rephrase "I continually recruit" by the way. I hear something like that, I walk the other way, in fact even been known to break in to a jog...

Free Webapps
Free Webapps

Thanks ashepard. "NoSQL - groups of tables of data without SQL. Used to be called dBase :)" It's funny what a re-hash or simple name change can of something can do.

cbslc
cbslc

For your above mentioned issues. And this is a return to the EAV structures that we gave up on in the 70's! They failed then. The only reason they are alive again is the massive computer power we have now. But they are so inefficient. And so painful to analyze. I know they save programmers time, but the end up costing double the time whtn it comes to analyzing!

cokgoblin
cokgoblin

SRSLY. A developer complaining about having to learn new technologies is akin to complaining that water is wet. Everything you need to learn can be found on the web for free or with premium services for a modest fee. Lynda.com is $25 a month or something like that. Need to learn JavaScript, jQuery, HTML5 or PHP. Head over to W3 schools and dig in. http://www.w3schools.com Want to learn more advanced programming concepts? Go to the Stanford Engineering Everywhere website and take classes from a world class learning institution, http://see.stanford.edu/ There is a saying inscribed on Dood Hall @ FSU that reads: "The half of knowledge, is knowing where to find knowledge". The hard part has already been taken care of you by The Google. SRSLY though, I have not bought a door stop in years,

atoms
atoms

Sorry to hear about your predicament. But not all of us of share your opinion. I didn't get into software development so I could get a job with high pay. I got into it because I love building stuff. New tools are like candy to me, no wait, I don't love candy that much - new tools are like pizza to me - I can't get enough! Bring it on!

thundersound
thundersound

Come on, saying that noSQL is re-hashed dBase is plain silly. The bulk of the ideas that make noSQL what it is now are above and beyond what dBase ever was. Then there are graph databases which are also termed noSQL, in addition to key-value and such.

tkole2002
tkole2002

The allure of the craft aside, it wouldn't bother you if you had to shell out thousands time and again to learn stuff that turned out to be duds? Or in your terms if someone promised you "You'll love this pizza" and time and again it turned out to be microwave rubbish?

atoms
atoms

If you need to shell out thousands to learn new stuff, you might want to re-examine your approach to learning. There is plenty of free information online for learning pretty much any language or technology worth learning. And over time, one can get better at detecting the rubbish before taking a bite.