Agile Programming

agile-methodology

There’s a few ways of working when you’re involved when working in a software engineering environment. A big one is the agile manifesto. Although it sounds kind of weird, it’s a actually a quite straight forward way of working. In the manifiesto there’s 4 important values:

Individuals and interactions. To focus on the people that are working rather than int the processes or tools that are being used in the project.

Working software over comprehensive documentation. Personally I find this very important. In big projects that I worked before, my team and I couldn’t really deliver an optimal product due to the fact that documentation was in a bigger priority than the project itself.

Costumer collaboration over contract negotiation. Costumer interaction can be quite tricky some times. Some times, when a client asks for a certain product the people producing it can finish it, give it to the client but the client will have complains or will want to make changes to the now already finished product. Maintaining a constant costumer collaboration ensures that this kind of stuff doesn’t happen, there’s less time being wasted, and the client can be more satisfied with the result.

Responding to change over following a plan. Something that we can take for granted always is change. It’s very rare when something goes exactly how it was planned. Because of this, it’s really importante to keep a mindset ready for anything to change, so that the flow and work in the project is not affected so much.

Now, from this 4 values 12 principles came out in order to optimize the development of software.

  1. Customer satisfaction by early and continuous delivery of valuable software
  2. Welcome changing requirements, even in late development
  3. Working software is delivered frequently (weeks rather than months)
  4. Close, daily cooperation between business
    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 principal 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. Best architectures, requirements, and designs emerge from self-organizing teams
  12. Regularly, the team reflects on how to become more effective, and adjusts accordingly

With this in mind it’s also really important to remark that agile programming works through the use of short term goals. This is so that the developers finish fast, show it to the client, get feedback, and quickly make adjustments.

So when you use this method, remember to be the Usain Bolt of software development.

Thanks for the colaboration Alejandro.

Image from: http://www.careermetis.com/the-heuristic-method-of-learning/