Where Would I Want to Work?
I've been approached by a record number of recruiters over the last six months (well, record for me) and it seems that I could, if I pursued it, get a new job pretty easily. I've found that throughout my career, there many different ways that companies can "work", the procedures and process in place to actually get software created. I've found that some fit me more than others.
So what kind of environment do I want to work in? I actually don't think the answer is so easy.
I think there's a lot of environments that could be considered "right" and still be very different from each other. Some people would thrive in an environment like NASA, where everything is checked, re-checked and then checked again before moving forward. That would not be an environment where I would be happy. Also, the "wing it" approach to development is not my style, although I know a couple people that wouldn't want to work any other way. No priorities, no todo lists, no bug tracking or source control; no problem. To them, those things just get in the way of high octane, no holds barred coding.
So what I am looking for is:
- An Agile Development Methodology
After talking with some Agile Methodology coaches, namely Jared Richardson, and people that have been using Scrum and XP (properly) I've found that I really thrive on knowing where I'm at and where I'm going on a project. Having a nice set of metrics that I can use to track my progress really frees me up to concentrate on the work and not worry about what I might be missing or what surprises might be in store.
I've done this on one of my latest projects. We sat down for two months and planned the system out and how everything would work together and coding standards, etc. It went smoothly and a lot of headaches that would have been waiting for us when we didn't have time to deal with them were ironed out from the beginning. And no rewriting. I loved it, and a useful development methodology is something I will no longer do without.
- Flexibility
I need to be able to work the way I know I work best. That means from my home office and with my tools. I've been using Linux for years now and it takes me five times longer to do anything on Windows than when I have my Linux box. It just has more of the scripting and editing tools that I've been using for years already installed.
And there's nothing I can't do from home that I could do in an office with the right tools. As a knowledge worker, a lot of what I do in a day is me and the computer. Communication is still very important in any team though, but I've found you don't need to be in the same room to have that happen. I can communicate just fine through the computer, I've been doing it with open source software development for years. I've never meet any of these people, but I would say that I've had meaningful interaction with many of them and we've certainly been able to get things done. However, I do need face time with the family, and the fact that I can walk out the door to my office and have lunch with my wife and my daughter is HUGE to me. I wouldn't trade it for anything.
- A Proper Development Setup
There are basic tools that need to be used to build software properly. Source control, whether CVS or SVN or whatever, is a must. If a shop isn't using source control, they're saying that their software isn't really worth protecting.
Testing frameworks and bug tracking software, xUnit, Selenium, whatever's needed. If you don't test, that means you don't really care about the quality of your product.
Automation of most repeated tasks. If most of what a developer needs to do to get things running isn't automated, that means you don't care about your developer's time.
I think this was more written for me than anything else. Like I said, I'm getting quite a few offers recently, but I like where I'm at right now. I've got quite a few of the above covered to some extent or the other. Notice I said nothing of money or benefits. They factor in, but they would never rule someone out immediately, the above can.
UPDATED: It was brought to my attention that this came across as whining. I agree and edited it to be a little more positive.