cfoley said:
My code lives in a central repository and I can check out a working copy for any project on any computer I use. I set up a seperate Eclipse or Visual Studio environment for every working copy. This works for me very well as it doesn't tie me to any particular hardware, operating system or even location. I have been known to check out two working copies on the same computer just to set up two different environments.
What a cool idea! My coding is a work in progress.
I do keep all code up on Github so it is in a separate repository. I am not very good at checking out or creating branches like I should for different features as I still don't quite grok Git. My husband uses it a lot so that is why I am using it, it means he can do work on the code as well but usually only when it's something that is talking to the hardware. I never even thought about making separate working environments for different projects or parts. That might really help right now for me when I am overwhelmed with stuff to do and stuff I want to add.
cfoley said:
At work, I have a couple of big projects that are all ongoing and have been for years. Most of the work is in the form of new features that each have their own deadlines. Because these projects have been going so long, they generate a lot of someday-maybe feature ideas, desired refactorings, minor bugfixes, etc. These are conceptually different to me than features that come in via requests form clients or my employer. Some are things I would like to do opportunistically as I work on something else (refactorings and minor bugfxes). Others are things I want to suggest as future features.
I'd separate those into different lists. The paid for work gets a different context compared to the be nice to do work. I'd also separate out features from bugs from code clean-up. I tend to focus on bugs first, then code clean-up then add features. I also do a feature freeze before each major flock task if I have the module working "good enough". No code ever survives first contact with the sheep. From bad button placement, to bad workflow issues, to too much for the user to do while holding a wriggling sheep, I've always had something not work right whenever I introduce a new feature or new module or task. So for me getting something I think will work, getting it out there and testing it and then coming back in to try to fix the issues (sometimes while sheep are standing in the chute) has been critical. I've even been known to take my main development computer out to the sheep chute and work the problems right then and there. That rapid step-wise refinement of the code is something that GTD and even most code systems doesn't handle really well.
cfoley said:
My freelance work is quite sporadic. Projects will lie dormant for a long time until some thing comes in. It's a healthy mix between new utilities and features for old codebases. The sporadic nature has been problematic for me in terms of GTD. Often I don't know if the someday-maybe list is something I should keep. It will only be needed if the client reacitvates the project.
I've got separate paper file folders for each potential future revision of LambTracker and then I put my post-it notes for future features into those folders. For example right now I am on Rev 3 of LambTracker. Rev 1 was proof of concept, rev 2 had a poorly designed database and rev 3 is the first real functional one. I didn't want to deal with 0.x revs and consider nearly everything beta code so the numbering works for me. I already have a Rev 4 and a Rev 5 folder of stuff. In Rev 4 the plan is to add genetic calculations for Wrights inbreeding, coefficient of relationship and Ward's clustering by distance. Rev 5 is going to be adding tools so LambTracker can run a sheep registry, creating and printing registration papers with pedigrees and managing ownership histories. I often get ideas about those areas now but I can safely write them down and put them in the proper folder and forget them. My equivalent of the someday/maybe list.
cfoley said:
My hobby projects often get neglected since I have other demands on my time. However, it is very important to me both in terms of personal satisfaction and probessional development.
I'd put those things under a separate AOF, Personal Development, and probably actually include them into my main GTD system as they are learning not coding. I put my learning Java, SQLite and Git, all ongoing projects, into that in my GTD system. While I learn by coding they are really not part of the LambTracker development per se. I just use LambTracker as the vehicle to practice the stuff I am learning.
cfoley said:
I find it interesting that you uses paper and post its for your issue tracker, and that you keep your code issues outside your main GTD system. Do you also have a placeholder in your GTD system?
I found I needed the feedback of taking a red pen and writing DONE across a post-it note or I felt I didn't accomplish anything. Especially when some tasks can take me days to actually code I really appreciated the more tactile checkoff compared to clicking a box in Omnifocus. Not sure why, I hate paper for the rest of my GTD system but it's working for this.
I do have projects in my GTD system for some parts of the development but not all. For example right now I have a project LambTracker Database and an action in there is Update the demo database with the new tables created for breeding. Another action is create a checklist for adding new tables to demo database and verifying old ones. Those are sort of ancillary to the code working and seem to fit ok into my GTD system. The documentation project is totally within my standard GTD system. It's writing the user manual. I have major tasks in Omnifocus but the manual itself is being written as a novel in Scrivener. I have next actions related to writing scenes or chapters that explain why you might choose this or that LambTracker option or how to set things up and then do the work. In a few cases I've written the scenes for my fictional shepherds using LambTracker and in the process of writing the scene discovered that my planned way to do it in the program wouldn't work in practice so changed the code to match the manual. A somewhat different way of dealing with writing code I think.
I also have a project for LambTracker Mobile and an action under that is try to figure out how to make an adjustable table in XML for sheep evaluations. It's something that I need to do in lots of places but also I can get away with the system the way it is now so it's not a bug but not quite a feature either. For some reason that more learning task seems to fit in my GTD system rather than in my paper issue tracker.
I have a project LambTracker Historical Data Input and actions include making spreadsheets to enter in all historical flock data and Add all past sheep drug records. Those are more user or flock management things not coding though. Again, they fit into my GTD system easily so that's where they are.
Not sure if my ramblings made any sense to you but maybe you can glean something useful from them.