Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Like many, I'm developing a couple of applications on my own (not at the same time) to eventually sell. But I also have websites to run, college work and a social life etc., so often I can forgot what stage I am in programming, especially after holidays abroad.

Are there any techniques that I can use to help me keep track of everything?

share|improve this question

closed as too broad by Ozz, GlenH7, MichaelT, JeffO, Michael Kohne Aug 20 '13 at 19:27

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

7  
bug tracker, and TODOs in the code –  ratchet freak Aug 20 '13 at 14:20
    
A stack of index cards. –  MichaelT Aug 20 '13 at 14:30
    
are you looking for a project management and/or bug tracking tools? Are you also interested in integration features of that tools? –  Yusubov Aug 20 '13 at 14:53
    
Mylyn within eclipse. –  MichaelT Aug 20 '13 at 15:26
    
Source code has two stages: 1) runnable 2) not runnable. –  Mathew Foscarini Aug 20 '13 at 16:42
show 3 more comments

4 Answers

There are a number of soft techniques you can use:

  • Keep a log book of the progress of your project and make a note of where you have got to everytime you finish work

  • Plan your coding ahead a chunk at a time so you have some record of your train of thought when you come back to it

  • Only attempt something that can be reasonably be completed in the time you have available. If you're constantly stopping and starting a complex piece of code, it is likely to take much longer to complete

Also, from a coding point of view:

  • Add TODO comments to your code
  • Write code stubs for your methods so that the intention of the future code is clear
  • If the language supports it, write the interface upfront so you can see roughly what is expected from the class
  • Write descriptive code. Even if someone isn't familiar with the language, it should be easy to at least get a feel for what the code does from the variable/method/class names
share|improve this answer
2  
for that 3rd point if you are constantly restarting then the cod will become more complicated than if you had finished it one go –  ratchet freak Aug 20 '13 at 14:34
    
From my own experience, it either takes that much longer to get started again, or the existing code is scrapped and started over. Either way, longer than it otherwise should have done. –  Robbie Dee Aug 20 '13 at 14:52
    
Thank you for the valuable answer. Pretty much what I was looking for. RE point #3, I completely agree with all the comments but often I misjudge how long things will take and run into unexpected problems that delay me considerably, but that's because I'm not really what you'd call a "seasoned programmer".. –  Andy Aug 20 '13 at 16:31
    
Estimation is always difficult. SoC (tinyurl.com/yzv9h8 ) comes in useful here. Briefly, the aim is to create classes and methods with a specific function rather than crafting long complex sections of code. –  Robbie Dee Aug 21 '13 at 8:19
add comment

Start with a simple and open source task tracker. It will be very handy in long run. It would also be an opportunity to learn a new type of tool to help you.

There are many alternatives to choose from. The one that i am using is Task Coach. It is a Free flexible open source todo manager featuring hierarchical tasks. You may also get a number of YouTube videos on how to use Task Coach here.

However, my college prefers Trac. This tool offers an issue tracking system and more. It runs by default with SQLite which means plain files. No need for a database server.

(although Trac can be configured to use MySQL or PostgreSQL, too) However, depending on your changing priorities you may switch to a different open-source task tracker. There are couple of them which are very popular:

The following article which specifies features - 11 Open source project management tools.

However, if you look for comparison then the following Wiki page has most of the information.

share|improve this answer
    
Whilst such tools are very useful at a macro level, I'm not sure they're always the best solution. –  Robbie Dee Aug 20 '13 at 15:09
1  
Thank you very much for your answer. I'll take a look at those links but I think things like Trac are a bit heavy duty for me, especially considering it's only me and not a collaboration. –  Andy Aug 20 '13 at 16:34
    
Sure, no problem. As stated in answer, just choose the one that meets your/project expectations. –  Yusubov Aug 20 '13 at 17:57
add comment

There are a lot of good tools to track projects for a team, a lot of which are overkill for a single user, and therefore often neglected. At least for me, one reason I do projects at home is because it's more fun without the overhead.

My preferred method at home is just put my code in a git repository, and add a TODO file to keep notes to myself to keep my place. The nice thing about git is everything is self-contained in a folder on your disk. You don't need to maintain a server or a database. The lower the server maintenance overhead, the more likely I'm able to pick it up later, even if I've switched computers or operating systems in the interim.

share|improve this answer
    
+1 Thank you for your answer. I've never actually looked at git for my own use but I might have to check it out. Is it "safe" and acceptable to store code to software you're going to be selling there? –  Andy Aug 20 '13 at 16:40
    
@Andy you may wish to pay a little bit for a private repository in that case. –  MichaelT Aug 20 '13 at 16:47
    
Bitbucket offers free private Git and Mercurial repositories with issue tracking, wiki, code reviews, etc. So there you can keep track of your work in a wiki, or in the issue tracker in the form of proposals or bugs, or a in a todo list as suggested here. That's what I do. –  edalorzo Aug 20 '13 at 16:55
    
Thank you then guys. –  Andy Aug 20 '13 at 18:41
add comment

Any simple task manager tool will do a job of tracking your projects. The only downside is you need to remember to update them. Something free like Trello is great for keeping track of the stages you are in and what you have completed.

Toodledo is also great for adding priorities to work, if you are worried about deadlines too.

share|improve this answer
    
I can recommened Trello - very easy to use. And there is an app for most smartphone flavours (Android, iPhone etc). –  Robbie Dee Aug 20 '13 at 15:29
    
Ha, some how I had Trello bookmarked but I didn't know what it was. Thanks for the suggestion. And you're right about the downside - I wondered if anyone had any tips to remember mentally or anything. –  Andy Aug 20 '13 at 16:26
    
The only mental tip would be habit. Just get into the habit of every time you finish a task, move it to the done column (Trello). Move the next task to Work in Progress. I usually have Trello open in a separate browser at all times and that also helps remind me to do it. –  Gibson Aug 20 '13 at 16:43
    
@Gibson That sounds fair. Thanks –  Andy Aug 20 '13 at 18:42
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.