Sunday, August 16, 2009

Software Hierarchy of Needs

In my advanced placement high school history class, one of the first things we covered was Maslow's Hierarchy of Needs. I no longer remember the reason, or how we used it over the course of the year, but the idea that there is a pyramid of needs where lower levels must be fulfilled before moving to a higher level of existence stuck with me. For instance, it is impossible to make law and order a basic part of you living unless the basic needs of food, drink and shelter have been satisfied first. Recently I've been thinking about Maslow's Hierarchy of Needs Software Organizations - the building blocks that a software organization must fulfill before considering the next tier of professionalism and success.

Tuesday, August 11, 2009

The Net Negative Producing Programer

It has been well known for a long time that there is at least an order of magnitude difference between the most productive developers and the least productive. But if you've been in the software industry for any period of time, you've probably met this person: the net negative producing programmer (NNPP). This is the person that is so bad, that they actually have a negative effect on team productivity: you would be better off not having this person on your team.

Saturday, August 8, 2009

Burdened with technical debt

Incurring intentional technical debt should be a business-based decision. This doesn't mean that business people need to be involved, but every time you make the decision to take the quick and dirty approach versus doing the right thing, there should be a solid reason behind it. That solid reason should be: this is better for the business. I know this sounds like something out of Office Space, but every time you copy and paste code, every time you don't refactor, every time you violate a naming convention, every time you choose to leave a defect in the product, every time you write code without a test case, you should be doing it because it makes good business sense. At the end of the day, the software we write serves the business and is supposed to add to the bottom line.