Tips for Software Engineering Managers in BigTech
Don’t ask for permission; ask for forgiveness
- If it’s a good idea, and it doesn’t break anything - do it. It’s faster to do it and learn from mistakes.
- Systems are inflexible by design. But are the only way to drive the organization. If the system accepts it - do it. If the system is broken - ask me to change it. Not everything can be improved right away. Be patient.
- I forgive people trying to do things and making mistakes. I don’t forgive avoiding things.
Release early release often
- Shipping early without getting feedback is stupidity. But shipping early just for listening to the customer’s feedback is the art of wisdom.
- Be bold and ship an unpolished version; you are fighting with the market. Don’t criticize your colleges for shipping MVP.
- Always share your proposals early to get initial feedback, before you invest more energy into finishing it.
Focus on things that give results
- Working software beats the best proposals.
- Written proposal beats every meeting.
- Building prototypes beats thinking, if it’s worth doing it.
Meetings
- Review your calendar every month.
- Avoid being at meetings only for “just in case” / FOMO
- Leave meetings where you don’t contribute to.
- Only attend the meetings with clear goals. Be brave to give polite feedback on meetings which are waste of time.
Culture and Strategy
- The culture of people beats executive strategy every day.
- If you want to know the culture of the company, listen to the jokes, it tells the truth under the surface.
- The only way to change the culture is to empower good parts of it.
People are not resources
The best team is the effect of training, not recruitment.
- Don’t assume you will just get the best developers from the market. As a leader, your job is to develop and grow your team. Hire potential, and invest into people.
- People will remember you for how you grew your team and what kind of teacher you have been. People remember managers, but they love great teachers.
- Build a plan for the development of Junior, Mid, Senior, and Principal engineers. Most people don’t build plans not to specify points of failure.
- If you want to make everyone happy, don’t become a leader. Good leaders make decisions that are good for the team in the long term, which can differ from individual goals.
Communication
- Communication is such a crucial skill for the developer as the seven layers of the network stack are for microservices.
- If you feel, that you’re good at communication, think again. Communication skills cover so many aspects of your job that it’s a never-ending skill to develop.
- Invest in developing skills on how to do the best PR review, how to create good commit messages, take a course on how to write tech proposals, ADR, write concise documentation, make screencasts, and even the art of convincing management to secure the budget.
- Most of the “the product were great, but management has killed it” problems might come from not understanding how to communicate its features, progress, and problems.
- Invest every year in building up your communication superpowers.