I recently did a clean install of Windows 7 64-bit. It had been a really long time since I listed the current tools, SDKs, and frameworks that I’ve been using. Thus here’s my entourage of software that I use on a regular basis that is installed on my primary development machines.
I’ve seen it on more than one project in my career and it always seems to happen. Agile rarely gets credit in this scenario. People rarely learn what was and was not effective on the project in this scenario. What I’d like to know though, especially from those that have successfully dealt with the “Must have big design up front (BDUF) headaches” and transitioned those people to a more Agile style approach.
The scenario generally starts like this…
A project is green-lighted for whatever reason, often with some high level manager determining that a project will save X amount of money or make X amount of money. The project is poorly defined or simply not defined at all. The stakeholders, clients, or others that would prospectively use the software are nowhere to be found and unidentified by management. There are at least a half dozen external dependencies the project must have completed.
I’ve been rereading Joel Spolsky’s “Smart and Gets Things Done”. His writing style is entertaining. I’m not always in 100% agreement with the guy, but who ever agrees 100% with anyone right? However, Joel has a ton of things that are smart, well thought out, and when one pays heed can really help out during the course of a software project. Since I’ve been writing on this topic lately, I figured it would be a great idea to give this a read and maybe even add my two cents to a few of his passages.
I didn’t get very far and I had already found one bit that I wanted to elaborate on. This part was in remark to hiring college interns and the fact that the best college students are often already good programmers.
There are multiple phases to a software project. In this blog entry I would like to talk about and discuss (please leave a comment or two) what the basic things are that a software project needs to get started and prospectively move through development and on to a successful deployment. The following is a short list of the key items that a small software project needs to move forward.