Recently, I had the pleasure of presenting at Sharatoga Tech Talks on “How to deliver software on time (or know early that you’ll be late).” I’ve posted the slides but they lack a lot of narrative so in my next few posts I’ll paraphrase a lot of what I said that night.
Software projects have a reputation for running late, perhaps second only to government projects. (A government software project? Fuggettaboutit!) But if something as complex as the World Trade Center can be completed on schedule, what is my excuse? I’ve never worked on a software system as complex as that must have been! (The construction of One World Trade Center finished two years after the original plan but the start of the project was delayed by two years so once they got going, the project took the ten years they had originally projected. To me that is on schedule.)
I’m not a PMP but I do have three decades’ experience developing software and a reputation at my company for delivering projects on time (or, as I hinted in my presentation title, knowing early when I’ll be late so management can plan around the delay). What I’m saying here isn’t project management gospel, just things that work for me. I hope you see some benefit in them.
Tools
I’m not fan of Microsoft Project — though admittedly, that’s what the big boys use on projects like the World Trade Center — but it does provide tools that are handy whatever software you are using to manage your project.
- Work Breakdown Structure organizes a project into a hierarchy of progressively smaller subtasks until the lowest level is something you can actually understand and complete
- Gantt Charts show the relationships between tasks, what has to be done first, what that task completion enables, and so on
- Project Calendars track the availability of resources (e.g., when your developers are on vacation)
All the cool kids are using Agile methods to develop software and that paradigm introduces other tools to help track projects.
- Workload charts show how work is divided among team members
- Burndown charts show how work is progressing
And I find it very helpful to have access to my project data in a database for ad hoc queries and reports.
Open Source Tools
I manage my projects in a souped-up installation of Trac. The basic system provides a ticketing system and a wiki but it has a very flexible and capable plugin architecture that allows you to customize it.
Trac-Hacks is a public repository of plugins including:
- Timing & Estimation provides fields to record estimates and work
- Estimation Tools provides workload and burndown charts
- Master Tickets supports Finish-Start dependencies
- Subtickets supports Work Breakdown Structure
- Team Calendar allows team members to indicate when they’ll be out
- TracJSGantt provides an incredible Gantt chart based only on <div> tags and CSS rules
The TracJSGantt plugin has grown to include support for more project management functions like scheduling in a TracPM subsystem.
Trac Requirements
Trac is written in Python and runs on Linux, OS X, or Windows. It requires an RDBMS to store its data. You can use the SQLite bundled with the distribution but that isn’t really suitable for more than a couple of users. You can use MySQL or PostgreSQL as you prefer. I work on Linux with PostgreSQL and while I try to be platform-agnostic, no doubt some OS- or DB-specific code has crept into my scripts.
Next time
In part 2, I’ll talk about some project management techniques.
5 responses to “Managing Software Projects Part 1: Tools”