Modern practices for software development and support are centered around four tenants of wisdom:
- Agile – a methodology based on iterative development
- Continuous Integration – frequent code commits, automated builds
- DevOps – increased collaboration between development and operations
- ALM (Application Lifecycle Management) – the management (governance, development, and maintenance) of software applications
In my earlier article, I explored the evolution of software development practices and how these new approaches have helped reshape and improve the quality, accuracy, and timeliness of software development.
Microsoft has invested heavily in creating tooling to support these modern techniques of software application lifecycle management. The company has embraced and promoted the capabilities of their products to support these strategies, so let’s take a look at what they actually offer, minus the jargon and marketing hype.
Microsoft delivers Application Lifecycle Management through two primary tools:
- Visual Studio – installed onto the machine of each team member, this IDE provide the interactive experience for managing code, performing design work, and building and running tests.
- Visual Studio Team Services (or Team Foundation Server for on-premise installs) – running in the cloud or on a server, this provides the centralized environment for collaboration tools.
One can be used without the other, although it is unlikely that teams using VSTS are not also using Visual Studio. Microsoft has also recently released Visual Studio Code, a free IDE centered around code editing. Considering that VSTS is free for up to 5 users, small teams can take advantage of Microsoft’s rich ALM eco-system with no financial investment.
Source Code Management
For decades, version control software has been an important tool for maintaining software code. CVS and Visual SourceSafe were once popular products, although they are rarely used any more. Subversion (SVN), an open source solution, became very popular, accounting for more than 60% of the market for version control systems in 2010. Microsoft released Team Foundation Server in 2005, with Team Foundation Server Version Control (TSSVC) in 2005, which many larger .NET projects favored due to its tight integration with Visual Studio and its easy-to-use experience. Also in 2005, Linus Tovalds, the creator of Linux, released Git, a distributed source control system. A revolution followed, in which the advantages of its distributed nature caused it to become the de-facto standard for open source projects. This was in no small part helped by the huge popularity of github.com, now known as the world’s most popular open source repository. Also, in 2005, a similar distributed source control system called Mercurial, was released, but it hasn’t achieved the same level of popularity.
In 2013, Microsoft added native support for Git to TFS and VSTS (then called Visual Studio Online), enabling teams to choose between TFSVC and Git for source control, depending on their needs. Fast forward to today, and Git is now the default option when creating a new repository.
Application collaboration software from Microsoft today looks very different from a few years ago. Team Foundation Services has been transformed into an Agile-centric environment, with a complete feature set covering all application lifecycle management needs. The agile tools are comprehensive, yet they remain easy-to-use. VSTS (and TFS) employ the concept of a process template for configuring the agile environment to your specific methodology. Three templates are currently available:
- Scrum is the simplest template, fully supporting the most popular agile methodology in use today.
- Agile is a slightly more advanced variation of Scrum, which should be used if your team tracks development and test activities separately. Unlike Scrum, which tracks remaining work only, Agile also supports tracking original estimate and completed work.
- CMMI, or Capability Maturity Model Integration, is used when a more formal project methodology is required, and includes features for process improvement, an auditable trail of decisions, risks, change requests, and reviews. This is required when doing work for the Department of Defense and U.S. Government contracts.
The toolset capabilities are very similar regardless of which process template is chosen. Differences are with regards to how work flows through the system and what information is captured about work items.
The key components of Microsoft’s agile tools include managing backlogs items, organizing current work as sprints, managing work capacity, and tracking progress on the current sprint using a Kanban board. Backlog items can be organized into epics and features. Everything is drag-and-drop friendly, and all the expected integration points with your code, bug reports, and external services are there. The experience is very visual, with dashboards, charts, cards, sprint burndown tracking, and the ability to create custom queries. There are also alerts, tags, and of course, comprehensive configuration and team management options.
By the way, in case you don’t know what a Kanban board is, it’s a Japanese word meaning billboard or sign. The Kanban board, in the context of agile, is a visual representation of three bins, where each current work item is represented as a card in one of the bins depending on its state: To do, In progress, and Done.
Continuous delivery capabilities are commonly used in agile development to optimize the repetitive work of building, validating, and deploying software. Now that most agile environments aim to release software every three weeks, automation tasks are very useful. VSTS includes full support of continuous delivery needs.
Automated release pipelines can be configured for multiple environments. Every time code is checked in, an automated process builds the software, automatically executes unit tests, logs bug items for issues, and deploys good builds into pre-determined environments. Workflow management provides review and approval control over the release to production environments. Automated performance and load testing can be configured. These capabilities (as well as other areas of VSTS) can be extended with third-party extensions and integrated with other processes through REST APIs.
A New Microsoft
While the preceding overviews of source code management, agile tools, continuous delivery, and application insights highlight key aspects of Microsoft ALM, there is a lot more I haven’t covered. The ALM tooling has evolved into a feature set of significant size. What is really nice is how well it all works together. Visual Studio, VSTS, and Azure each provide a rich set of standalone capabilities, but they also all work together seamlessly to optimize the experience for increased productivity and quality while minimizing cost overhead.
I am personally amazed at what Microsoft has been able to accomplish in the last five years. They have gone from a practice of doing it the Microsoft way and sort-of getting the web (but through a Microsoft-colored lens), to learning, using, and building a development, ALM, and cloud services platform that exhibits the leading edge of best practices, techniques, and open source ingenuity. To learn how this happened, at least in part, is a very interesting story…
In July 2011, the Developer Division of Microsoft announced a commitment to adopt Agile, specifically Scrum, internally. The division has about 4,000 people, working in hundreds of teams, each of 10 to 12 people. Surprisingly, we know now that this was not an outward commitment, with the same old development model wrapped in Scrum tools. Rather, this big corporation was able to change their collective mindset and restructure their entire development approach to Agile. To look at a day in the life of any team in the Developer Division, will reveal daily stand-ups, sprint planning, continuous integration, and regular releases. Microsoft used to have two distinct implementation phases: a coding phase and a test-and-stabilization phase. The problem was that they kept on discovering more and more bugs in the second phase and feedback on features that were not quite right. Software didn’t release on time, and bugs became change requests for a future release. This problem is eliminated with Agile, with the three-week sprints providing a steady rhythm that does not accrue technical debt. Microsoft also merged their development and operations teams. The team now owns the planning, execution, and delivery of each feature. The same team now writes the code, manages the deployment, fixes the bugs, and stops everything to resolve down-time or performance issues when they occur. They embraced continuous delivery, and built the tools necessary to make it happen.
Microsoft is living and thinking in Agile terms. They have created a connection to the customer that is close and interactive. For example, VSTS publishes their release timeline for features planned or under development. Customers can vote and comment on them. Every few weeks they blog about newly released capabilities – yes, they are releasing changes every three weeks. There are community forums, and there is the ability to submit an idea or report a bug. I personally reported an issue a few months ago in which there appeared to be no way to view the current sprint items in a hierarchical view by epic or feature (as there was in the general backlog area). I was surprised to receive an email the next day from one of the developers. We exchanged several emails about why I thought it was useful, and how it could best be implemented. The communication concluded with the developer agreeing with my proposal and adding it as a backlog item to the Visual Studio Team Services (and Team Foundation Server) backlog.
What Does Gartner Have to Say?
Gartner publishes market research reports on major technology markets. The Gartner Magic Quadrant is a high level view of this research that positions each player into one of four boxes across two axes: ability to execute and completeness of vision. Companies in the top right corner are recognized as leaders in the market. The bottom right are visionaries who understand where the market is going and have a vision for changing market rules but do but yet execute well. The top left are challengers who execute well today but do not demonstrate an understanding of the market direction.
The Gartner Magic Quadrant for Application Development Lifecycle Management places five companies in the top right quadrant. Microsoft and IBM lead, with Atlassian, VersionOne, and Rally also included.
The Gartner Magic Quadrant for Cloud Services places only two companies in the top right quadrant: Amazon Web Services and Microsoft.
Microsoft is the only company recognized for excellence in both of these areas.
Microsoft ALM is an eco-system spanning the Visual Studio dev tools, Visual Studio Team Services, and Azure. Their products are integrated seamlessly, have a perfect score for ease-of-use, embrace open standards, and provide rich extensibility options. In five short years, Microsoft has redefined their entire ALM toolset, embraced modern software development practices, and built a world-class cloud infrastructure. Their connection to the community and ability to respond to market changes is a testament to the success that an organization can achieve by fully embracing, living, and breathing an agile philosophy.
As a user of Microsoft ALM, it feels good to know that their entire development division is using the same software for application lifecycle management that I am using on software development projects. With Microsoft eating their own dog food in this regard, we are all benefiting from the use of an agile platform that is constantly delivering improvements that matter.