Wednesday, October 13, 2010

Stages of work

Here's an approach that I found works for me, when undertaking a new feature, or rather one of its iterations
  • Prototype and figure out how to do the main parts
    • Investigate what goes where, what datastructs are useful
    • Concentrate on figuring out the parts which are technically hardest, things that require domain knowledge, interaction with unfamiliar code, etc.
    • See some results and get inspired for further actions
    • Don’t get stuck on how to do it properly, just get the result!
    • At the end of this stage, at least one set of inputs will yield the "correct" prototype results
  • Design the iteration
    • Settle on the proper way to do tackle the task
    • Setup the framework for taking care of the use cases that come up 
    • Implement the code skeleton - classes, function declarations, calls to (possibly empty) functions
    • At the end of this stage, the original test case will still work, and the basic flow of control for the program will be established
  • Do it properly for the main case
    • Fill in the meat on the skeleton set up in the previous stage. This is sort of the "main part", that may take the longest, but with a proper skeleton code and the main risk areas handled, this could be much easier. 
    • At the end of this stage, and most types of legal input will result in correct output
  • Wrap-up
    • Go thru risky areas, add error checking, and get ready to release to the users (or testers)
    • At the end of this stage, the iteration can be considered complete, legal input will result in correct output, and illegal input will be handled gracefully

No comments:

Post a Comment