Banking

10 skills developers will need in the next five years

If you're a developer looking to get ahead in your field (or in some cases, to simply stay employed), this is not a good time to be complacent. Justin James lists the skills you'll want to work on now to maximize your future job prospects.

If you're a developer looking to get ahead in your field (or in some cases, to simply stay employed), this is not a good time to be complacent. Justin James lists the skills you'll want to work on now to maximize your future job prospects.


With the recent changes in the economy, a lot of developers are focused on their short-term job prospects. At the same time, it's important to make sure that you get the most bang for your buck when it comes to taking the time and energy to learn new skills. Here is our list of 10 skills you should be learning right now to make sure that your resume is relevant for the next five years. The list is hardly exhaustive, and there are huge swaths of the industry it won't cover (mainframe developers, for example). Nonetheless, for average mainstream development, you can't go wrong learning at least seven of these skills -- not only to the point where you can talk convincingly about them at a job interview, but actually use them on the job.

Note: This article is also available as a PDF download.

1: One of the "Big Three" (.NET, Java, PHP)

Unless there is a radical shift in the development world (akin to an asteroid hitting Redmond), most developers will need to know at least one of the Big Three development systems -- .NET (VB.NET or C#), Java, or PHP -- for the near future. It's not enough to know the core languages, either. As projects encompass more and more disparate functionality, you'll need to know the associated frameworks and libraries more deeply.

2: Rich Internet Applications (RIAs)

Love it or hate it, in the last few years, Flash is suddenly being used for more than just animations of politicians singing goofy songs. Flash has also sprouted additional functionality in the form or Flex and AIR. Flash's competitors, such as JavaFx and Silverlight, are also upping the ante on features and performance. To make things even more complicated, HTML 5 is incorporating all sorts of RIA functionality, including database connectivity, and putting the formal W3C stamp on AJAX. In the near future, being an RIA pro will be a key resume differentiator.

3: Web development

Web development is not going away anytime soon. Many developers have been content to lay back and ignore the Web or to just stick to "the basics" their framework provides them with. But companies have been demanding more and more who really know how to work with the underlying technology at a "hand code" level. So bone up on JavaScript, CSS, and HTML to succeed over the next five years.

4: Web services

REST or SOAP? JSON or XML? While the choices and the answers depend on the project, it's getting increasingly difficult to be a developer (even one not writing Web applications) without consuming or creating a Web service. Even areas that used to be ODBC, COM, or RPC domains are now being transitioned to Web services of some variety. Developers who can't work with Web services will find themselves relegated to legacy and maintenance roles.

5: Soft skills

One trend that has been going for quite some time is the increasing visibility of IT within and outside the enterprise. Developers are being brought into more and more non-development meetings and processes to provide feedback. For example, the CFO can't change the accounting rules without working with IT to update the systems. And an operations manager can't change a call center process without IT updating the CRM workflow. Likewise, customers often need to work directly with the development teams to make sure that their needs are met. Will every developer need to go to Toastmasters or study How to Win Friends and Influence People? No. But the developers who do will be much more valuable to their employers -- and highly sought after in the job market.

6: One dynamic and/or functional programming language

Languages like Ruby, Python, F#, and Groovy still aren't quite mainstream --  but the ideas in them are. For example, the LINQ system in Microsoft's .NET is a direct descendent of functional programming techniques. Both Ruby and Python are becoming hot in some sectors, thanks to the Rails framework and Silverlight, respectively. Learning one of these languages won't just improve your resume, though; it will expand your horizons. Every top-flight developer I've met recommends learning at least one dynamic or functional programming language to learn new ways of thinking, and from personal experience, I can tell you that it works.

7: Agile methodologies

When Agile first hit mainstream awareness, I was a skeptic, along with many other folks I know. It seemed to be some sort of knee-jerk reaction to tradition, throwing away the controls and standards in favor of anarchy. But as time went on, the ideas behind Agile became both better defined and better expressed. Many shops are either adopting Agile or running proof-of-concept experiments with Agile. While Agile is not the ultimate panacea for project failure, it does indeed have a place on many projects. Developers with a proven track record of understanding and succeeding in Agile environments will be in increasingly high demand over the next few years.

8: Domain knowledge

Hand-in-hand with Agile methodologies, development teams are increasingly being viewed as partners in the definition of projects. This means that developers who understand the problem domain are able to contribute to the project in a highly visible, valuable way. With Agile, a developer who can say, "From here, we can also add this functionality fairly easily, and it will get us a lot of value," or "Gee, that requirement really doesn't match the usage patterns our logs show" will excel. As much as many developers resist the idea of having to know anything about the problem domain at all, it is undeniable that increasing numbers of organizations prefer (if not require) developers to at least understand the basics.

9: Development "hygiene"

A few years ago, many (if not most) shops did not have access to bug tracking systems, version control, and other such tools; it was just the developers and their IDE of choice. But thanks to the development of new, integrated stacks, like the Microsoft Visual Studio Team System, and the explosion in availability of high quality, open source environments, organizations without these tools are becoming much less common. Developers must know more than just how to check code in and out of source control or how to use the VM system to build test environments. They need to have a rigorous habit of hygiene in place to make sure that they are properly coordinating with their teams. "Code cowboys" who store everything on a personal USB drive, don't document which changes correspond to which task item, and so on, are unwelcome in more traditional shops and even more unwelcome in Agile environments, which rely on a tight coordination between team members to operate.

10: Mobile development

The late 1990s saw Web development rise to mainstream acceptance and then begin to marginalize traditional desktop applications in many areas. In 2008, mobile development left the launch pad, and over the next five years, it will become increasingly important. There are, of course, different approaches to mobile development: Web applications designed to work on mobile devices, RIAs aimed at that market, and applications that run directly on the devices. Regardless of which of these paths you choose, adding mobile development to your skill set will ensure that you are in demand for the future.


Finally: 10 Things... the newsletter!

Get the key facts on a wide range of technologies, techniques, strategies, and skills with the help of the concise need-to-know lists featured in TechRepublic's 10 Things newsletter, delivered every Friday. Automatically sign up today.

About

Justin James is the Lead Architect for Conigent.

73 comments
jkameleon
jkameleon

That's all you'll ever need.

darktech
darktech

Why is it that revision control is never mentioned? Is it because most freelance developers don't do it? In any project reversion control is essential, but I've never seen anyone who calls themselves a developer talk about which systems they use or what work-flows they put in place. If there is one skill that deserves to be on this list it is this "Learn to maintain a source repository and keep track of code changes". This applies to ALL projects, from simple websites to major enterprise software suites; commercial or open-source; in any language .NET, Java, PHP (not that I consider these the important languages), C/C++, Ruby Python, you name it. Even COBOL. In fact, especially COBOL.

parisa.afshin
parisa.afshin

thanks for sharing that list, i am interested in building a mobile web application for http://aznoe.com but i have no idea on how i would start, does anyone know?

kevinconolly
kevinconolly

I'm surprised and disappointed that security is not on the list.

malcolm davis
malcolm davis

The experienced engineer seems indecisive. Whenever asked a question, the engineer simply replays with 'it depends'. What is the web site developer trying to accomplish? If it's a static content site, maybe Cocoon is the answer. Is it's a portal site, maybe Jetspeed. Perhaps Struts if the site requires dynamic web forms. Does the customer allow open source? Has the customer already invested in a specific technology? Who are the other developers on the team? What is the time frame of the project? Knowing the basics of solid development far outweighs which package/technology/tool used. Tools & technology change, concepts and practices just adapt to the changes. Regardless of the profession, doctor, lawyer, or engineer, the focus is on the 'principles' and not the 'tools'. Being a great doctor does not change based on new drugs or procedures. Great doctors work to understand the unique needs of the patient by doing such things as analyzing symptoms, understanding the patient history, and simply listening.

Ed Woychowsky
Ed Woychowsky

With the SEC mandating it for corporations filing, it could be the next Y2K. Eh, make that Y2K-11.

ss
ss

I agree that Web Development, Web Services, RIAs, and Mobile are key skill areas developers should be familiar with to remain relevant. However, I'd argue don't lead to a "Big 3" or "Dynamic Language" requirement as much as they lead to having at least one solid server-side platform you're efficient with and solid client-side skills. I'd suggest JavaScript is a foundational skill here, it's the only language you're almost guaranteed to have to grok a bit to work in a browser. Tying client and server together effectively exposes a skill you left off -- serious security awareness. Building for the web and mobile and not exposing both your customers and company to serious risk means being security-minded at all times.

mason
mason

Thanks for writing this post. I wasn't surprised about the first one, learning one the "Big Three" nor was I surprised about Mobile Development. Especially now that WordPress is a main component to blogs these days, learning PHP is very helpful. As well as learning mobile development for the iPhone and BlackBerry. I'm predicting we'll see a lot more of open-source development in the future.....

joecoolz
joecoolz

Seriously, more buzzwords! That's what makes a Real Developer, right? Rails and agility with a bloated xml webservice please! BARF

Arunn.Ramadoss
Arunn.Ramadoss

I am really surprised that you omit the mainframe developer skills so easily! Especially because there is so much COBOL out there, I doubt all .NET, JAVA and PHP code put together could even get close to the estimated 200 Billion lines of COBOL code in production systems. It is a little misleading to omit such an important language in the "Big Three"!

gots
gots

Coldfusion. Coldfusion covers points 2,3,and 4. It is stable, reliable, and proven. There are several free server implementations. There are tons of free and sophisticated applications at RIAForge. Check out SAVA CMS if you don't know what CF can do for you.

WTRTHS
WTRTHS

I don't know, but does PHP really fall into this category? It doesn't seem to have the framework support Java or .NET has, and also not too many "professional" IDEs.

advo
advo

Fools Day :)

bugmenot
bugmenot

What a bullshit list is this.

Tony Hopkinson
Tony Hopkinson

consider it a skill. Freelance developers use whatever tools the client uses on site. If it's on their personal systems they use what ever they are comfortable with. I've seen places do full on, need to get approval to checkin from 31 independant witnesses, to the the Huh, you feel is the norm. It doesn't matter what you use as long as it works. It's a tool not a skill.

Justin James
Justin James

Interesting comments, but I have to disagree. since I've been around this industry, I've been hearing the "no coding in 5-10 years" mantra. I'm still coding. I remember when all of these BI tools were going to let business analysts drag 'n drop their way to reporting bliss. Most companies with these things need hordes of highly paid and expensively trained BI specialists to rig it all up so it properly talks to the operational databases. Look at the evolution of development. There is a cycle for any given piece of application functionality that people want their apps to have: 1. Some pioneers figure out a new feature or way of doing things. They code it by hand using little to no tools, because they don't exist yet. 2. The idea catches on. Others copy/paste the innovators' code and make modifications. 3. Someone puts together some basic libraries or frameworks or toolkits or whatever to work with the new feature. 4. IDEs and other development environments bake in tools to take 90% of the drudgery out of doing this work. The cycle takes 5 - 10 years MINIMUM to complete. AJAX is between step 3 and 4 right now; not bad for an idea which was at step 1 around 2001, 2002! Data binding, despite looking like it was at step 3 about 8 - 10 years ago, is constantly stuck taking a step back then a step forwards, because each time it looks "done", someone decides that it needs another layer of abstraction. Remember when you wired up WinForms direct to the DB in .Net? Now, it goes DB->Entity Framework->LINQ->WinForms. What a mess! And just because something is declaritive doesn't meant that it is painless to use or that any fool can do it well. HTML is a declaritive syntax. 'Nuff said. J.Ja

Justin James
Justin James

Security (as well as a few other things) was left off of the list because, while it is insanely important, employers don't seem to care so much about it. I wouldn't mind doing a follow up to this, maybe "10 skills developers should have to get to the next level" (or something along those lines, with a shorter title, of course). If I did such an article, security would be on that list, for sure. But this list focused on what will get you a job or keep you in a job, and security just doesn't make the cut, sad to say. :( J.Ja

jeno.mozes
jeno.mozes

Languages, packages, software are trends. To an experienced developer these are tools and its not a skill. Skill is the ability to deliver to specification, on time and budget.

Larry.Johnson25
Larry.Johnson25

I did a very interesting project in 2004 to upgrade an app from XBRL v1 to v2. I learned a lot and found it interesting. But by itself, I think it's too narrow of a skill for "all developers" to learn. Certainly for financial apps, especially where compliance is an issue, it's a good skill. But there are several standardized derivatives of XML. Who's to say which is "the one?" Maybe it would be better to understand the overall architecture of a few, so that knowledge could be applied more generally. (?)

Tony Hopkinson
Tony Hopkinson

If you can't program in several langauages and several types of language, you are not that good. However JJs article was more of a how to make yourself acceptable in the market place as anything, and HR types put a real emphasis on choice of tool.....

GoodOh
GoodOh

So what does make a 'real developer' then? How about something constructive instead of just throwing mud?

doublepow
doublepow

Your "Real Developer" probably codes out of a cardboard box. Welcome to the "Real World".

Justin James
Justin James

I considered putting it in there. Why I skipped it, is because it is something which is only used in certain industries, amongst companies of a certain size. Every company out there has work for a .Net, J2EE, or PHP developer, even COBOL shops (someone's gotta write the Web site or the in-house something-or-other). But COBOL's reach is a bit limited. That being said, I think that someone who learns COBOL today, gets a job at a bank or an insurance comapny, really learns their systems, and is happy to be working on the same giant application for a long time will have a great, stable, steady job that they can be quite happy with. Especially since many of the current COBOL programmers are retiring and it becomes more and more difficult to replace them, young people who learn it today are in for a smooth future. J.Ja

radamesort
radamesort

The three languages mentioned are used on web technologies, which are the present and future. COBOL and mainframes are the past.

csmith.kaze
csmith.kaze

you can do some high level stuff with php. It is built very much like Java and even c. I do know a few people that run php as a true programming language, but it is usually for their personal machines, not for a business. On the topic of Professional IDE's, notepad++(windows) and nano(GNU/Linux) are my IDE's for all my programming (as of right now) :)

kevadooch
kevadooch

To a certain extent I think PHP does fall into this category. We're not talking about developing control systems for a nuclear power stations here as the rest of the items on the list lend themselves to Web based development. In this regard PHP is right up there if not top of the pile. Yes, PHP has its faults (loosely typed for one) but it does the job well when in the right hands. There are a number of frameworks like Cake PHP, Yii and even the Zend Framework. Again, its horses for courses. If you're developing the public facing interface for a banking system I doubt you'd use PHP but for many other applications PHP is perfect. As for a lack of professional IDEs the best for PHP by far is PHPEd. It has code completion, real time debugging and code profiling, SOAP wizards the lot. Realistically .NET has one IDE: the fantastic Visual Studio. I use both C#.Net and PHP interchangably depending on the project. It doesn't matter which language/framework a dev knows as long as they know it in depth and can use it effectively.

chris
chris

I don't think they don't care about security, but I think they assume it. That is to say, I think they assume that whoever is doing the network or database or web app is "doing security" by default. maybe I'm missing it, but when working with various clients on things I find that what they assume to be quite interesting.

chris
chris

The problem being when trying to get a corp job and they just have a list of skills. when working for self, you can talk to client, assess the need and give the solution. That probably wont get you to the interview stage because it might not meet the criteria of the hr person's resume' filter :-(

GoodOh
GoodOh

Before you can make an impact with an employer you have to get them to give you a job. Once you are through the elimination process of having enough of JJ's list to be considered further then extra skills and depth start going on the table but without some of the foundations JJ suggests the door is going to stay closed in your face in a lot of places. Once HR agrees for you to be interviewed by fellow tech heads having the deep knowledge you suggest may bear fruit. But if the field is weak you'll get a job just on the possessing the basics while someone without the basics but a better technologist will not even get to the interview. It may not be sensible but I think we all know it's more true than not.

GoodOh
GoodOh

If you think there is no work going on in mainframes right now and continuing as far into the future as one can see in IT you are dead wrong. Are they cool and exciting and all that jazz? No. But for as long as the NSA runs M204 the security of the USA relies on tech developed before the first line of C was ever written. If you think that the NSA couldn't make a case for as many billions as required to move to a new infrastructure if they wanted to do it you are fooling yourself. They stay with mainframes because they still do stuff no collection of PCs can do. There are still huge aspects of the info tech of this planet that are run on mainframe technology and it needs people to work on it. Will you get your face on the front of Wired or IPO out for a cool million? No. But you may have a secure job for a decade or decades so it's going to be the future (or part of the future) for more than a few IT grads every year for as far as we can see into the future. Not to discount everything else happening but just to remember, all things in moderation.

Tony Hopkinson
Tony Hopkinson

Mainframes can and still do some things much much better than any combination of PCs. They will be about 'for ever'. Needing Cobol as a skill over the next five years isn't true. It would be more true to say that those businesses dependent on that environment are going to need to attract and groom new developers. Simply because that is cheaper than a replacement, I think they are going to have to go down the apprentice/sponsorship route though. Saying that if you pick up cobol and mainframes, you will get a job and a good salary and be valued. I've a few mates who do it, money and perks are not to be sniffed at, I assure you.

Justin James
Justin James

Persoanlly, I am not a fan of PHP. I would have preferred it if Perl simply had a good templeting engine like the PHP system, and now that I am learning Ruby, I like it much better. At the same time, I can't deny that a huge amount of work gets done in PHP, and even if everyone stopped using it tomorrow, people would be maintaining PHP apps for a long, long time. J.Ja

csmith.kaze
csmith.kaze

...at the very least. I agree with the general gist of the article, but flash is a no go for alot more people than he gave credit. Hell, I know alot of people that run adblockplus just so they can dynamically disable flash (and ads, of course, which are generally flash based) Since I am a web developer more than traditional programmer, I think he should have also included more knowledge of traditional languages, like C++ and the like. Actually, I am not really sure who he was targeting with this article, because I know something of most (not all) of the technologies he listed. Granted, as I have said, I am a web designer at heart, so this stuff is my bread and butter. I would like to jump into python and like, though.

Tony Hopkinson
Tony Hopkinson

I want to stay the f*** away from them, they must have crap for brains. I've met more managers who thought revision control cost too much than developers who were unaware of it. I mean at it's most basic level we are talking a labelled copy of the code base. You don't have to develop too much for too long before you get the need for that.

darktech
darktech

There's a difference between the point I'm trying to make and that in point 9. My interpretation of point 9 was warning against developers trying to go against the grain of their environments work-flow. My point was more addressing the fact that out of 100 people who I've talked to, who all call themselves developers, more than half didn't even know what revision control is. I'll concede that its a tool rather than a skill, but the awareness still needs to be increased.

Tony Hopkinson
Tony Hopkinson

I never went back and checked if the guy could read. I still wouldn't say it was skill though, now trying to get some of the crappy tools we have to meet the need, that can require some knowse. You ever work somewhere where after swearing by a particular flavour of control, you discover that they don't back up the server, "Because it's a backup for your local copies" .... Err Hello ????

Justin James
Justin James

Yeah, security is definitely assumed by customers/employers, along with "easy to use", "on time", "simple to deploy and maintain", and other items. Should those things be in every app. YES! But between developer capabilities and resources (time, manpower, etc.), things not explicitly in the spec ("assumed by the client") are not done, and thus the all too frequent gap between what was expected and what was delivered... J.Ja

malcolm davis
malcolm davis

HR is a large part of the problem. By using resume filters, HR only finds people that have placed the key words into their document. If HR is filtering for Java, J2EE, UML, Struts, etc.. HR might not know about the people they find, or how to weed out the good people from the 100K resumes that contain the right keywords. For corporate IT to change, HR must change.

Tony Hopkinson
Tony Hopkinson

Let's face it, while those of us who code well, generally enjoy it, the added side effect of putting food on the table is quite important. I've been coding at lead/senior level since 1992, and I still get asked questions like but can you do OO, and are you familiar with the development lifecycle. The clues that you can do the job, need to be current and preferably highlighted 40pt bold underline and italic on the resume.

Luis Colorado
Luis Colorado

PHP was a language designed to make easy the life of web developers. Many things that require special programming or the use of libraries are just there in PHP to be used. On top of that, the bottleneck these days are the band size and the database access (hard drive). Because of that, PHP performs similarly to other languages, because most PHP programs use databases. So, all in all, it is a good language for quick development, and, with some careful coding, it may be close to C# or Java regarding maintainability. However, PHP reminds me BASIC. Sure, it's easy to learn. Sure, you can do almost anything with BASIC. It's just that it makes too easy to develop horrible code that is hard to understand and maintain. Obviously, anybody can write horrible code in Java or C#, but the whole design and ethos of those languages is oriented to make encapsulation, OOP, etc., easier, and not more difficult to write.

chris
chris

is that everyone does everything the same way....like, well....microsoft. You don't need to be a programmer if it's all just drag and drop and use our built in objects or else. I think MS has proven that this just leads to overhead issues and well a mess as well. I like PHP because you get to do just and only just what you want. Sure there are lots of people who just don't care and write crap, but that's not PHPs fault unless you are saying that they should not allow certain things. Got a limiter on your car for the speed limit do you :-P I agree that MS is a giant monster and they do lots of good things, but I don't agree that one should just assume they know better in every circumstance.

Justin James
Justin James

PHP rubs me the wrong way on a lot of levels. It's not like I despise PHP or anything like that. I'm more turned off by most of the PHP code I've looked at more than the PHP language itself, and I'm aware of that. Do I have quibbles with it at a technical/syntactic level? Sure. No more or less than I do with VB.Net, C#, Java, Ruby, etc. That's mostly personal preference anyways. My big turn off with PHP is that every time I've looked at the code for an application that was complex or had a lot of functionality, it looked like the developers are consistently forced to pick from some very bad options in order to work around PHP's (probably deliberate, since it is a scripting language) limitations. Things like how to approach customization of messages/text/etc., it lacks a proper resources system. Or instead of giving it a good namespacing/library system, people do these awful directory hierachies. Makes it very difficult to find anything! J.Ja