What is the best part about software development? Greenfield projects. You have none of the baggage of the bad decisions you made in the past, and you can create some code and see something new. That’s the attractiveness of this business.
What we get “paid for” is actually dealing with a lot of crap code, some written by us, the rest written by others. Ayende has a great quote, broken English and all:
There are always at least two people in any software project:
The developer who wrote the code.
The developer who read the code.
They are never the same person, even if just by temporal dissonance.
In other words, we will generally have a thought of “who wrote this crap”, and most of the time, it is our past self.
As tempting as it is, we cannot simply try to create new projects whenever we encounter difficulties or better ways of doing things. We would never get things done.
There are however instances that demand a new project. Here are a few that come to mind:
- Platform is not actively supported or vendor’s development has reached a sunset.
- Another major technology has supplanted the one your using in the marketplace, one that would reduce your codebase significantly.
- You have to re-read nearly the entire codebase to make any changes or you have limited tests, specs, documentation, etc. on a key application. This is a special case, one that’s not very popular and easily ignored when we get busy, but in this event, you want to capture as much of the knowledge from the developers now, this is your “project”.
- Your application is small (e.g. 1 developer, handful of function points), these are the perfect environments for learning new technologies, techniques, etc.
Any others come to mind? Let’s have them!