Agile Gnostic

Introspection to Lean, Agile, DevOps and Project Management !

Four Facets of Agile – Part 3 (Tools and Technologies)


This is the last post in the series of three posts in which I am writing on my introspection to the facets of agility in Software Development. As seen Agility cannot be achieved just by following the textbook prescribed approach. Following are the four agility facets –

  1. Agile Values and Principles
  2. Tools and Technologies

In the Part-1 of the post, I described on the a) Agile Values and Principles and b) Agile Mindset and in Part-2, I touched upon various Agile Practices. In this post, I am covering the fourth facet to Agility – Tools and Technologies.

Tools and Technologies

Very first value as described in Agile manifesto says – ‘Individuals and interactions over processes and tools’, which emphasize upon giving more importance and value to individuals involved in software development and their interactions; over the processes followed and tools being used. Let’s assume, we have highly empowered, trusted, self-organizing and multi-functional team with great ‘Agile mindset’ and leadership as described in first post. But following are some obvious questions that when we introspect  them further –

  • Can we achieve the level of agility by just having great Agile mindset?
  • Can we achieve the great level of interactions among project teams without utilizing the available tools and technologies? What if teams are working from different geographical locations in different time zones?
  • In fact, can any of the highly important Agile Values – delivering ‘Working Software’, effective ‘Customer Collaboration’ and quickly ‘Respond to change’; be achieved with greater agility optimally without using the ‘tools and technologies’?

The need for having defined processes, which obviously need continuous improvements and utilizing tools and technologies effectively in Software Development cannot be thought of without appropriate use of tools and technologies. From the point of Agile adaption and transformation to attaining optimal agility, tools and technologies have become the integral part in many forms. Examples such as – software engineering and development, project tracking and monitoring, defects tracking, and testing automations etc. The tools are getting more and more important in the organization due to various reasons as explained.

“At times it appears that do really ‘Individuals and Interactions’ should be valued more than ‘Processes and Tools’, because the items on right are the real enablers to the items on the left.”

Agile Tools and Technologies

Which are the area where we can’t work without using Tools & Technologies

  1. Application Life Cycle Management (ALM) – bunch of tools available that are used to perform multiple functions in product development life-cycle.
  2. Team Collaboration and Communication – quite important to enhance team’s productivity though information sharing, collaboration and communication. In case of ‘distributed agile team’ working from different geographical locations and time zones; use technologies enabling effective collaboration and communications can not be ignored. Please refer the related post as explained in ‘Bringing Agility To Distributed Team‘.
  3. Agile Project Management – for project planning, scheduling, monitoring, execution, tracking release and deliverables timeline, quality metrics, progress and status reporting etc. – multiple tools available without which it would be difficult to manage the program and projects.
  4. Requirement Management – consolidated requirement management from elicitation to implementation and rollout. Using requirements (epics, features, user-stories) elicitation to implementation, and tracking are made easy by using the tools.
  5. Software Configuration – help easily maintain multiple code versions, check-in/out, branching, merging etc.
  6. Code Development Environment – mostly the Integrated Development Environments (IDEs) are used to write and compile code. Many IDEs comes with multi-function capabilities required for software development life-cycle.
  7. Unit Test Automation – there are xUnit set of utilities that are widely used across technologies stacks (Java, .NET etc.) for the purpose to write and perform unit tests. Automating unit test helps to improve code quality by  testing lower level logical flow / paths in recurrence.
  8. Code Quality Analysis – used for automated code review, verify code coverage and code complexity; which helps to write better quality code, reduce human dependencies in order to ascertain code quality.
  9. Continuous Integration and Build – facilitates quicker and frequent, fault-tolerant, tracing of code/components integration and builds. It can also trigger automated testing, error reporting,  logging and deployment.
  10. Agile Testing – used for end-to-end automation of systems for integration, acceptance, regression, performance testing etc. Though it’s not easy to automate every tests but higher the degree of automation, higher the rate of delivery with better quality. Many tools come with capability to write and automate differentiate kinds of testing.
  11. Continuous Deployment – automated release and deployment to various environments – test, staging/pre-production, production environments. It can also triggered running post deployment automated testing.
  12. Defects Management – apart from many ALM tools that comes with inbuilt defect management, there are many defects/ issues management tools used to track the life-cycle of defects found in any test or production environment.
  13. Knowledge Sharing – platform where product related technical and functional information can be shared, discussed, clarified and publish guidelines, standards, status reporting etc. Knowledge Sharing can happen via SharePoint portal, Wikies and Blogs etc.
  14. Environment Provisioning – the need to provision multiple environments – development, testing, staging and production required automation which is possible through tools and technologies. The virtualization and cloud computing made this even simpler with automation which are very effective and need for agility.
  15. Continuous Monitoring – while in production applications need continuous monitoring for fault reporting in order to provision the fault-tolerant system and rapid remediation.

The importance of tools and technologies has become very critical from the following aspects as well –

  • The environment and organization structure in which software development happens are distributed – team locations and time-zones (onshore-offshore teams), large  and multiple team working on same product, and involvement and collaboration with different stakeholders and customer.
  • The specific requirements of products / projects – like data security, compliances, performance etc.
  • The iterative, frequent, and holistic testing required – which without automation and without using tools would become very time consuming, error prone, costly, and sometimes impractical and impossible from time and complexity point views.
  • The reporting and monitoring need – the need for having various progress status reports, metrics, and project visibility to project stakeholders. Using specialized ALM tools gives mostly different kinds of such reports / metrics.
  • Great people and need for innovation to be supported by environmentby having robust tools and technologies for sustainable pace

Conclusion:

It’s saying that – “You can’t do Agile, you can be Agile!”. But even to be Agile you need to give equal importance to all the four agility facets described earlier.

“There is no shortcut or big bang approach to be Agile.”

The true agility can be obtained slowly and steadily. It’s only possible with appropriate application and implementation of these four facets of Agile.

Advertisements

2 responses to “Four Facets of Agile – Part 3 (Tools and Technologies)

  1. Pingback: Four Facets to Agility Are Applicable To #DevOps | Agile Gnostic

  2. Pingback: Agile reborn in new Avatars! | Agile Gnostic

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: