In one of my favorite books , I read something concerning:
“In the Standish Group’s 2011 CHAOS Report found that more than half of software projects conducted between 2002 and 2010 were either de- scribed as challenged or complete failures; just 37 percent were classiﬁed as successful”
21% of these projects failed and 42% were challenged, and this is the real challenge.
We are wasting money, resources and time on bringing solutions and applications to the market just because we are not using and agile way to work.
Why are you not using AGILE? There are not excuses for don’t use agile methodologies anymore, and it is not anything new, as AGILE methodologies have been living with us during the last 10 years.
Still, when I’m visiting many of my costumers I see unstructured teams, following old methodologies like Waterfall or dinosaurian ones like CMMI in short projects. But when you have to talk about have a model adaptable, fast, responsive, incremental, collaborative and when you are realizing that 1 of every 2 projects that you are delivering have delays, causing low morale to your team and also you are struggling adapting to the constant changes from your customer,…. then is when you have to rethink on your strategy and maybe move to an AGILE approach.
Use an AGILE methodology like Scrum, doesn’t mean that we have to forget writing the documentation or do the planning on demand but it means that you have to be focus on the most important part of the project, the software.
We have to go back some years to 2001 when the Agile Manifesto was introduced. Since then, the Agile Movement, with all its values, principles, methods, practices, tools, champions and practitioners, philosophies and cultures, has significantly changed the landscape of the modern software engineering commercial software development in the Internet era.
The meanings of the manifesto items on the left within the agile software development context are:
- Individuals and interactions – in agile development, self-organization and motivation are important, as are interactions like co-location and pair programming.
- Working software – working software will be more useful and welcome than just presenting documents to clients in meetings.
- Customer collaboration – requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important.
- Responding to change – agile development is focused on quick responses to change and continuous development.
The Agile Manifesto is based on twelve principles:
- Customer satisfaction by rapid delivery of useful software
- Welcome changing requirements, even late in development
- Working software is delivered frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the principal measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Self-organizing teams
- Regular adaptation to changing circumstances
There are hundreds of thousands of developers world wide using Agile methodologies since then. There is no the right one, each one will be better for you and your team depending on your way to work, projects, timing, but all of them share the same principles.
Well-known agile software development methods and/or process frameworks include:
- Adaptive Software Development (ASD)
- Agile Modeling
- Agile Unified Process (AUP)
- Crystal Methods (Crystal Clear)
- Disciplined Agile Delivery
- Dynamic Systems Development Method (DSDM)
- Extreme Programming (XP)
- Feature Driven Development (FDD)
- Lean software development
Just to finish these remarks, let’s introduce briefly ALM, as in Wikipedia is explained:
Application lifecycle management (ALM) is the product lifecycle management (governance, development, and maintenance) of application software. It encompasses requirements management, software architecture, computer programming, software testing, software maintenance, change management, project management, and release management.
This means that Modern Apps need a Modern Lifecyle, and for me here there is only one Winner, Visual Studio.
First) Because Microsoft is providing you a full set of integrated tools that cover the whole development cycle, and yes, INTEGRATED. It means that you don’t have to be installing tools from different vendors but also, if you want to install them, they will be integrated with the Visual studio Suite.
For example, I remember some of my projects in my previous company, Symphony Teleca, where we were implementing Scrum using “Open Source/Non Microsoft/Almost free” tools. For the source repository we used GIT (very good btw, truly recommendable), JIRA, Sharepoint and txt files 🙂
Our main IDE was Visual Studio, which you can integrate manually with GIT, but not with JIRA (there is a plugin from atlassian but very immatture and when you want to go for something more effective they are hidden costs on this “freeware” version), and the rest of the systems are disconnected. The TDD environment was isolated of the management and reporting tools and the team was also working in a “ghost” collaborative mode.
Nevertheless, opting by the Visual Studio approach, you get the full ALM cycle covered:
– Set up: Set up TFS, create a team project, and add team member accounts.
– Test: Test your application..
Also, Visual Studio includes some of the most common AGILE frameworks templates included like Scrum, CMMI, and Agile. But we will talk about TFS and Visual Studio in other posts.
Here some good readings about Agile methodologies to start the week with something new, I hope you like it: