Canary Releases

Screening your software to ensure it's ready for prime time.

Learn More
DevOps

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.

subject Read Article
DevOps

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.

subject Read Article
Craftsmanship

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”?

subject Read Article
DevOps

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.

format_align_left Read Article
DevOps

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.

subject Read Article
DevOps

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.

subject Read Article
Craftsmanship

Planning for Failure

Quality software is built around the expectation of failure.  To deliver reliable software, you must always plan on things breaking.  In designing and building software for critical systems, such as air traffic control or nuclear power plants, runtime reliability is absolutely critical.  And while human life may not hang in the balance of a business application, the life of the business may.

subject Read Article
Agile

Scrum Values:  Predictability

As Scrum becomes ever-so-popular among software development teams, some people may actually wonder why.  Certainly increased productivity and improved quality are on the list, but predictability is a huge benefit that is often over-looked.  Whether your product development is driven by schedule, scope, or budget, being able to accurately and consistently predict when a set of features will be done is often critical to a successful product launch.  And considering how often Waterfall projects miss their mark, it should be no surprise why Scrum has been so successful.

subject Read Article
Agile

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 with new functionality while maximizing the value of Agile.

subject Read Article
Management

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.

subject Read Article
Management

Conducting Effective
One-on-Ones

As a manager, you are faced with a variety of responsibilities and expectations, from above your position and below, that need to be fulfilled every day.  Through all the challenges and roadblocks, you need to drive your team(s) to deliver results while retaining and growing your team members.  But if you don’t have good relationships with your people, you will struggle to achieve these goals.

subject Read Article
build Craftsmanship

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
directions_run Agile

Adding Spikes to Gain Knowledge

Planning an Agile project can be rather simple when all is known. When the market is predictable, requirements are clear, the technology is well understood, and the team is experienced in using all of the required tools, there isn’t much research required to complete a project.  But for those times when all of the stars are not aligned and (God forbid) there is something the team does not fully understand, the team will need to dedicate some time to investigation or experimentation in order to complete the project. 

Read More
directions_run Agile

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 deliver functionality to their customers at the end of each iteration.  They will struggle to deliver working software as promised.

Read More
directions_run Agile

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
directions_run Agile

A Dozen Ways to Fail at Scrum

Scrum provides a process framework to help realize the benefits of Agile principles.  The value of Scrum has been demonstrated many times, on numerous projects, throughout various industries.  It is a fairly simple and straightforward set of practices and guidelines that will (usually) result in greater adaptability to change, improved productivity, high quality products, and happier customers.

Read More
directions_run Agile

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

Doug Klugh

Software Craftsman

Software Development and DevOps Leader, Microsoft developer, and Agile Coach.

;