A methodology for team work

Agile Software Development is a group of principles created on the idea of collaborative effort and self-organized cross-functional teams.The purpose of creating this set of principles was to make development an evolving process where the teams could improve continously and deliver the product earlier. The main idea is to develop software while helping others, that way everyone limproves and learn new skills.

The methodology was formulated in 2001 in the Manifesto for Agile Software Development. Before setting the principles, they thought about the main ideas wrapping these principles. The first one is about individuals and interactions, everone has to be self-organized, this means that nobody tells you what to do, you control your work. The second one is about working software, when you are presenting your product to the clients it´s more useful if you show them the software working instead of just documents that say how it will be. The third one is about customer collaboration, it´s very important that you have open communcation with the customer so that the final product fulfill their requirements, for that is very important that the customer can participate in the developing process of the product. The fourth and last one is about responding to change, non stopping developing and quick responses. 

Now that the main ideas are set, we can start dictating the 12 principles:
  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 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 principal measure of progress
  8. Sustainable development, able to maintain a constant pace
  9. Continuous attention 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  
This methodology remind me a lot at how the hackathons or programming competitions works, you have a small team and have to do the most you can in a very reduced set of time. If it is a hackathon, it is valid to ask help to other teams or to ask for guidance to the mentors that are close. I like the methodology because i feel that i´m not limited to what a corporative says, they let me and my team be cretive and work freely with our own ideas. Also, i think that it´s easier and faster to work in teams. Easier because if i´m stuck in a problem or i don´t know how to do something i can always ask to my parters without fearing the typical answers like "What? You should already know that" or "Sorry dude, i´m working on something else". It´s not about letting others do my part but about being open to correction and improving thanks to the help of others. It is faster because everyone is working on the same thing at the same time. It´s not the same to work on a program alone and building every part of it by your own than working with others to build the same stuff better. Also, again with the think of not knowing something, if you don´t know how to do something you don´t lose time googling it, reading, learning it for your own; you can alwasy ask for help, you learn faster and apply the knowledge instantly. Agile Software Development it´s a great methodology that breaks the classical working structure and let people to work collaboratively with others to make better software easier and faster.

Thanks for reading. As always, here is another music video:


source:
https://en.wikipedia.org/wiki/Agile_software_development
https://www.agilealliance.org/agile101/what-is-agile/