Three roles have been evolving in software development over past few years.
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!
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!
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?