This is the first and introductory posting to my “Thoughts on Employment” series, detailing some lessons learned and general musings from my career as a software developer on what an employer can do to provide an effective, productive and attractive work environment for highly effective software development teams. For an index of all postings in the series, please see below.
I've now hit that point in my career as a software developer where I have enough experience under my belt to be able to make informed commentary, but more importantly, to have a better idea of what type of work environments work well for me. In my 12 or so years getting paid to play with computers, I've had the opportunity to observe, from the inside, an unprofitable dot-com startup turned mid-sized profit machine, an international fast food behemoth, a mega-corp tech service provider, a smaller consultancy firm, and a small ISV. I played a different role at each, learning as much about myself and about how other people work as I learned about technology. I've been in a Linux shop and a .Net shop. I've been the youngest person on my team and the oldest. I've worked with people smarter than me, and people who really shouldn't be writing software.
This all came into focus in the last year, as I decided to leave my then employer after only a year. I did some real soul searching to figure out what I really wanted in a job in order to find an employer I would want to stay at for years to come. (hint: salary was not my top motivators). This was put even further into the foreground as I was asked by a couple of people I knew to mentor them on their own career paths and job changes - and for as much as I'm concerned about screwing up my own life, I'm mortified by the idea that I could screw up someone else's career, so I took this very seriously.
So based on all of this mulling around in my head for a while, I've decided to jot down some of my thoughts on what makes a good environment for a software development team. There are plenty of people bitching about what makes a bad environment, but I wanted to put forward what I've seen work well (with a few things that didn't).
So, here we go... Below are my thoughts on what an employer can do to provide an effective, productive and attractive work environment for highly effective software development teams: