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 …
Continue reading “People are not Resources”
Read MoreEvery 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 …
Continue reading “The Single Wringable Neck”
Read MoreMost fundamentally, I wrote my book because I wanted to make the world of software development accessible to many more people outside the software industry. I had accumulated a lifetime of experience as a software developer. In that time, I had come in contact with many individuals who I would consider to be outstanding developers. …
Continue reading “Getting Started Writing Beyond Legacy Code”
Read MoreIn a 2002 National Institute of Standards and Technology report entitled “The Economic Impact as Inadequate Infrastructure for Software Testing,” software defects costs nearly $60 billion annually in the United States alone. This report is often misquoted assaying that software bugs cost $60 billion but software bugs likely cost industry and consumers much more than …
Continue reading “A Billion Here, a Billion There”
Read MoreA first principle is a principle that is so fundamental that we can infer other principles from it. The Golden Rule is an example of a first principle, “Do unto others as you have them do unto you.” This is a first principle because many of our laws, our code of ethics, and even our …
Continue reading “First Principles”
Read MoreNewton said we stand on the shoulders of giants and that’s certainly true for me. Many of the ideas that I have drawn on for *Beyond Legacy Code: Nine Practices to Extend the Life (and Value) of Your Software* came from a range of other sources both within the software industry and outside of it. …
Continue reading “Do This Because”
Read MoreIn his book Crossing the Chasm, Jeffrey A. Moore discusses what he calls the technology adoption life cycle for new products. He describes five distinct phases that innovative products go through based on the five different kinds of adoptors. The technology adoption life cycle applies not only to new products but also to anything new …
Continue reading “Crossing the Chasm”
Read MoreA large part of the success of the lean manufacturing movement was its call to eliminate waste. Deming introduced the concept that waste in manufacturing came from excessive inventory. Inventory was considered waste because it tied up capital and required that it be kept in storage until it was ultimately sold. But what is waste …
Continue reading “What is Waste?”
Read MoreI wrote Beyond Legacy Code: Nine Practices to Extend the Life (and Value) of Your Software because I noticed two major disconnects in my experience as a developer. First, the more challenging technical practices such as test driven development and refactoring, were not being as quickly assimilated by teams as some of the simpler Agile …
Continue reading “Why I Wrote Beyond Legacy Code”
Read MorePeople define success differently. This is not only true individually but we define the success of products or projects based on different criteria, too. To the Standish Group, success is about predictability. They define the success of a software project as one that is delivered on time, on budget, and with all the features and …
Continue reading “How to Define a Successful Software Product”
Read More“Continuous attention to technical excellence and good design enhances agility,” is one of the principles of the Agile Manifesto. In retrospect, at their ten-year reunion, at least some of the original authors of the Agile Manifesto felt they didn’t state this strongly enough. I believe technical excellence doesn’t just enhance agility, it enables it. Cobbling …
Continue reading “Just Telling Teams to Self-Organize Doesn’t Work”
Read MoreClearly, the success rate of Agile projects is higher on average than Waterfall projects. I propose that we can trace some of this success back to technical practices. In Waterfall development, there was no incentive to write good code. Developers got once chance to write a feature and once it works the feature was never …
Continue reading “More Reasons Why Agile Works”
Read MoreWhen I was first introduced to Agile I had a hard time understanding how to order the backlog. Agile says to do the most important, the most valuable work first but I used to think that was overly simplistic. If I’m building a house I shouldn’t build the master bedroom first just because that’s where …
Continue reading “Is Priority Best for Ordering a Backlog?”
Read MoreWhat’s the real difference between Agile and Waterfall? Is it short iterations, standup meetings, having a ScrumMaster, or what? Clearly, there are many differences between Agile development and Waterfall development. Agile involves less planning and more feedback but those are not the major differences from Waterfall. Some people will tell you that it’s a “mindset” …
Continue reading “The REAL Difference between Agile and Waterfall Development”
Read MoreSometimes we act as if bugs just appear in our code on their own, but we all know that’s not true. The bugs in my code were written by me. I didn’t mean to write them. I didn’t want to write them. But I did anyway. I remember when I first heard Al Shalloway refer …
Continue reading “What Mr. Robot Says About Bugs”
Read MoreBack in the 1990s, I was teaching a class at IBM’s wildly successful Cottle Labs in San Jose, CA. It was mid-week, halfway through the class, which had been going really well up to that point, when the students coming back from lunch looked like a train had hit them. Moments before they had just …
Continue reading “What Managers Must Understand”
Read MoreI consider myself a supporter of the #NoEstimates hashtag. It’s not that I think estimates are evil, it’s just they’re often unneeded or misapplied. If the effort to estimate a task is equal to the effort required to complete the task then is an estimate worth it? Estimates can be useful for measuring capacity or …
Continue reading “Ideal Days Aren’t Ideal”
Read MoreIn his book *Mythical Man-Month,* Frederick Brooks says to build a system “three times” by designing, implementing, and testing software. But this approach tends to amplify our mistakes rather than allow us to learn from them. It’s based on the false assumption that we can articulate a system’s behavior in the design documents with sufficient …
Continue reading “Build Once Then Enhance”
Read MoreLet’s imagine that I run a roulette table with a one-dollar minimum bet. According to http://wizardofodds.com/games/roulette/ the odds are one in thirty-seven on a single-zero wheel that your number will come up. Vegas would pay back accordingly, so if you bet $1.00 on 18 and the little ball lands on 18, the dealer hands you …
Continue reading “Playing All or Nothing”
Read MoreI’ve been fortunate to work with clients whose business requires a large amount of scientific research. One client is so committed to Scrum that they brought their researchers to my Scrum Developer Certification training and for the first time I seriously looked at how to use the practices of Scrum and XP to do scientific …
Continue reading “Scrum for Science”
Read MoreI have asked the question “What don’t you like about developing software” to thousands of developer and I often hear similar answers. The list is a bit longer than the list of what we love about developing software, discussed in my last post, but don’t infer that it outweighs what we love about it. I …
Continue reading “What Do You Hate About Developing Software?”
Read MoreI have asked this question to thousands of developers in my classes and I always hear very similar answers: “I love creating something new that has never been done before.” “I love giving people tools to help them do their work more efficiently.” “I love solving problems.” “I love learning about new domains.” “I love …
Continue reading “What Do You Love about Developing Software?”
Read More