Skip to main content

Agile Practices

How will best practices for developing software evolve with AI? How you identify signal through the noise?

Traditional roles evaporate when solving fuzzy problems. The focus instead shifts to two main roles, customers and engineers.

Purpose

Software exists to help people solve valuable, real world problems.

You need to evolve flexible, trust-based, and speed-oriented approaches for tackling complex, fuzzy problems. Fuzzy problems require a different approach than traditional agile or waterfall methods. Complex problems are where cause-effect relationships are not clear, and best practices don't apply.

Learning Journey

The primary goal is to gain confidence, surface issues, learn faster, and design systems that scale well.

  1. Ask dumb questions. Ask a minimum number of "dumb" questions every day when you join a new team. It surfaces important issues others were too scared to ask about.
  2. Learn git really well and don't learn a codebase through the code tab, start in the PR tab to see what is changing and why.
  3. Learn git early. The confidence from realizing making changes isn't scary is huge.
  4. Make it deploy, then make it useful. Deploy code as soon as you make it before building out all the features. It makes debugging and learning much easier.
  5. Aim for simplicity, simple architectures and designs tend to scale surprisingly well compared to starting with complex ones.
  6. Interview a lot, at least once every 6 months. Companies have an incentive not to promote you, so you need to know your true market value by interviewing elsewhere frequently.

Flow of Data

Understand how data flows through a system, how it created, stored, what impacts it's change of state, and who/what needs to know about that.

  • Flow of Information: For information to be valuable it must be timely and actionable.
  • Flow of Progress: The smooth, uninterrupted advancement of a project. Principles include clear process logic, synchronization, and minimizing waste. Practical steps to achieve this include defining clear steps and responsibilities and coordinating tasks and timelines.
  • Flow of Value: The flow of value focuses on delivering maximum value to the customer with minimal waste. This involves value stream mapping, lean principles, and continuous improvement. Strategies include implementing lean methodologies and regularly assessing and improving processes.

Data is the new oil, and also must be clean to be valuable.

Teamwork

  • Managers serve the team: Management inversion is important, where the manager (or "concierge") works for the team rather than the other way around.
  • The age of agents is driving the need for new approaches. This involves programs running on behalf of users, making suggestions and assisting with tasks.
  • Speed is crucial in solving fuzzy problems. The competitive advantage comes from being able to try ideas out quickly and aggressively.
  • Trust is essential in creating a manager-less process. This includes trusting that programmers care, leaders will emerge, and problems will be solved without constant management intervention.
  • The organization should have a delivery focus, with everyone supporting the goal of getting code out the door faster.
  • Simplify Titles: Specialization institutionalized with titles can be a barrier. The speaker suggests creating new, more flexible titles for new projects to overcome this.
  • Lead via Action: leaders still contribute to coding and other tasks rather than being full-time managers.
  • Invest in Teamwork: Keeping teams together and bringing work to them is more effective than constantly reshuffling team members for each new project.
  • Progress: Appraisals and coaching should be separated in manager-less teams, with coaching preferably done by outside mentors.

What is the most important question you could ask yourself to make progress?