Create CLEAN Code

The Single Level of Abstraction Principle

It’s virtuous to separate out different perspectives in code because it helps make code more testable, extendable, and understandable. We want to use entities at the same level of perspective so that code is easier to read and understand code. The same thing is true within entities where we want to do tasks at the …

Read More
Integrate Continuously

Automate Deployment

Different people have different ideas of what it means to be Agile. For some, Agile means doing standup meetings and two-week iterations. For others,it means doing all the practices from Scrum, Lean, and Extreme Programming. For me, what it means to be Agile comes right out of the Agile Manifesto, which says: “Our highest priority …

Read More
Announcements

Agile Amped Podcast

Check out my Agile Amped Podcast at Agile 2016 on Creating Implementations of Intent and What Makes Great Developers Great.

Read More
Bits and Pieces

Linear versus Exponential

If I offered you a thousand dollars a day for thirty days, or a penny for the first day but I’ll double it every day for thirty days, which would you take? The former is a linear progression: 1000+1000+1000+1000… and the latter is an exponential progression: .01x2x2x2 . . . At the end of the …

Read More
Rants

Telling Smaller Lies

People like certainty but we live in an uncertain world. The future is uncertain and therefore it’s scary, so we tell ourselves stories about the future. We know they’re lies, but they’re good lies. They help us set our expectations. We can’t help but lie to ourselves. If we didn’t, if we had to live …

Read More
Rants

A Culture of Inefficiency

The web site Mental Floss recently reprinted a series of helpful instructions written in Japan for Japanese tourists planning to visit America (http://mentalfloss.com/article/55140/10-japanese-travel-tips-visiting-america). These ten sometimes funny, sometimes confusing bits of advice ends with this: “In Japan, there is great fear of failure and mistakes in front of other people. It is better to do …

Read More
Rants

Incentivizing the Wrong Things

History is full of examples of institutions incentivizing the wrong things. In 2007, in response to an increase in the population of wild pigs in the area surrounding Fort Benning in Georgia, the US Army sponsored a bounty program, paying local hunters from $25 to $40 per wild pig killed. All a hunter had to …

Read More
Rants

Creativity

In an industrial society workers perform rote tasks that are interchangeable with others so the faster a worker accomplishes his task the better a worker he is. That being the case, it’s not difficult to understand why so many industrial workers have been replaced by robots. But information workers are different. What we do requires, …

Read More
Bits and Pieces

Turn Pain into Gain

Integration is one of the most painful parts of a traditional software development process. After the system is designed and coded it gets integrated together in a Waterfall process, and this is when the nastiest bugs show their faces. It’s also when we really can’t afford to address fundamental issues. When I was doing Waterfall …

Read More
Bits and Pieces

Time Box to Scope Box

One key characteristic to Agile software development is time boxing. We build software in fixed intervals called time boxes. Time boxes for iterations are usually one to four weeks, with most teams opting for a two-week iteration length. Any fixed time iteration is going to be somewhat artificial. Software development tasks don’t all lend themselves …

Read More
Bits and Pieces

Test Driven Damage?

Understanding the technical practices of software development is not easy for everyone and a lot of otherwise smart people are failing when they try to apply them. Some people even claim that the practices I cover in my book, Beyond Legacy Code: Nine Practices to Extend the Life and Value of Your Software, don’t work. For …

Read More
Rants

People are not Resources

Whenever I hear a recruiter or a manager refer to a software developer as a “resource,” I cringe. People are not resources. Unlike assembly line workers, software developers don’t perform wrote tasks and so therefore they are not interchangeable nor are they scalable. In his book The Mythical Man Month, Frederick P. Brooks, Jr. writes …

Read More
Bits and Pieces

Assert Behaviors Through Acceptance Tests

Acceptance Test Driven Development (ATDD) is a relatively new but essential practice in software development. This practice goes by many names, including Behavior Driven Development (BDD) and Specification by Example. This practice is not to be confused with Test Driven Development (TDD) or other forms of testing. ATDD or BDD is something unique. And as …

Read More
Rants

The Single Wringable Neck

Every successful software development project I’ve ever worked on has had a Product Owner. They may not have been called by that exact title, but that was essentially their job. They were responsible for defining the product, prioritizing features, and answering the myriad of questions developers had as they built those features. The Product Owner …

Read More
Bits and Pieces

Smaller Tasks Have Big Benefits

A central benefit to Agile software development is breaking down tasks into the smallest component that can provide measurable feedback. When we do this we take complex tasks and simplify them by breaking them down into smaller, easier-to-handle tasks. Smaller tasks have four essential benefits: First, they’re easier to understand, which means they cost less …

Read More
Announcements

Dev.Cast

Dag König and I spoke on Dev.Cast 145 (http://www.buzzfrog.se/index.php/2016/05/dev-cast-145-will-we-ever-learn-to-develop-better-software/) about the state of software and its future, my book, and lots of other stuff. I was so excited that Dag could hardly say a word. But it was a fun podcast.

Read More
Bits and Pieces

Tell Stories

A story is a single sentence description of a feature. Stories tell three things about a feature: • What it is • Why it’s there • Who it’s for. Stories do not tell how to implement a feature or even what it looks like. Stories are very high level. Stories are placeholders meant to remind …

Read More
Announcements

Scrum Master Toolbox Podcast

I spoke with Vasco Duarte at Scrum Master Toolbox Podcast on April 18, 2016, on several different topics. Here are the five episodes topics: Monday (18 Apr 2016): David Bernstein on learning to break stories down Tuesday (19 Apr 2016): David Bernstein on the Us vs. Them mentality Wednesday (20 Apr 2016): David Bernstein on metaphor as a …

Read More
Bits and Pieces

Technical Excellence

Ten years after the Agile Manifesto was signed into being, the original authors got back together to review the progress made in the last decade. It was Jeff Sutherland who said, “Demanding technical excellence is a top priority for the next ten years.” But what is technical excellence? Given the state of the software industry …

Read More
Bits and Pieces

The Iron Triangle

There are three main constraints in manufacturing that are sometimes referred to as the “iron triangle.” These are scope, time, and resources. In manufacturing they say, “Pick two of these three things to flex, but one must remain fixed.” But this model does not apply to software development. Scope refers to the size of the …

Read More
Bits and Pieces

Think Like an Expert

Experts in any field organize their knowledge in specific ways. They have their own unique vocabulary and draw on specific analogies and metaphors. They have established key beliefs and distinctions around their expertise, and though they understand their subject their understanding maybe different and deeper than the rest of us. All experts draw on skills …

Read More
Bits and Pieces

Stop Anticipating

I generally find that developers engage in one of two different activities when it comes to making future changes: they either anticipate or accommodate. Anticipating change comes from a good place, a place of caring, but can be ineffective and stressful. I spent much of my career trying to anticipate code changes so that my …

Read More