I’ve been having a lot of discussions lately with other devs about job satisfaction; seems like many of us want the same things, but I thought I’d capture a few thoughts here.
I want to use best practices
If I was interviewing someone who had no experience with automated testing or continuous integration, I’d be a little worried. Likewise if they weren’t familiar with modern project management practices that focus on quick iteration and delivering value, or if they had no concept of the value proposition of open source. In 2016, it’s hard to consider any of those things as new; they’re approaching the 20 year mark, at this point. And yet there are a lot of companies, projects, and individuals out there who have next to no experience with those things.
That’s not to say I’m not willing to help improve process and teach people; we all started somewhere, and we can all get better. But somewhere along the line, the burden of proof has to switch; I don’t want to constantly be fighting for things that have proven their value in the industry over and over again.
I want to work with relevent technologies
There is a fine line between churn and staying up to date with modern software development; for better or for worse, it’s a fast-moving industry. Some folks love being on the cutting edge, and get a lot of satisfaction from working with the latest and greatest technologies. Others have worked in the same language or stack for decades.
There comes a point, though, when certain languages or tools start to smell a bit; it’s not about being new, it’s about being relevent. If you’re a C++ or Java developer, your skills are still highly sought after. If you’re a Flex dev? Much less so. There’s a real possibility of painting yourself into a corner, and making it difficult to find a new job; I don’t want to work with technologies that are going to hurt my career in the long run.
I want to work on challenging projects
Even within a given techology stack, there is a huge amount of variation between projects. Again, newness isn’t the point; I want the programs I write to be delivering value to the client for years, decades if possible! And I’m just as happy to work on a “legacy” project as I am a greenfield one. But the nature of the work is important. Am I constantly adding hacks or workarounds to a big ball of mud? Or am I focusing on refactoring problem areas, to make it easier to add new features and fix future bugs? The latter will be making me a better developer, the former is almost certainly going to make me worse. There will always be grunt work, but I don’t want to work primarily on tasks that don’t help me improve.
I want to work directly with domain experts and clients
Modern software development has a tremendous amount of focus on delivering value; much of the industry is about coming into a business we know very little about, and working with knowledgeable people in that domain to help solve problems. It’s pretty widely accepted that developers need to work closely with clients in order to make sure we’re solving the right problems in the right way.
I think there is a type of management culture that tries to isolate “technical” staff from clients, and has an idea that developers don’t understand value propositions, struggle with communication, and get lost in implementation minutae. And while I’m sure I can improve all of those areas, I think it’s critical for developers and domain experts to have close interaction; I don’t want to be cut off from my clients.
I want to work with a team
I think that very few developers really enjoy being the lone ranger on a project; working with a team that is firing on all cylinders is a really exhilerating experience. When a team has established a set of good practices and processes, it feels almost magical–features get shipped with incredible speed, bugs get found and fixed quickly, and team members are constantly helping and learning from each other. Software development can be a very isolating job, expecially if you work remotely; I think a lot of businesses realize this, but the result can be a sort of superficial social culture. For the most part, people who care about their profession want to work with other professionals; I don’t want to work by myself.comments powered by Disqus