- I never set meeting times with my engineers that will interrupt their working flow (I love PG’s “Maker’s Schedule, Manager’s Schedule” essay)
- I always try to clearly explain the “why” of what we’re doing, provide detailed designs/documentation, and remove any blockers when any arise
- When possible, I try not to force engineering shortcuts or trade-offs. I prefer that we build features or systems that are well-tested and clean
What have the best PMs you’ve worked with done to make your life as an engineer easier?
This only leads to confusion and bad culture. Senior devs don't take orders from PMs but junior devs usually end up confused and create more issues.
In my 10 years of experience as software engineer, a PM has never forced me or my team to take any shortcuts or work extra hours to meet their deadline. Every time we had disagreement, my boss backed me not PM.
Benefits of this approach,
1. Engineers get to know more about the customers & their pain points first hand.
2. Engineers are bought into the solution as they co-created it.
3. You usually come up with better solutions as both business and technical constraints are all on the table.
Like recently we had a project with a lot of mutual dependencies. The app scans a QR code for access and then access is denied. Who is at fault? The app developer? The API developer who gave them the code? The guy who integrated the code? The back end system handling roles?
Is this thing being worked on or is the responsible person waiting on someone else for a fix?
The lazy approach here would be to adopt scrum, which settles issues like this, at a great cost.
But I find a good PM makes it clear what the progress of the project is, without having to bother the engineers for it. They still do things similar to quick 5 minute meetings, but they slot it into the flow, like when the engineer gets back from lunch. Something like Trello helps a lot in this background monitoring, and the good PM encourages them to use it as it's what cuts down the meetings.
One thing I did as manager was to print out every page of the app, paste it on a wall, and then tick off whatever was done, whatever was high priority, or who needed to do it.
It's also important, but much harder, to make sure that the team gets along. When the team gets along, they communicate. When they communicate, they know what's going on. This might include posting memes on Slack as icebreakers or talking about their favorite football match. This might also mean allowing the team to head down and have a half hour tea break at 4 PM.
- Make them feel free in boundaries (e.g. allow creativity flow for a period of time)
- plan time for personal enrichment (attending conferences, studying new tech improve in other areas rather than coding)
- don't make deadly strict timelines that are unreasonable short. Make a buffer in your estimation
Some of my worst experiences have been when my boss got on my case for something I said would be done in two days as a best case scenario, and then exploding when I told them I'd need an extra half day for a problem that showed up and required a change of plan (corroborated by other team members or the PM).
Or when a PM would let me know they just need a status check, but didn't take care of backing up my decision with my boss - which also leads to my boss exploding. Idk, maybe I had a toxic boss in a shitty org?
And listen to the developers when they tell you how long things are going to take. Don't tell them that they can do it faster.