I’ve found a tonne of articles from the opposite perspective: what devs believe make a good product manager. I’m really keen to hear what some product people think makes a good developer though.
Of course, as product managers we’re unlikely to be critiquing their code. However, we are likely spending most of our days with developers.
So, what makes a ‘great’ dev, great? What makes a ‘good’ dev good? What makes a ‘bad’ dev, bad?
For me, it’s five key things:
Thinking of the customer/end user. I know the PM should be doing most of this, but I like nothing more than a dev coming to me and saying “Is this actually a great experience for x because y”. Thinking of how what they’re building will be used by a real customer is great.
Pragmatism: Sometimes I really need that feature asap dude… Equally, being honest about the ramifications of taking a shortcut and/or pushing back when it really doesn’t make sense is helpful.
Technical design: If they’re thinking one step ahead and build something in a way that it is extensible and flexible. This can be incredibly helpful, but from the outside, also very challenging! Approaching a developer and saying “Please don’t hate me, but we might need to make a change to that feature we built 2 months ago to accommodate something new” and they respond “We considered something like this when building it so it will actually be easy to implement” - this is a great feeling!
Make the complicated simple: I’m not a dev and I’ve never been one. Although I have a reasonable technical understanding - I sometimes need a dev to talk me through a complex topic in a manner that I can understand.
Code base knowledge: When a dev knows parts of the code base well, it helps endlessly. They raise red flags early on and help other devs understand potential complications more quickly. This might impact the product approach to a solution too.
To me it boils down to two:
- engagement and
- never saying “you just tell me what to build and I’ll build it”.
There could not be a third or a better option.
All of this, plus understating the balance needed to prioritize user value while still keeping tech debt in check, and not letting tech debt hijack a sprint if it isn’t urgent and doesn’t move the needle towards the product’s priorities/roadmaps. My devs are so eager to be part of roadmap conversations and user interviews. It really helps them stay laser focused, because we’ve all agreed upon the priorities and defined them together instead of just being told what to build.
Someone who is willing to be a partner in the process, not an order taker or order giver. That alone solves 90% of the problems I e encountered.
Same. I was going to say someone who actually helps me solve problems… Essentially the same thing.
Pragmatism and also an even keel when times are tough.
In fact, Pragmatism is number one for me. I’ve noticed the most senior and skilled developers I’ve worked with over the years are the ultimate pragmatists.
@CathrynCui, They know the first principles. They understand the need of the customer. They can actually translate wants and needs to implementation rather than being told. They mentor their new team mates to do the same.
The worse team I’ve ever dealt with had a culture where the pm did all the designs. They only considered AWS systems their job. Nothing else.
Understanding the customer vs thinking about the customer are so different in practice. I’ve worked with a lot of devs who have been told to think more about the customer and advocate for their needs. Doesn’t go well if they don’t empathize with or deeply understand the desires and pain points of said customers…
- Building a good relationship with other stakeholders in the organization.
- Understanding their core competencies and limitations.
- For senior devs/tech leads, by far the most important is collaborating with the product manager and the designer.
I came across an article about this a while ago if you’re interested - Being a tech lead in an empowered product team
As a Product Manager here’s my way to recognize good developers:
- They will typically charge around the going market price.
- Code samples will be neatly structured and well-commented.
- They will display a solid knowledge of development technologies in their area of expertise.
- They are familiar with and actively use development methods, such as Agile development.
- They will often understand relevant programming “best practices” and when to employ them.
Now, how would I recognize truly great developers?
Look for all the traits of good developers above, and also:
- A burning passion for development and programming.
- Great communication abilities, both technically and non-technically.
- Intuitive understanding of programming technologies based on years of experience and great development sense.
- Great vision, capable of integrating development needs with other constraints.
- Desire to help other team members become better.