Richard has over 14 years experience in the IT industry in training delivery, software development and service management. Based in Manchester, he is responsible for developing and delivering training courses for future IT consultants on the graduate programme for FDM Group.
Choosing a language or technology stack to specialise in is often at the front of peoples’ minds when planning a career in software development. Common questions are: “should I choose Java over C#?” “What about Python, Ruby or maybe even Google Go?”
Of course developing skills with any of these languages may well get you a role with an employer but how will you pick the “best” one for a long and fruitful career? What if the technology falls out of favour or is superceded?
Truthfully, these could well be regarded as the wrong questions to ask when considering your career path. The questions you should really be asking yourself are: “what profession do I want to work in?”. Consider the statement: “Joe is a Java Developer.” This is a common way of describing people in the IT world. Tagging them with a technology stack to identify what they do. It’s simple, short and to the point and quite strange when you think about it for a moment...
To see why it might seem strange let’s consider a different statement: “Joanne is a 5cm pipe plumber”. When we apply the same style of statement to a different profession it sounds wrong. We’d most likely refer to Joanne as “a plumber” and not “a 5cm pipe plumber”. It’s reasonable to assume that Joanne can actually be just as good a plumber with a range of pipe sizes, so we don’t label her with a particular “implementation” of pipe.
Let’s return to Joe and rephrase that initial statement as “Joe is a developer who knows Java”. It suddenly becomes more obvious that the primary skill is “developer” and Java is simply a knowledge domain, perhaps one of several that Joe has. Suddenly Joe sounds much more flexible in his role and his employers recognise he can contribute across a wider range of activities.
I’ll admit that switching between language styles (procedural programming to functional programming for example) can be a leap but I think it’s reasonable to say that if you can write code in one procedural language you can write it in another. And once you have the concepts of object oriented programming clear in your mind, using Java or C# for example should be a question of business need, not the fact that you “only know one or the other”.
In the jobs market, it’s always been important for employees to market themselves based on what skills are transferable and everybody understands the concept of transferable “soft skills”. Nobody says “I’m a great team player but only in teams consisting of exactly 4 people” for example.
As the IT industry matures (it’s only been around for about 60 years) Iee might well see a move in IT to better describe those skills that whilst sounding technical, are also easily transferable into other technical domains.
Of course the language(s) you are most familiar with will still be important but employers will above all be looking for a flexible workforce. You may be an awesome Microsoft C# programmer, but if your employer needs some Unix scripting in a hurry they might well reasonably expect you to get stuck in and get the job done. It’s essentially just procedural programming when all is said and done and just a question of learning the syntax.
So maybe it’s time to get away from “<language> developer” job labels and start talking about “programmer” as just another transferable “soft skill”...