php-best-practices

What I consider the best practices for web and software development.


Back to team work

Agile

Continuous feedback

A healthy environment of openness and honest feedback among team members is critical for a team to learn and adapt quickly in order to perform at their best potential.

Minimize the scope of your tasks

Try to minimize the scope of your working tickets to the minimum value that could make sense, in term of deployability.

Keeping in mind a small and concrete goal to achieve by the given ticket description helps you to focus on the Acceptance Criteria that the tickets ask you to complete.

There is an excellent kata/exercise to train exactly this, it’s called “Elephant Carpaccio”.

Agile software development values

  • Individuals and Interactions over processes and tools
  • Working Software over comprehensive documentation
  • Customer Collaboration over contract negotiation
  • Responding to Change over following a plan

Manifesto for Agile Software Development

Agile software development principles

  1. Customer satisfaction by early and continuous delivery of valuable software.
  2. Welcome changing requirements, even in late development.
  3. Deliver working software frequently (weeks rather than months)
  4. Close, daily cooperation between business people and developers
  5. Projects are built around motivated individuals, who should be trusted
  6. Face-to-face conversation is the best form of communication (co-location)
  7. Working software is the primary measure of progress
  8. Sustainable development, able to maintain a constant pace
  9. Continuous attention to technical excellence and good design
  10. Simplicity—the art of maximizing the amount of work not done—is essential
  11. The best architectures, requirements, and designs emerge from self-organizing teams
  12. Regularly, the team reflects on how to become more effective, and adjusts accordingly

Extreme Programming Values

Extreme Programming (XP) is based on values. The rules we just examined are the natural extension and consequence of maximizing our values. XP isn’t really a set of rules but rather a way to work in harmony with your personal and corporate values. Start with XP’s values listed here then add your own by reflecting them in the changes you make to the rules.

Simplicity

  • We will do what is needed and asked for, but no more. This will maximize the value created for the investment made to date.
  • We will take small simple steps to our goal and mitigate failures as they happen.
  • We will create something we are proud of and maintain it long term for reasonable costs.

Communication

  • Everyone is part of the team, and we communicate face to face daily.
  • We will work together on everything from requirements to code.
  • We will create the best solution to our problem that we can together.

Feedback

  • We will take every iteration commitment seriously by delivering working software.
  • We demonstrate our software early and often then listen carefully and make any changes needed.
  • We will talk about the project and adapt our process to it, not the other way around.

Respect

  • Everyone gives and feels the respect they deserve as a valued team member.
  • Everyone contributes value even if it’s simply enthusiasm.
  • Developers respect the expertise of the customers and vice versa.
  • Management respects our right to accept responsibility and receive authority over our own work.

Courage

  • We will tell the truth about progress and estimates.
  • We don’t document excuses for failure because we plan to succeed.
  • We don’t fear anything because no one ever works alone.
  • We will adapt to changes when ever they happen.

References

Books

  • Extreme Programming Explained: Embrace Change (Amazon) [English] by Kent Beck, Cynthia Andres
  • Clean Agile (Amazon) [English] by Robert C. Martin