Why Having a “Backlog” Sucks the Life Out of a Project

Do your developers work against a “backlog” of tasks? If you practice Scrum, Kanban, or some other variant of agile development, then you probably have one or more “product backlogs”, plus an “iteration backlog” for each team. Right? I’d like to suggest that you toss out your “backlogs.” — And I mean that in two different ways. […]

Read More

Put Your Wisest Developers on Maintenance, Not the Rookies

It’s temping to put new hires on maintenance work. Having them fix bugs seems like a good way to have them become familiar with the code. The problem is that there’s usually too much for them to learn, too quickly, so it becomes daunting work. I’m mostly talking about legacy code here, but even the […]

Read More

TDD Solves the Blank Page Syndrome

In my personal blog I wrote about how the blank page syndrome can lead to procrastination. I gave an example of how it’s often difficult to know where to start when faced with a vaguely written bug report or an enhancement request. I suggested that one way to gain clarity is to skip ahead to […]

Read More

One Java Tip: “And That’s (not) Final!”

Something to watch out for with initialization code is that “final” has three different meanings depending on where it’s used, and it’s easy to get confused. For example, a common mistake is that setting a Collection to final doesn’t make the contents immutable, only the reference to the collection is immutable.

Read More

Removing Code Generators from the Build Process

(I wrote this originally back in August, 2007. The topic came up again in a recent conversation, so I’m reposting it for the benefit of my friend.) I’m a huge fan of code generators. I’ve seen them used successfully in many different ways. In the Java world, for example, the Xdoclet parser is commonly used to […]

Read More

Top 5 Ways to Keep a Software Development Project On Track

If the three most important attributes in real estate are location, location, location, then the five most important attributes of good project management are communication, communication, communication, communication, communication. 1. Maintain a written glossary of domain terminology. It’s amazing how often the developers and the customers think they’re talking the same language, but they’re not. […]

Read More

“Clean Code” — Crafting On Principles

I’ve been reading “Clean Code: A Handbook of Agile Software Craftsmanship” by Robert Martin. This is no ordinary book on writing better software. It’s not just a rehash of “Code Complete” or “The Pragmatic Programmer.” Those are both fine books, but “Clean Code” is different. So, please don’t think that if you’ve read one, you’ve […]

Read More

Configuring a Grails App for Logging

For any standard Grails app, the error log is called stacktrace.log by default. On some servers, it ends up in the config folder (rather than the logs folder) by default, so it’s hard to find. Also, with a fixed name, all apps running on the same server would share the same log. So, for any […]

Read More

Everything’s Groovy

One of the major benefits of using Grails as a web platform is how almost everything can be written in a single language — Groovy. No more switching gears between language constructs. Everything’s Groovy.

Read More

Outsmarting the Competition in a Down Economy – Part 4: Keep Your Good People

You might be laying people off, but don’t be penny wise and pound foolish. There’s a reason your most expensive people are expensive. Going through a spreadsheet with names and salaries to make cuts is probably the worst way you can accomplish cost savings. After all, these are the people that provide you with your […]

Read More