3 Trends in Software Developer Roles – And One to Avoid!

 

Three roles have been evolving in software development over past few years.

1. Devigner
The devigner is a person who packs a pretty punch. She is a graphic designer, UI designer, UX developer, server developer and database developer all rolled into one.

In reality, its fate should have been obvious from the beginning. The devigner role has almost vanished. People discovered the obvious: you cannot produce devigners. They are rare and they are almost born that way. You may have a few hundred all over the world, but generally speaking it is a rare species.

For developers to “learn” design is the same as learning to paint by reading a book. And for designers to learn hardcore back-end software development – possible but rare.

Design and development are both specialized skills, and best left alone. The rare person who combines both is belittled by calling them something as mundane as devigner – Superman/Supergirl are better suited titles!

 

2. DevOps
DevOps as a discipline refers to the unified approach of Development, Testing and IT Operations.

DevOps developers are people who combine these skills in one person, with broader understanding of purpose of the system. They understand that writing code is just one part of a bigger picture. Code-complete is meaningless unless it tests well, and till the time it is in production systems – live and serving users – it is actually pie in the sky. Code has potential energy, it is production use that converts it to kinetic energy.

For example, a DevOps ASP.NET developer understands IIS web gardens and web farms, session state servers and a zillion other things that the normal ASP.NET developer regards as – “not my job”. And a DevOps developer understands evolution of unit-testing frameworks and how they can be integrated in code. And so on. A DevOps developer has a much broader outlook on her role and end goal.

When things go wrong or slow down on production or on the database, the DevOps developer thinks – “what in my code may be causing this? how can we make it faster? what could be wrong? how can I help?”. The normal developer thinks – “what is the sys-admin doing? what is the DBA doing? well, it’s anyway not my problem.”.

DevOps developers are also naturals with cloud APIs and the ability to manage hardware and infrastructure with code. Let me repeat that line: manage hardware and infrastructure with code.

 

3. Polyglot Programmer
The polyglot programmer is an interesting animal.

This is a programmer who learns and masters multiple programming languages, and uses multiple languages on the fly, blended seamlessly!

Most full-stack web developers today are already polyglot programmers! Without realizing it. At minimum, you work with PHP/Python/RoR/Java/ASP.NET/ColdFusion/etc for the web app, and SQL for the database, and HTML/CSS/Javascript/AJAX for the front-end. And don’t forget the glue – XML.

The true polyglot programmer drives this further. At minimum, she learns generic things like Perl, which is very useful in specific situations. Till you haven’t slurped an entire file with one line of code, you haven’t discovered the power of Perl. And then she masters something like VBS/PowerShell or AppleScript or Tcl/Tk, scripting languages that are useful for so many day-to-day things. And then she may learn alternatives in her main area of work.

Polyglot programmers integrate multiple languages as suited for system at hand. You may write a ColdFusion page and shell out to a VBS script that does something. You may write a file-processor in Perl and exchange data with your Python script in XML, maybe via a web-service. And if your environment allows it, you may mix languages in your environment – like Objective-C and Swift can co-exist in XCode.

Finally, contrary to expectations, instead of consolidating the language scene is exploding! Golang and Dart. F# and Clojure. Scala and Elixir. Swift and Hack. Go count!

 

Of the three trends above, the devigner is practically dead in the mainstream. The DevOps developer is the future – you have a DevOps approach or you are dead. A narrow view of code-only-and-I-am-done will no longer cut it. And polyglot programming is rising in importance as specialized languages multiply.

What do you think of these trends?

 

  • Ashish Jhanwar

    “Devigner” sounds like a pun on the word divine(r) , given the wide array of skill set they carry, their image in front of other mortal developers is god like.

    A combination of being a “Polyglot” and a “Devops” would be “the thing” of the future, and would be the most respected class of developers, possibly closest to the respect the “Devigners” have.

  • Vinoth Raj

    A language a year!

    How about learning a new programming language every year?

    Call me insane. I don’t mind. But either you are not willing to comprehend the impending benefits or just want to shy away and remain a “monolingual” for the rest of your life.

    What I am talking about is an interesting polyglot adventure that takes just more than learning the syntax of a language. Learning new programming language will give you a fresh lease of mind (life). You will get better understanding of design patterns when moving among different languages.

    It doesn’t mean that you should mess up your codebase with all different languages you have learnt but rather that adventure will open your mind and get fresh ideas on how to solve things differently.

    Your code gets more beautiful every year! Believe me!

    Still not convinced?

    I suggest you get a grab of The Pragmatic Programmer by Andy Hunt and Dave Thomas.

  • Sumit Dhal

    My first thought after reading

    How come all these words exist in web dictionary !?! 🙂 😀

    http://www.urbandictionary.com/define.php?term=devigner
    http://en.wikipedia.org/wiki/DevOps
    http://en.wikipedia.org/wiki/Polyglot_(computing)

  • Sovan Misra

    Having designing ability in quiver along with developing skills is a nice addition. Personally I feel, why not to garnish on something we cooked ourselves rather than waiting it to be garnished by somebody else. And in modern programming era becoming a polyglot programmer is rather a necessity than an option. To do stuffs out-of-box we must have it is a must.

    It’s not a surprise altogether with the existence of these words because these practice are quite common and these are the best suited terms for them..

    Nicely described and explained all the roles ..Thanks.

  • Sudhansu

    Just found a similar kind of thought.
    The 3 types of programmer in another way.

    1) “Code Cruncher”: This person may spend a lot of their time, or all of their time coding, without much thought to the outside world, and usually without giving much thought to the technical design (that is probably not complete.). They want to start coding right away, so they make many assumptions, and try to finish the work as quickly as possible, and usually any complications along the way are simply met with more assumptions to get the work ‘done’ faster.

    2) The “Architect”: This person always seems to have the right answer and dazzles management by their ability to answer any and all questions right away. They spend a lot of their time ‘researching’ new technology, so, they always want to suggest a better way of doing something, and don’t necessarily have any experience in this area at all. They most likely won’t complete their project on time, but they have a great answer for management which will explain in detail why they never get their work done.

    3) The “Creative Developer”: This kind of developer will always ask the right questions up front. They will normally have the correct answer to your first question as mentioned above. When confronted with a challenge, they don’t start coding right away, and they don’t seem to know all the answers. They do however always ask questions up front, and always clarify any ambiguity before starting any development. They don’t seem to know all the answers at any given point in time, but they normally get the project done on time, and more importantly get it done right the first time. It’s critical that a developer asks the right questions, and refines the requirements and technical design. If this is not done at the beginning of the project, it will most likely fail, and any stakeholders will lose their trust in your ability to deliver a project in the future. This developer, of course is creative! Yes, you DO want programmers that think of more than one solution to a problem, and will learn any new technology inside and out to accomplish the best solution to any given problem. This type of programmer will always want to outdo any of their past work, and try to ‘make a name for themselves’. They enjoy sharing their knowledge, and will do whatever it takes to make the project succeed.

    Source : http://www.codeproject.com/Articles/814978/Hiring-a-Great-Programmer