This article deals with an idea that I believe to be one of the key concepts of modern programming. When I say modern, I'm referencing to methodologies that re-appeared with hype names and excessive power during the second half of the 90's and the beginning of the 21st century as an answer to the bureaucratic, slow and heavy regulated methods in use at the time. As some of their examples are: ASD(Adaptive Software Development), DSDM (Dynamic Systems Development Method), Scrum, XP(Extreme Programming) among others...
These methodologies, that were known as lightweight methods until year 2001 and then became the Agile Software Development, have some aspects in common. At first, they were "born" from the developers necessity to focus more on the product in which they're working on than in hard processes related to development. It means that, unlike the classic long-term strategies and specifications that predict and document the entire project from the beginning to the end, the development is made in small iterations, with minimal planning. Another important factor is that these methodologies are in favour of face-to-face communication rather than written documentation among the team members (which are small, around 5-9 people). Third and most important to all programmers, in my humble opinion, is the constant execution of automated tests in all steps to ensure the quality of each small unit of code they generate.
Despite being an interesting topic, I'll stop my wondering here, because it's not my goal to teach techniques to manage software teams, but to teach one of the things that all of those techniques will be require you to do. Before anything, I want to remind you that a programmer will always program, so that doesn't matter too much what methodology is adopted by the company where you are working on. For fun, below is a strip from Geek Hero Comic that was kindly provided by the author Salvatore Iovene for this article:
For those who don't know yet, this is the third article of a series that I committed myself to write. Here is the list of articles:
- ASP, a misinterpreted technology
- Event-Driven-Programming and lambda function in ASP/VBScript.
- TDD (Test Driven Development) in ASP/VBScript.
- Languages: Based on Objects and Object Oriented.
- Object Oriented in ASP/VBScript "Hackers way".
- "Scripting Components", the ace in the role.
- Caching: the concept of DRY (Don't Repeat Yourself) applied to ASP.
If you're reading one of my articles for the first time, I strongly recommend that you read the previous ones first, because I'm trying to lead you into a great abstraction, presenting the topics incrementally.