Dear developers: Do you feel insecure because you’re only fluent in a mere eight programming languages used across three families of devices? Does exposure to yet another JavaScript framework make you shudder and wince? Have you postponed a pet project because you couldn’t figure out which cloud platform would be best for it?
You too may suffer from Developaralysis. Be afraid. There is no cure.
The panoply of options available to developers today is ridiculous. We’re choking on a cornucopia. Over the last few years I’ve been paid to write Java, Objective-C, C, C++, Python, Ruby, JavaScript, PHP (sorry) backed by various flavors of SQL/key-value/document datastores (MySQL, PostgreSQL, MongoDB, BigTable, Redis, Memcached, etc.) Do I feel good about this? Good God, no. Mostly I just feel guilty that I haven’t done anything with Erlang, Clojure, Rust, Go, C#, Scala, Haskell, Julia, Scheme, Swift, or OCaml.
I’m a victim of Developaralysis: the crippling sense that the software industry is evolving so fast that no one person can possibly keep up.
Take almost any of those languages, zoom in on the various frameworks and toolkits and libraries available for it … and try to keep your head from exploding. It would take months just to complete a serious evaluation of all the permutations of JavaScript frameworks and libraries out there today. And do you have any idea how many Ruby gems are available? Or iOS frameworks? Or NewSQL/NoSQL datastores? And don’t even get me started on Hadoop vs Spark vs Google Dataflow, or Avro vs Thrift vs protocol buffers, or or or …
At least the mobile world has shrunk to an Android/iOS duopoly — although that hides crossover alternatives, like Xamarin or cross-platform HTML a la PhoneGap or Sencha — but just try figuring out where and how to deploy your back end. I’ve worked on systems deployed to Heroku, Amazon Web Services, Google App Engine, Google Compute Engine, and Parse…which just makes me feel bad that I know little about the guts of OpenStack, Force.com, Azure, AppFog, the many AWS services I’ve never actually used, et al.
Starting a basic website in 2014:
1. Install Node
2. Install Bower
3. Pick CSS framework
4. Pick responsive approach
…47. Write some HTML
— I Am Devloper (@iamdevloper) October 2, 2014
Developers today face such a thronging armada of available options that we now use a plethora of tools which exist just to help us manage our lists of other tools: Bundler, Bower, CocoaPods, Pip, etc. Which are great! I wouldn’t want to live without them! But still. And then you start using those other tools, and half the time when you really get down into their weeds, you begin to realize that configuration isn’t quite enough, you actually want to rewrite them … just a little … or maybe replace them with another alternative …
The sad fact is that the sheer number and diversity of languages, tools, frameworks, and platforms available to developers today is incredibly daunting. Of course nobody wants to admit this. Everybody wants to pretend to be a master/mistress of all trades. But the truth is that we all suffer from the stigma of Developaralysis.
Even gathering the information required to make an informed decision is almost certainly counterproductive. If, before embarking on a project, you actually took the time to analyze all the possibilities, and then climbed the resulting learning curve, you’d promptly get beaten to market by some teenager using PHP and Swift with emoji variable names—
–but on the other hand, if you settle on Swift and PHP, then you live in constant terror that some ninja C#/Haskell programmer will wind up running rings around you in the same way that Paul Graham did with Lisp, back in the day:
When you choose technology, you have to ignore what other people are doing, and consider only what will work the best … In fact we did have a secret weapon … We were just able to develop software faster than anyone thought possible … We wrote our software in a weird AI language, with a bizarre syntax full of parentheses.
Hence: Developaralysis. Do we choose what we already know, because we can move now without crawling up a learning curve, and live in terror that someone somewhere else is doing it better, faster, more elegantly–and our skills will be obsolete and uncompetitive next year? Or do we expand what we know, because we love to learn and better tools are both more fun and a huge competitive advantage…at the expense of copious time, effort, and cognitive load?
Trick question! There’s no right answer. That’s why every month is Developaralysis Awareness Month. I’ll be sending out blinking kaleidoscopic ribbons for you all to wear, just as soon as I figure out which 3D printer, microcontroller, LED software, and drone OS to use. Don’t hold your breath.