Rants

We Can’t Keep Starting Over

Back 25 years ago the way we started to write a new version of a successful product was that we deleted the previous version and started with a clean slate. Virtually all the code we wrote was thrown away and many new versions were started from scratch. But we can’t do that today. The systems …

Read More
Rants

The Limiting Factor

I’ve been a software developer for over a quarter of a century and I’ve seen software development change quite a lot in that time. When I started out writing code the main concern that I had was to make my software work. It was challenging to make software do what we wanted back then because …

Read More
Rants

Dolphins and Developers

In feedback learning timing is everything. I’ve had the good fortune of working with dolphins in research projects a few times in my life. When we train dolphins to learn a new behavior we use a “bridge”, which is a high pitched whistle that we sound at the moment they do the behavior we want. …

Read More
Rants

Software is Too Forgiving

I have a friend who is a hardware engineer. He says he hates software because it is too forgiving. When he designs electronics he has to follow strict engineering practices. One little mistake will likely make his whole design fail and cost his company over a $250,000 to “re-fab” the chip. He has to be …

Read More
Rants

The Habit of Quality

Most everything in writing software is about finding balance and making the right tradeoffs. We must understand the impact of our decisions on our work and seek to minimize cost while maximizing value. Sometimes we have to write a crappy implementation to get it to our customers but let’s acknowledge that we are doing it …

Read More
Rants

Why Agile Fails

Why do some teams adopt an agile methodology and become wildly successful while other teams adopt agile and fail miserably? What is the difference? In order for software development to be successful we must “build the right thing” and “build the thing right”. Agile strives for both but without understanding the goals and how agile …

Read More
Rants

Why Agile Works

I don’t believe in silver bullets for software development. Building software is very creative and I don’t think we can do it by just following a prescribed set of steps without thinking about what we are doing. And thank goodness. I don’t want to be in a field where I can go on automatic. I …

Read More
Rants

2020 Hindsight: The Next 10 Years of Agile Development

Agile methodologies seem to be taking root in recent years as more and more organizations realize that iterative development done correctly is a highly efficient way to build software. As I see agility gaining popularity I can’t help wondering what the next ten years will hold for agile development. I just returned from Agile Open …

Read More
Rants

My Perfect Day

For many people their perfect day involves lounging on a beach somewhere tropical sipping a drink with a paper umbrella in it. That’s nice but my perfect day is somewhat different. Earlier this week I was teaching an Advanced Software Design class at Microsoft and it came close to being my perfect day. I love …

Read More
Rants

The Vanishing Cowboy Coder

Last month I wrote an “Agile Tip of the Month” for the Agile University Newsletter. For those who don’t read the newsletter I thought I’d post it here: The creative genius working long hours churning out code that only he can understand; this is the cowboy coder. How did he get here? How do people …

Read More
Rants

The Visualization Muscle

Imagine what would happen if you went to the gym every day, five days a week, 8 hours a day for years and years but only exercised your left bicep muscle. Your left arm would be huge in proportion to the rest of your body. This is what we do as developers. We exercise the …

Read More
Rants

Code Comments: Good or Bad?

Sometimes I’ll ask my students if they think that commenting code is a good thing or a bad thing. Some people laugh. “Of course it’s a good thing,” they often say. But is this universally true? When I worked at IBM back in the ‘80s we had a programming standard that said every line of …

Read More
Rants

The Wall

For a good part of my early career as a software developer in the 1980s I didn’t really seriously consider the maintainability of the software I wrote. I was just concerned with getting it to run. Soon after that I would focus on trying to make it consume as little space as possible and to …

Read More
Rants

Writing Changeable Code

In order for agile projects to thrive they must embrace constant change by building software that is resilient to change.

Read More
Rants

Sony Baloney

I often ask my students if they prefer to write new code or maintain existing code. Ok, it is a silly question. Most people say they rather write new code, not just because it is more fun but also because it seems the worse bugs show up when we try to modify existing code to …

Read More
Rants

Who Needs Architecture and Design?

I’ve heard people say that you don’t need to do much architecture and design on Agile projects. In my experience this is not true. Because of the high degree of change, Agile projects require that attention is paid to architecture and design throughout development. But the way we do architecture and design in agility does …

Read More