Programmer Passion: An Enterprises Most Useful Yet Repressed Advantage
Programming is creative profession. Being successful requires a level of personal commitment, attachment and above all, pride in the work that we do. The best of us are technologist and problem solvers, open minded and capable of embracing our failures. Our passion often crosses over to arrogance, and the constant highs from overcoming challenges can give us a sense of entitlement. We are competitive and our pride isn't without its social drawbacks.
Yet the most important thing to know about programmers, especially if you happen to be someone who signs our hefty paychecks, is that we are surprisingly easy to please. Let our passion drive your success. Enable us to do what we love doing. Don't stand in our way. That isn't to say that programmers should have carte blanche in their work. But when it comes to the tools, technologies and freedom to experiment, you should think twice about ever saying no.
A programmer that wants to roll out a new technology is a programmer who wants to help you find new and innovative ways to succeed. They want to help outsmart, out produce, and out innovate the competition; the good ones will do it naturally and on their own time because learning and playing with new technology is their way to relax and wind down.
Quash that passion with global policies, 30 000 feet architecture and a restrictive (and likely antiquated) list of tools and you'll end up with exactly what you deserve: code monkeys who won't drive innovation and simply defend the status quo because that's easier than having to learn. You'll still have to pay them a hefty sum.
If you can't figure out how to enable your programmers with a great level of freedom while maintaining your important and very real security, data retention, privacy and various other enterprise concerns, then your punishing your employees and employer for your lack of common sense. Here's a hint: look at secondary and support systems within your organization as ideal candidates to explore and experiment.
Similarly, if you can't figure how to be an enabler while still managing, you need to try harder. Programmers understand that even in the most flexible enterprise environment, forms need to be filled, plans signed off on, and justifications submitted. Ask them to justify their choice of technology, but your default should be yes.
Don't mandate stacks, languages and frameworks. Resist the initial urge to stop developers from re-inventing something you already make available (say a messaging queue). If your existing, potentially expensive and off the shelf solution, was any good then you wouldn't need to mandate its use. If that isn't your experience, hire better programmers.
Finally, take a page from the rest of the industry. Look at the patterns of the successful (Google, Facebook, Amazon, Heroku, GitHub) and the not. And then consider that some of these will even make their tools and infrastructure available for you. Of particular note, Amazon's AWS. Its more enterprise ready that your own data centers, stupidly cheaper and more reliable.
You'll be amazed at the return you can get by giving root (figuratively and literally).