I find it very useful to jot down what I value most and what I'm looking for in a role each year. This is the first time I have published it of course.
I find it grounds me. It is all too easy to get swept away with the work you're doing, and forget to re-align.
Remote or flexible working.
I believe there are tangible benefits in being face to face, being able to have that meeting or random chat at the water cooler about an idea. Though like everyone else, the last couple of years has had an impact, not least of all, I'm now a father, and I would love to be in my daughters life as much as I can, without wasted hours spent commuting each day. I'll just have to accept that I won't get through as many podcasts and audio books as I once did!
Tight nit, experienced team.
Building (good) software is a team sport, and it's important that the team isn't scared of making mistakes and failing, but recognising failure and learning from it in a professional environment is what I look for. A culture which revels in having a ton of failures on it's belt will be a successful team.
An interesting problem space.
Everyone would like to think that they're contributing to something positive when they get up in the morning. Something that people enjoy using.
Mature approach to technology.
I think it is important that 'keeping it simple' should underlie the teams technical decisions. Given the current landscape it's very easy for teams and individuals to run away with the new and shiny without really standing back and justifying the need and the impact it could have. A team with a modern tech stack and a
rigid good process to discuss technology is key. On a more subjective note, a team which has embraced functional languages would be bonus for me.
Investment in engineering.
Debt always needs to be paid, packages updated; performance tuning to do...
A company which bakes this into their business understands software, and that's a desirable thing!
No feature factory mentality.
The team should really feel the ownership of their area. Improvements and features would ideally come from within the team and broken down to encourage iteration, rather than a top down culture.
Developers + Stakeholders.
Some of the most productive teams and effective software are products of the relationships between the developers and the domain experts. I think it's important to be a part of a team that embraces this. Developers should strive to become domain experts themselves.
There is Lead and then there is Lead.
Even within the same company, the lead developer role can be vastly different. Some leads are effectively team leads or line managers, usually due to the expansion of a team, there duties as lead will rarely involve being hands on due to their people responsibilities. Then there are lead developers of much smaller teams, where they manage 1-2 projects at a time and are fully hands on. I love to be hands on and that's a priority for me this year.
Investment in people.
A role which embraces continual learning, backed by company resources for conferences, books, certifications etc. As ever, I want to learn, in every capacity.