Skip to content

Software Delivery with Containers

Imagine deploying and running your applications and services in an environment that is fully-automated, self-healing, and scaled based on incoming demand, in the blink of an eye, on a footprint smaller than any virtual machine (VM) on the market.  Technology companies, such as Google, have been doing this for well over a decade.  This platform is called a container and it is the biggest revolution in DevOps to date.

Read more

Enhancing Software Testability

Keeping your customers happy depends a lot on your team’s ability to deliver (and sustain) a high-quality product.  And to ensure high quality, you must effectively validate your software artifacts against the functional (and non-functional) requirements of your system.  In many of my classes, I often talk about testability being an essential quality of good software.  But what exactly do we mean by “testability”?

Read more

Managing Technical Debt

The manner in which technical debt is managed can give a company a competitive advantage when it’s most needed or destroy a well conceived product.  When incurred properly, technical debt can greatly decrease time to market, providing a short-term advantage over the competition.  But if that debt is not paid off quickly, it will slowly, yet surely, erode the quality and the value of your software.

Read more

Recent Articles


Why Bother With TDD?

Does it really make sense to test code that hasn’t even been written yet?  Or to disrupt your development mojo every minute to stop, write tests, and refactor code?  It does if you want to deliver software faster, through better code, with fewer defects, and greater agility.  As software development leaders, it is important to understand that Test Driven Development goes well beyond quality control. Read more »


Branching for Team Agility

High performing Agile teams are always expected to deliver multiple features within an iteration.  To do this effectively, you must have a configuration management process and branching strategy that support concurrent feature development.  Being able to develop features in isolation will enhance your team’s ability to deliver value to your customers quickly while helping to improve quality control. Read more »


Agile Is More Than Process

There is more to Agile than estimating stories, collaborating with customers, and showing working software.  Agile is also about technical excellence.  And this is where many Agile teams drop the ball.  All too often, teams focus too much on process and not enough on technical practices.  If the effort, complexity, and risk is too great for your team to extend and maintain their software, they will struggle to Read more »


Scrum Methods: Planning for Value

Steve Jobs was obsessed with providing the best user experience to his customers.  Because, above all else, that is what they valued most.  He was the grand master at delivering value to his customers.  Not necessarily in terms of dollars, but in terms of what they wanted.  And while technology helped get him there, his focus was always on exceeding the expectations of the user. Read more »


Hacking To Build Secure Apps

If recent headlines aren’t enough to convince you as to the importance of security, consider how much time and money your company will spend in response to a data breach, and the damage it will cause to your company’s brand and reputation.  Some larger companies have spent over a billion dollars recovering from a hack that only lasted a few minutes.  Chances are pretty good that your company does Read more »


Agility with OCP

Decreasing time to market is often why many teams adopt Agile. But realizing this value requires discipline in development processes, as well as in development techniques. In order to release small, incremental pieces of functionality often, your software must be easily extensible. Following the Open/Closed Principle (OCP) is one of the best ways to ensure that you can easily and quickly extend your software Read more »


Building Success with CI

Continuous Integration (CI) is one of the best methods for promoting increased productivity and higher software quality while effectively supporting Agile practices. Development teams that are good at CI have a high confidence level in their software that resides in source control. And through automated testing and associated metrics, they have a good understanding as to the quality of that code. Read more »


Quantifying Software Quality

As software development teams look for ways to improve their products and services, they often look at improving time to market, better prediction of release schedules, improving customer satisfaction, and raising overall software quality. Software “quality” can mean a lot of things to different people. But quality goes way beyond how well a product functions or how many bugs it contains. Read more »


The Absence of Commitment

Back in 2011, Ken Schwaber and Jeff Sutherland, the established authorities on Scrum standards, replaced the term commitment with forecast within the official Scrum Guide. While this may seem like a minor, irrelevant change, the implications are indeed significant. Read more »


Conducting the Technical Interview

With a shortage of technical talent, many of us are competing to find and hire the few technical rock stars out there.  And among those rock stars is a lot of mediocre talent trying to capitalize in a very good job market.  It’s hard to blame them for wanting a slice of the pie, but as leaders, we need to wade through the mediocrities to find those who can effectively support our development goals.
Read more »