Every field of engineering has a core set of practices that they follow and software engineering is no different. But what are they? The answer seems to depend upon who you ask. There is no overall consensus in our field about what the right standards and practices should be. We have many languages, many frameworks, …
Continue reading “Core Developer Practices”
Read MoreWhen I asked professional software developers in companies what software development and design principles, they follow I oftentimes get a blank stare. Our industry has not matured enough to be able to extract out the major principles of constructing software the way civil engineering has been able to extract out the major principles of constructing …
Read MoreAre you humming in your head Paul Simon’s “Still Crazy After All These Years”? I am. And it does seem crazy. Crazy that some ideas that came out over 20 years ago in the fast-paced software industry are still relevant and valuable today. But they are. Kent, Ron, Ward, and many others who were early …
Continue reading “Still XP After All These Years”
Read MoreSoftware development has undergone many revolutions over the last few decades. The way we build software today is fundamentally different than the way we did just a few years ago. Our industry is maturing and we are beginning to pay attention to the quality of our work. No longer is just fulfilling the specification enough …
Continue reading “The Importance of Technical Practices (Again)”
Read MoreOk, I admit it. I am lazy. But laziness can be a virtue. I think it is humanity’s basic laziness that let us create computers in the first place. Computers take the drudge-work out of many tasks. My basic laziness has motivated me to find better ways to build software because I simply got tired …
Continue reading “The Virtues of Laziness”
Read MoreOne question that I hear a lot of people asking is whether they should buy or build the software that they need to run their enterprise. This is often a difficult question to answer. One thing I can say having lived through many major software purchases is that the main cost was understanding a system …
Continue reading “Buy or Build”
Read MoreIn my early days of computing back in the late 70s and early 80s, having an interest in microprocessor design was unusual. I remember getting almost monthly updates from Motorola and Intel on their latest chips and my shelves were filled with technical manuals. Information flowed freely and it felt that we were part of …
Continue reading “Sharing Knowledge”
Read MoreI have been an advocate of Extreme Programming (XP) practices for well over a decade. To me, Agile software development means more than just an agile development process, it means that our code is agile and able to respond to change easily. This doesn’t happen by accident. It’s a result of following good programming principles …
Continue reading “Why XP After All These Years”
Read MoreI’ve been fortunate enough to speak at several conferences on Agile developer practices. I presented at many Scrum Gatherings both in the United States and in Europe. I’ve also presented at several of the big Agile conferences as well as the smaller technical conferences such as deliver:Agile and most recently Craft Con in Budapest. Most …
Continue reading “Scrum and XP”
Read MoreHave you ever stopped to consider how fortunate we are? We are part of a community of Agile practitioners and there are many benefits to being part of this community. I am fortunate that I get to speak at many of the Agile conferences, including the big Agile Conference, the deliver:Agile Conference, Scrum Gatherings, Better …
Continue reading “The Agile Community”
Read MoreFor many complex processes, there are several ways to do them wrong and only one or a few ways to do them right. This is true with Agile. Many organizations claim that they’re doing Agile, but they really aren’t. Many of these organizations are frustrated because they’re not getting the benefits they expected but that’s …
Continue reading “What’s Agile Software Development?”
Read MoreWIP stands for work-in-progress. It’s a fundamental concept in queuing theory, which has become a central part of Lean Software Development. Some of us like to work on several projects at once. It feels like we’re getting a lot of things done sometimes but often that’s not really the case. Work-in-progress means that we have …
Continue reading “The WIP Whip”
Read MoreI believe that Agile software development is ideal for discovering what really needs to be built and to build it in a way that it will last, but I don’t believe that Agile is required on every project. There are many kinds of projects and many reasons for not doing Agile. I’ve written quite a …
Continue reading “Playing Dumb isn’t Agile”
Read MoreI wrote about increasing velocity in my last post, but I just can’t let it be. I have to tell you about the dark side of velocity and why I don’t recommend that teams track velocity. Velocity is the amount of work a team can accomplish in a fixed period of time. It’s used to …
Continue reading “Forget About Velocity”
Read MoreDo you want to know a trick to increase your team’s velocity? Now that I have your attention I want to tell you that tricks don’t work. I’ve seen people play tricks and sacrifice quality in order to get something out only to regret it later. So here’s my non-trick trick: Increase code quality today …
Continue reading “How to Increase Velocity”
Read MoreSoftware development has undergone many revolutions over the last few decades and the way we build software today is fundamentally different than the way we did just a few years ago. Our industry is maturing and we are beginning to pay attention to the quality of our work. No longer is just fulfilling the specification …
Continue reading “The Importance of Technical Practices”
Read MoreI’d like to say that there are two big things we must achieve in software development. We must build the right thing and we must build the thing right. Building the right thing starts with what the customer wants so they can gain value from our work. The way we build the right thing for …
Continue reading “Two Big Things”
Read MoreThe Standish Group’s CHAOS Report is the largest and longest running research study in the software industry. Standish looks at approximately 34,000 software projects in a range of areas. It includes shrink-wrap applications, operating systems, custom apps, etc. They picked a range of diverse projects to look at. Every ten years the study drops about …
Continue reading “Success to Standish is Failure in Agile”
Read MorePeople 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 …
Continue reading “Telling Smaller Lies”
Read MoreThe 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 …
Continue reading “A Culture of Inefficiency”
Read MoreHistory 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 …
Continue reading “Incentivizing the Wrong Things”
Read MoreIn 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