Five opinions I've kept, let go, and picked up as a software builder and leader
a year ago
- #leadership
- #productivity
- #software-engineering
- Typed languages are better for refactoring and maintaining large codebases.
- Engineering managers must be technical to effectively lead and understand their teams.
- Continuous Deployment is essential for high-performing teams to deliver quickly and efficiently.
- Writing is a superpower for clarity, iteration, and documentation.
- Hiring QAs is dysfunctional; instead, invest in automation and observability.
- Scala is no longer the best JVM language due to its complexity and community direction.
- Deadlines are beneficial as they encourage creativity and prevent overengineering.
- Fine-graining tasks too early can be counterproductive; autonomy and understanding scope are better.
- Test coverage and unit tests are not always necessary; integration tests and observability are more valuable.
- Preproduction environments identical to production are often impractical and costly.
- Support is critical for internal Platform teams to build trust and influence.
- Providing support where people are (e.g., Slack) shows user centrism and improves satisfaction.
- Shipping builds momentum and trust, while complaining creates distrust.
- Infrastructure teams should focus on easing migrations with automation and seamless transitions.
- Brag documents are more effective than traditional performance reviews for highlighting impact and receiving feedback.