Using ALM to Solve Your Software Project Challenges

2015-11-05-1446751693-8265758-KevinCastle.pngKevin Castle is partner and CTO of Technossus, a technology consulting firm. Castle is instrumental in every major healthcare project the company tackles, including private and public healthcare exchanges, clinical trial management systems, and other biotech solutions. He's contributing to the fight against cancer, creating systems aiding in the processing of more than 40,000 cancer detection reports. Castle also volunteers for the Boys & Girls Clubs, creating a software education plan that will help kids advance into high-paying technical jobs.

If you work anywhere near software development, chances are you've seen the acronym "ALM," but do you know what it really means? If you answered anything other than an emphatic "yes," keep reading.

ALM stands for application lifecycle management, a methodology for creating, supporting and enhancing software. At my company, Technossus, we deliver software solutions -- more than 500 projects, and more than 350,000 hours for over 80 clients to date. When we founded the company, we knew there were plenty of consulting firms that had great programmers. But tying great technical skills to a repeatable, predictable methodology doesn't happen often in software development.

ALM is the framework that enables us to deliver project after project successfully. But what's ALM, really?

Consider those horrific statistics concerning the failure rate of software projects. ALM is aimed squarely at driving those failure numbers down by making software engineering more like traditional engineering -- a craft with well-defined best practices, standards and processes that deliver predictable, repetitive, successful results. But there's no single way to implement ALM, as no standard currently exists to define what constitutes as "right" or "wrong" ways to manage software development.

Instead, an array of methodologies exists that, in theory, can allow for effective ALM. Take Scrum, for instance. It's an implementation of the agile methodology and is certainly an option; "traditional" waterfall development is another. ALM is a process and, more importantly, a mindset.

How ALM Helps Solve Problems

At my company, consultants work as teams on client projects. Every project has plenty of moving parts that hopefully lead to a successful outcome, but in the real world, unexpected issues arise. Teams must be prepared to handle the "unknown unknowns."

By using clearly defined ALM processes to drive software development teams, individual roles are better understood, as are the ways in which tasks should be completed. ALM defines clear expectations of all participants so everyone knows what to expect, and people can be brought onto projects quickly to "form, storm, norm and perform" right away.

When the process defines your team's basic operations, they can reserve their energy for completing tasks -- and have the mental and emotional bandwidth to solve those unexpected issues. Other benefits you can expect from implementing ALM include:

High-quality work. Employees' and customers' perceptions of your company suffer when features don't work as expected, releases are full of bugs or outages are commonplace. When leaders decide to tackle projects and disregard surefire processes for success, they'll get low-quality outcomes that won't make anyone happy. Applying a well-defined ALM methodology to create focus can address quality concerns and software defects before they happen.

My company's ALM processes build quality assurance (QA) time into project planning from the start. We identify the necessary steps for the team to engage at product inception, so they can take the product successfully through completion and beyond. Our QA focus includes tooling standardization, reporting standardization, and laying out and monitoring key quality indicators throughout the project before a customer even interacts with the system.

Faster delivery. ALM methodologies like agile or Scrum define clear approaches to development. Both allow for frequent customer feedback, new ideas or simple requests to be rapidly incorporated into the development lifecycle to make sure a team stays on top of customers' needs. Users don't always know precisely what they want on day one. Agile and Scrum emphasize frequent releases during and after development. By putting working software in front of users early and often for feedback, you can ensure you know what they really want -- and deliver on that faster.

We've leveraged Scrum to launch tech startups. This disciplined methodology has enabled us to deliver working applications with production-ready code in months. Customers are able to view functionality early and provide feedback to guide future releases.

The ability to know what's really going on. ALM provides standardized metrics and reporting to give stakeholders clear, consistent assessments of software development initiatives. At my company, the consistency of metrics and reporting defined by our ALM process means we can review metrics across all of those projects to identify patterns and trends. By using a standard approach with each project, we're able to look at everything from a wider lens. Then, we can ask the right questions based on data. 

In software development, it's common to track defect density per line of code, estimation accuracies, defect reactivations, project financials and root causes of overruns. These provide objective measures of success. When combined with soliciting and capturing actual customer satisfaction feedback, they provide a holistic view of our performance.

A healthier budget. A more predictable IT budget is a significant value. Establishing an ALM methodology provides a foundation for optimized spending. Repetitive, defined processes allow software to be delivered on time and within budget. These metrics guide teams toward accurate estimations upfront and lead to effective delivery management throughout the project. Common companywide metrics for project estimation and tracking provide an objective measure for teams and team leaders to assess their delivery efficiency and estimation accuracy. This creates more confident timelines and more effective budget use.

Using ALM, my company sees successful projects, happy teams and strong partnerships. This isn't a coincidence. Partner with companies that are serious about methodology and consider how ALM can improve your organization. You'll take your software development from painful and chaotic to predictable and successful in no time.