How Engineering Managers Can Reduce Throw-Away Work

Nitin Dhar
Total Engineering Management
3 min readJun 6, 2023

An engineering team’s worst nightmare is the realization that a significant portion of the work they’ve done needs to be tossed out. It’s frustrating, demoralizing, and, most importantly, costly. In this post, we’ll explore practices engineering managers can use to minimize throw-away work.

Project Planning

The blueprint of efficient work lies in astute project planning. Break work into small, manageable chunks, releasing value incrementally. The agile principle of iterative development isn’t a buzzword; it’s a tried-and-tested method that prevents you from veering off course dramatically and helps reduce time-to-signal.

Clearly establish the problem statement, requirements and constraints upfront. This reduces back-and-forth, misinterpretations, and, you guessed it, unnecessary work. However, remember that requirements are not set in stone, and adjusting them is part of the process.

Incorporate retrospective meetings after each sprint or milestone. This isn’t a finger-pointing exercise, but an opportunity to identify and rectify patterns early.

Conduct a feasibility analysis (a.k.a. technical discovery) before green-lighting a project. It helps you assess the project’s viability and prevent pursuing impractical or overly ambitious ideas.

Lastly, be forward-thinking. Plan for future product iterations and use modular design to accommodate change, reducing the need for a ground-up rewrite. Also consider how the software might integrate into adjacent systems.

Feedback and User Research

Feedback is the compass that should guide your engineering efforts. Without it, you’re navigating blind. Seek feedback early and often to ensure alignment with customers.

Creating prototypes before implementing full features allows you to test the waters, validate ideas, and gather user feedback without a full-scale commitment.

The ‘deploy fast and iterate’ approach lets you swiftly gather user and stakeholder feedback. This approach helps avoid long development cycles on features that may not resonate with users.

Additionally, invest time in user research. Understanding user needs and preferences helps you prioritize features that matter most, minimizing wasted effort on low-impact elements.

Code Quality and Maintenance

High-quality code is more maintainable and less likely to require rework. Regular code reviews and pair programming are great ways to catch potential issues early and maintain code quality.

Don’t reinvent the wheel — reuse existing, tested, and validated code when possible. This not only saves time and effort but also reduces the chances of introducing new bugs.

Document your decisions to provide context for future work and consider technical debt. This strategic postponement of improvement work can help prioritize higher-impact work now, but remember to pay it back to prevent a mountain of throw-away work in the future.

Metrics and Performance Tracking

Measuring user engagement, retention, and satisfaction metrics (e.g. CSAT) can help you identify underutilized or non-value-adding features. Being data-informed enables you to focus your efforts on areas that need it most.

Balancing Short vs. Long term Solutions

Walking the tightrope between short-term and long-term solutions requires careful evaluation of user impact, resource requirements, scalability, and trade-offs. The Futurespective technique, conducting a project retro before starting, can help anticipate future challenges and balance decisions effectively.

Also, consider the opportunity cost and cultural fit when deciding on a solution. A technically superior solution may not always be the best choice if it conflicts with team culture and maturity, or misses more valuable opportunities.

Risk Mitigation

Lastly, use Scenario Planning and Red Teaming to anticipate and plan for potential risks. Maintaining strong relationships and open communication with stakeholders and team members is key to swiftly dealing with unexpected events.

Reducing throw-away work doesn’t involve a magic wand 🪄. It requires thoughtful planning, customer obsession, and a continual commitment to quality and communication. By integrating these strategies, engineering managers can significantly decrease wasted work, leading to happier teams and better products.

The learning continues in…

If you have any thoughts or experiences to add, let me know! Respond to this post or let me know on LinkedIn. I’m happy to talk about anything software engineering related.

--

--

Nitin Dhar
Total Engineering Management

Senior Engineering Manager, Valuations @ Carta. Building an EM Pocket Guide. Girl dad + Indie hacker. Thoughts are my own.