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 …
Continue reading “We Can’t Keep Starting Over”
Read MoreI’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 …
Continue reading “The Limiting Factor”
Read MoreIn 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. …
Continue reading “Dolphins and Developers”
Read MoreI 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 …
Continue reading “Software is Too Forgiving”
Read MoreMost 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 …
Continue reading “The Habit of Quality”
Read MoreWhy 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 …
Continue reading “Why Agile Fails”
Read MoreI 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 …
Continue reading “Why Agile Works”
Read MoreAgile 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 …
Continue reading “2020 Hindsight: The Next 10 Years of Agile Development”
Read MoreFor 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 …
Continue reading “My Perfect Day”
Read MoreLast 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 …
Continue reading “The Vanishing Cowboy Coder”
Read MoreImagine 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 …
Continue reading “The Visualization Muscle”
Read MoreSometimes 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 …
Continue reading “Code Comments: Good or Bad?”
Read MoreFor 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 MoreIn order for agile projects to thrive they must embrace constant change by building software that is resilient to change.
Read MoreI 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 …
Continue reading “Sony Baloney”
Read MoreI’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 …
Continue reading “Who Needs Architecture and Design?”
Read More