Dilemmas of Engineering

Johannes Berggren

1. Speed vs. Quality

Shipping fast can cause bugs and long-term issues, but focusing too much on quality can slow progress. Solution: Communicate trade-offs, manage tech debt, and set quality standards that still allow quick iterations.

2. Build vs. Buy

Building in-house gives more control but takes time, while buying third-party tools is faster but can limit customization. Solution: Buy if it’s not a core feature, and build only if it adds strategic value.

3. Tech Debt vs. New Features

Fixing tech debt helps in the long run, but delaying new features frustrates customers. Solution: Dedicate part of your time to both, and keep the business aware of the tech debt’s impact.

4. Innovation vs. Stability

New tech is exciting, but too much can cause instability. On the other hand, sticking to old systems can lead to stagnation. Solution: Innovate in less critical areas while keeping core systems stable.

5. Centralized Control vs. Team Autonomy

Central control ensures alignment, but too much can slow down decision-making. Too much autonomy can cause misalignment. Solution: Set clear goals, but give teams room to make decisions within those boundaries.

6. Short-Term Delivery vs. Long-Term Scalability

Meeting deadlines is crucial, but ignoring scalability creates problems later. Solution: Build in steps, balancing immediate needs with the future, and communicate long-term goals with stakeholders.

7. Hiring Fast vs. Hiring for Fit

Hiring quickly can bring people who aren’t the right fit, but being too picky slows down the process. Solution: Streamline hiring, focusing on both culture and skills. Consider contract-to-hire to keep things moving.

8. Promoting Managers vs. Keeping ICs

Promoting a strong IC to a manager can leave a skills gap, but keeping them in technical roles might limit their growth. Solution: Offer dual career paths where ICs can grow without becoming managers.

9. Product-Driven vs. Engineering-Driven Prioritization

Focusing only on product features can overload engineers, but engineering-driven priorities can delay business needs. Solution: Ensure regular discussions between product and engineering to align priorities.

10. Cost Optimization vs. Performance

Cutting costs can affect performance, but over-investing can waste resources. Solution: Monitor costs and performance, scaling as needed.

11. Scaling Teams vs. Preserving Culture

Rapid team growth can dilute company culture. Solution: Scale intentionally, reinforcing values and communication while ensuring new hires align with the mission.

12. Transparency vs. Confidentiality

Sharing too much information can cause confusion, but not enough can erode trust. Solution: Be open about important decisions but keep sensitive info confidential until the right moment.

13. Burnout vs. Delivering Results

Pushing too hard leads to burnout, but not pushing enough slows progress. Solution: Promote balance, with realistic deadlines and room for recovery.

14. Unified Tech Stack vs. Flexibility

Standardizing tools increases efficiency but limits innovation, while too much flexibility can cause fragmentation. Solution: Provide general guidelines but allow some flexibility for specific needs.