Project Workflow
Lately, I've been working on multiple projects, and I've been able to see fundamental differences in workflow between companies.
Some companies will give you stacks of concise requirements and depend on you to submit detailed design documents for peer review, test the documents, write unit tests, and finally write code, and then write documents about the code (maybe even write documents about the documents!).
Some companies will give you a brief verbal description of what they need and expect you to turn it in to code in a matter of days, not weeks.
No doubt ehen you can afford the luxury of a slow, detailed and careful process, it's hard to argue against it. When you're in a hurry, you need to accept these risks and make things happen quickly.
So I got to thinking about this chart, which helps classify a project workflow. We have two axes, ceremony and frequency. Frequency refers to your rate of production, or, "how fast can you make it?", while ceremony refers to anything NOT related to writing production code (documentation, peer review, unit tests, branch labeling etc).
Normally, these are two opposing forces. I can write my production code much faster if I dont have to document or test it. I can unit test and document my work to no end, and get grey hair before the project is done.
Waterfall models (popular in big companies and academia) are in the lower right (A), while agile practices lean more to the upper left (B). The blue gradient represents a scatter on where most projects fall.
With a waterfall model it is very easy to stage out a plan and report incremental progress. With an agile model, it is very hard to set estimates and report progress.
Both of these factors are important, but they're a bit of a catch-22. Regardless of your personal philosophy, there are some automated tools that give you the best of both worlds in terms of speed and safety:
Some companies will give you stacks of concise requirements and depend on you to submit detailed design documents for peer review, test the documents, write unit tests, and finally write code, and then write documents about the code (maybe even write documents about the documents!).
Some companies will give you a brief verbal description of what they need and expect you to turn it in to code in a matter of days, not weeks.
No doubt ehen you can afford the luxury of a slow, detailed and careful process, it's hard to argue against it. When you're in a hurry, you need to accept these risks and make things happen quickly.
So I got to thinking about this chart, which helps classify a project workflow. We have two axes, ceremony and frequency. Frequency refers to your rate of production, or, "how fast can you make it?", while ceremony refers to anything NOT related to writing production code (documentation, peer review, unit tests, branch labeling etc).Normally, these are two opposing forces. I can write my production code much faster if I dont have to document or test it. I can unit test and document my work to no end, and get grey hair before the project is done.
Waterfall models (popular in big companies and academia) are in the lower right (A), while agile practices lean more to the upper left (B). The blue gradient represents a scatter on where most projects fall.
With a waterfall model it is very easy to stage out a plan and report incremental progress. With an agile model, it is very hard to set estimates and report progress.
Both of these factors are important, but they're a bit of a catch-22. Regardless of your personal philosophy, there are some automated tools that give you the best of both worlds in terms of speed and safety:
- SandCastle help file builder GUI (compiles the nDoc-style comments in your code into .chm help files. There's your documentation!)
- CruiseControl.NET (the concept of continuous integration implemented by ThoughtWorks, some of the best programmers on the planet)
- Visual Studio class diagram tool - diagrams, directly connected to the code, the diagrams change as the code changes.
- FogBugz - simple and no-nonsense task tracking tool managed by Joel Spolsky, one of my favorite writers
- Subversion - Its true you can shell out $10,000 or more for a flashy source control system such as Clearcase or Team Foundation Server, but on a distilled functional level, this program matches their feature set and it costs $0. Thousands of sourceforge developers can't be wrong. Thousands of Google Code developers that use this as a standard source control option can't be wrong.


0 Comments:
Post a Comment
<< Home