What does it mean to be Agile?

I started working on a contract with a local software company where I am helping them adopt Scrum.  I’ve been “Scrumming” for over 2 years (yes, I am a ScrumMaster) and I really enjoy this type of work.  I’m not doing any coding (that’s what my nights are for), I am pretty much helping them put the process in place and coaching them as they try to get a grip on the new methodology.  So as I’m going through the process, I am realizing more and more that just because you are following an agile process, it doesn’t mean that you are Agile.

Being Agile means different things to different people, as a self-organizing team, the team is responsible for adopting agile software development techniques that will help them improve on what is delivered to the product owner as a sprint completes.  Examples of agile techniques include:
–    Test-driven development: Unit test cases are coded in order to execute new functionality.  Anyone can run the test cases at any time and verify that new functionality doesn’t break existing test cases.  Unit test cases can then be automated and executed as part of a build.  This practice does not do away or QA testing as it a developer’s responsibility to look after and run the test cases.  Test-driven development calls for a “test first” approach to development, but this can be adapted to include a unit test as part of the code deliverables.
–    Refactoring: Code duplication is avoided by consolidating and relocating duplicate functionality.
–    Continuous integration: As code is checked-in, a build automatically kicks off and the team is notified of any errors.  The build includes unit tests, and can run anywhere from nightly to as soon as the code is checked in.
–    Coding standards: Coding patterns and naming conventions are established and adhered to by the team, which makes cooperation between team members a lot easier.  A developer does not need to familiarize him/herself with the coding practices of a sub-system if the same standards are followed by everyone.
–    Automated acceptance/regression testing: By automating some of the regression testing, the team can spend more time testing new features and further automating testing.  A repeatable process is important to insure better quality in future releases.

The Agile Manifesto tells us that these are the values of Agile Development:
–    Value Individuals and Interactions  over Processes and Tools
–    Value Working Software over Comprehensive Documentation
–    Values Customer Collaboration over Contract Negotiation
–    Value Responding to Change over Following a Plan

 

So, there is a lot more to Agile than just adopting a process, but it’s a great start!

About esteban

Esteban is the Founder and Chief Technologist at Nebbia Technology, an ALM consulting and Azure-powered technology company. He is a software developer with a passion for ALM, TFS, Azure, and software development best practices. Esteban is a Microsoft Visual Studio ALM MVP and ALM Ranger, Pluralsight author, and the president of ONETUG (Orlando .NET User Group).

One thought on “Error when installing SQL 2008 on Windows Server 2008 R2 (64 bit)

  1. Mark Allen

    Another approach which works well is to have the XML tag reference a custom TFS group. In my case there is a master contributor group shared between projects so rather than list all the contributor users in the template AssignedTo list boxes I created a TFS group called ‘TeamAssignments’ and within security I referenced the team. Then in the templates I added the tag ListItem value=[project]\TeamAssignments. Now when anyone is added to the team they are displayed in the AssignedTo List box. This also means that another team can be created without changing the templates as the changes can be done in security.

    TFS Team Name: Blue (example set up in security)
    TFS Group Name: TeamAssignments
    Members: Team Blue


Leave a Reply

Your email address will not be published. Required fields are marked *

Are you human? *