Being a contract web developer means working in a large number of enterprise environments. While clients and projects vary dramatically, enterprise environments almost always share certain characteristics in common: locked down networks, limited use of open source libraries (and certainly no contribution!), extreme caution regarding new technologies, and reliance on libraries and tools which some might consider… deprecated. Most of these characteristics are perfectly logical, given the complexity of enterprise projects and the security required by legal considerations. Enterprise software is frequently disregarded as sloppy, boring, uncreative, and poor — and I’ve certainly worked on these kinds of projects, and dealt with some frustrating situations — but classifying all software in this way is unfair. That said, even the best of enterprise projects feel constraining compared to independent work.
Recent developments have certainly improvemed the enterprise work environment. The proliferation of iOS devices has not only brought Macs into the traditionally Windows-only world of the enterprise; it’s brought a new focus on standards-based webapps, which has forced a reconsideration of existing technology stacks. As enterprises have adopted dynamic languages and agile approaches — albeit slowly — they’ve begun upgrading their toolsets, as well. Github’s announcement of an enterprise plan demonstrates that it’s starting to feel a little bit more human within the confines of corporate intranets.
But even as the enterprise has evolved, the improvements made for individual developer productivity have exploded. The ease with which a single developer can build and deploy a scalable, cross-device, and revenue generating app is beyond remarkable. The maturing of tools, languages, development environments, and deployment strategies has created a fantastically productive environment. To name a few favorites:
Macbooks – The new Macbook Airs, when fully tricked out, offer incredibly powerful development workhorses weighing less than 3 pounds and costing less than $2k
Homebrew – A package manager for Mac OS, making that Macbook purchase perfect
Heroku – Have an idea for a new project? Deploy it for free. Want to scale it? Flip a switch
Git and Github – Who could have ever imagined that managing code could be so enjoyable?
zsh and oh-my-zsh – Tab completion, customizable plugins, persistent Git HUD
The incredible profusion of programming languages, libraries, and frameworks – Scala, Clojure, node.js, the Play framework, NoSql solutions, nginx, to say nothing of the maturing of Ruby (especially Rails) and Python – all of these technologies make it easier than ever to work in one’s preferred style without sacrificing power or performance. The communities around each of these technologies, empowered by twitter, StackExchange, and Github, ease learning curves and offer helpful answers to any questions.
Is there any other industry in which an individual has such a dramatic advantage in tools, cost, and agility over large organizations?
It’s an exciting time for indie developers. And the future keeps looking better.