Now that Project Fangorn is wrapped up and on ice, its time for the postmortem.
What went wrong:
- Didn’t feel like I was productive enough.
- Went off on a tangent developing a prototype space based architectural abstraction over Google AppEngine’s datastore and refactored prototype code to use it.
What went right:
- Produced space based architectural abstraction over Google AppEngine’s datastore that can be used in other projects.
- Produced tests for space based architectural abstraction than be used with other implementations.
- Produced server-side test framework and client-side test runner that can be used with other projects.
What to do differently next time:
- Make a task list with time/size estimates even when it isn’t necessary for coordination or reporting to others.
- When not working regular hours, meter time enough to get a reasonable estimate of how much time is actually being spent working per day / week / month. This require either finding or developing suitable metering app.
- Don’t develop prototypes for web applications on GAE, but rather do it just a basic web server setup. Although prototypes for specific technologies might need to scale, feature prototypes don’t need to scale.
During the course of the project I kept feeling like I was behind and not getting enough done, but I don’t actually know if that is the case or not. This arises from two factors. The first factor is that I’ve been working throughout the entirety of the day, but it hasn’t been non-stop work but rather intermittent (i.e. work for a while, go excercise and shower, work for a while, grab some chow and watch TV episode or two, work for a while, etc.). I also haven’t been taking weekends off, but just a day here and there (at Thanksgiving is the first time I can remember do no work for two consecutive days since I went to visit family on Labor Day), so I really have no idea if I’ve been working 30 hours a week or 70 hours a week. At one point I actually went looking for a simple app I could use to track time in a few buckets, but couldn’t locate anything that did what I was looking for. The second factor is that I didn’t break down the work into tasks with a size/time estimate, so I wasn’t getting the satisfaction that comes from checking off completed tasks nor did I really have a bearing on overall progress.
While the space based architectural abstraction over GAE’s datastore API will be useful on any other project I do on GAE, the tests for it will be useful creating other space based architectural abstractions, and the test infrastructure will be useful on any other Pylons project I do, I don’t believe it was appropriate to be developing these things during the course of developing a prototype for a web strategy game. I really should have just shutdown work on Project Fangorn and moved on to developing those things separately from it, as I had gotten enough experience with the limitation of GAE to know that there was a significant risk of it not being feasible to successfully operate Project Fangorn on GAE. Either, that or should have restarted Project Fangorn on another platform.