Principles behind the Thiago Manifesto

Whatever you or your company does, please separate the planning and documentation process from the project estimate.

If you provide a six-month estimate, those six months should be dedicated to developing what has already been planned and designed. You cannot simultaneously develop documentation and execute actions within six months.

Remove individuals without management experience. How can someone who has never written code assign tasks or write acceptance criteria for developers? If you insist on including such a person on the team, please teach them to think technically.

Whether you choose Agile, Waterfall, or another methodology, respect the importance of documentation and planning. Do not provide an estimate until a substantial portion of the plan is finalized.

For each iteration, clearly define the goal before starting. We cannot effectively plan and code simultaneously; this leads to subpar products. (broken games, apps, etc...)

Software development has become a laughingstock, and we can expect more failures like the CrowdStrike incident on July 19, 2024. This should serve as a wake-up call to remove non-technical individuals from leadership roles.

In summary, slow down. Prioritize planning and documentation without strict deadlines. Once the plan is solidified,implement your chosen sprint length and let teams work independently. Occasional status checks are acceptable, but daily stand-ups are unnecessary.

If you want to implement Scrum with a two-week sprint, that's fine. However, please ensure tickets are detailed with clear requirements. Vague acceptance criteria often lead to subpar user experiences.

I'm skeptical of Agile due to its open interpretation, which can lead to inconsistent implementation. Humans tend to follow rather than think critically, resulting in toxic Agile/Scrum environments filled with excessive meetings.

Perhaps you'd be interested in exploring the Thiago Manifesto for a different approach to project management?

  1. Begin writing comprehensive documentation, involving technical staff to validate content. Create detailed outlines for each component. For example, if developing a login/registration flow, document the entire process from start to finish.
  2. Once requirements are finalized, create tickets with detailed acceptance criteria for each team. Encourage open discussion and pushback during ticket reviews. Allocate dedicated time for this process, ideally providing ample time for thorough evaluation.
  3. After ticket finalization, allow development teams to prioritize tasks independently rather than relying on executive or management decisions.
  4. Minimize frequent status updates and unnecessary meetings. Issues should be addressed through direct communication from developers to management or self-reported updates.
  5. Implement a robust QA process to identify bugs early in development.
  6. Developers should write comprehensive unit tests and other appropriate automated testing mechanisms.
  7. Allocate sufficient time for code reviews, allowing developers to provide thorough feedback without rushing.
  8. Maintain a continuous QA process throughout development, regardless of imposed timelines.
  9. Prioritize production issue resolution over new feature development. Monitor user feedback and address issues promptly.

I understand some of you may think it's unreasonable to avoid providing strict timelines, but perhaps the software industry isn't the right fit for you. Consider investing in fields where work can be measured in seconds, like aerospace or civil engineering. Stop compromising product quality and relinquishing your executive position.

Revision 0.4 - Alpha (don't use my manifesto with your team yet)