Occasionally after telling a recruiter that I’m not interested in a position (yes, I try to respond to the ones that are not obviously spam) they’ll ask what I am looking for, which is an odd question since I’m usually not looking. I usually listed a couple of things, but from this day forward I will refer them to this post. Also, my boss asked me if there was anything the company could do to make things “better for you and the rest of the team”. So here it is, a description of my ideal job, with the full knowledge that it almost certainly doesn’t exist and tradeoffs will be made.
The list is in somewhat of a priority order.
The team, more than any other aspect, can make or break a job. I want a team of really smart people. And not just smart developers, but smart managers, product owners, QA, design etc. And not just smart, they should be open to sharing their knowledge as well as learning from others. Smart enough to have strong opinions, but humble enough to let others run with their ideas even when they disagree.
It’s isn’t about what I’m building, it’s about how we’re building it. I don’t want be build a mediocre anything. I want to work on a project where the goal is to create the best X. I want to have time to make sure it’s being built well, that’s it’s well tested, that it scales as needed, and most importantly that it’s maintainable.
That doesn’t mean I’m want perfection from the outset. I understand tradeoffs will be made, but we should be striving towards excellence, not mediocrity.
The key to work environment for me is quiet. Ideally that would mean an office with a door, maybe one office-mate. If it’s a team room or open plan, there should be an expectation of near silence. That means whenever possible people take their phone and other conversations in a different room. I prefer a treadmill desk even though many days I just alternate between sitting and standing.
I already have my perfect office in my house, and really prefer working on remote teams. The key here is the team needs a remote mindset, not an office based team with an office based mindset with 1-2 remote developers.
I’d still write software if I were independently wealthy, but I just wouldn’t have a “job”. So yes, the job needs to pay. I never want money to be the deciding factor in taking a job. It can easily be the deciding factor if the salary is too low, but is unlikely to be the deciding factor otherwise.
This is the section where companies can really differentiate themselves. Some of these perks are worth more than others, but I didn’t make any attempt to put them in any kind of order.
- Work from home (full time or even part time)
- Send the team to a conference
- Pluralsight subscription
- Flexible schedule
- Latest software (should be on latest version of Visual Studio)
- Excellent hardware
- Budget for tools like Resharper, Semantic Merge, etc
- MSDN Subscription
- Time and/or encouragement for blogging
- Help with speaking at conferences (time off and/or travel covered)
What’s not Listed
I didn’t list the typical trappings of ‘startup culture’ like free massages, gym memberships, lunches, soda, beer, or whatever. Those are nice, I’ve had some of them before, but they are just not something that would actually sway me. Some of them are even red flags.
Recruiters please include the word “trade-offs” in the first line of your email so I know you read this.