Pablo Corral wrote me an email after I posted this tweet about managing on-again-off-again side projects.
I’m very curious about how to use Backpack to have a better experience on braindumps for side projects.
I switch a lot, and my side project sometimes is off for many days, and some weeks. Can you explain more about this?
It’s hard to find steady uninterrupted time for software side projects. Maybe you only have time on weekends or the occasional free night for your project, and sometimes weeks or months go by where you are too busy to sit down and make some progress. When you finally do find time to work, you can waste half of it just catching up on where you left off.
This has been a big challenge for me because one of my projects is a Rails app that supports registration and administration for a biannual retreat course. Four or five months may go by before I return to the app for another course, and with each course there are new bugs to fix or feature requests to implement. A couple years in this situation have helped me develop a system to manage my side projects with a minimum of headaches and wasted time.
My system is a one-two punch: Hosted version control plus a single Backpack page. These two are all you need to keep the state of your project off your brain and at the ready.
First punch: Hosted version control
Sign up with a hosted version control service like GitHub for Git or Beanstalk for Subversion. I advise using version control even for static websites.
There are two key benefits to hosting your source with these services. First, your source is independent of your work machine. If your machine crashes, you replace it, or even if you space out and delete some things you shouldn’t (that would be me), your code will always be safe and secure in the online repository.
The second benefit is an easy-to-read commit log. With one click you can visit a bookmark and see a timeline of changes you’ve made to the code in chronological order and in your own words. Just glancing at the commit log can be enough to jog your brain after a long absence and bring you right back into the project.
Second punch: A single Backpack page
I make a single Backpack page for each project with two lists and some notes. The two lists are ‘To-Do’ and ‘Debt.’
The ‘To-Do’ list is for things I really, truly, honestly plan to do next. I keep it very short, always less than five items. If it gets any longer, I’m probably fantasizing instead of actually planning to do those things. Whenever I return to a project, the top item on the To-Do list tells me what I should work on.
The ‘Debt’ list is for things I should have done but didn’t bother to do. The Debt list is partly a psychological trick. It helps me cut corners without feeling too guilty. Should’ve added validations to that model? Add it to the Debt list. Wrote a condition without thinking too deeply about the edge cases? Just add it to the Debt list. But it’s also more than a band-aid for laziness. If something breaks or I run into some unexpected behavior, chances are a quick glance at the Debt list will point me to a corner that I cut or a step I skipped and lead to a direct solution instead of an hour of head-scratching.
Lastly my Backpack account is SSL protected, so I feel safe storing information about my production environment. I can never remember where a project is hosted, what the username and password are or if there are particularities with the configuration I should know about. I keep all this server info on a note at the top of the page, so each time I need to log in I don’t have to go digging for passwords or welcome emails from my host.
A powerful combo—when you hold up your end
All the lists and logs in the world won’t help if you don’t create some good habits. Commit frequently, and whenever possible write commit messages about your intention, not your implementation. Say “Fix the broken sidebar layout” instead of “Fix a typo in the class name.” The former will be a sharper hook to your memory later. For the Backpack lists, try to be brutally honest. A mile long To-Do list is proof of time wasted, not time saved. Focus your To-Do list on the next few things you need done, and limit your Debt list to Debt that actually matters.
This system has helped me organized my side projects and optimize the short slices of free time I can dedicate to them. I hope it works for you too. Let us know in the comments if you have any systems of your own for managing side projects over time.
Timon 02 Sep 08
I noticed on the Twitter feed today that Basecamp was down.
However, I don’t see anything about the outage on your status page (http://status.37signals.com/).
Is the status page no longer in use?
Pablo Corralon 02 Sep 08
Thanks Ryan for sharing this stuff. It’s very valuable for any side-project-worker. Also, being able to “switch clean” is a must have skill for any entrepreneur, on any business.
MIon 02 Sep 08
@Tim: Yes, status.37signals.com is still in use, but in this instance things were back online before we had any useful information to report. The status site is primarily intended to provide updates when our services are unavailable.
Andy Kanton 02 Sep 08
Thanks for sharing your process which may help me out since most of my side projects I might work on quite a bit for a week or two and then leave it for a month. Also, this reminds me that I should put more effort into organizing my notes on side projects (todo lists, notes, and UI concepts currently exist on pads of paper around my desk – not very efficient ;-).
EHon 02 Sep 08
Ah, thanks for this. I’m dealing with this RIGHT NOW, which is an easy situation when I have a post-it on the side of my monitor here with the names of about 10 projects for me to attend to.
Raphael Campardouon 02 Sep 08
You mean that I’m not alone ?? There are more who spend months without touching a project…
What a relief :)
More seriously, I use the off periods as a filter: if the project doesn’t stick in my mind enough for me to getting back on easily, it’s probably that it doesn’t deserve my time.
But that’s still a good method you’re pointing at.
I don’t use repository (but I will try), and simple text files among dev files serve as your backpack page.
In the end, I never found anything more simple than a text file.
Alejandro Morenoon 02 Sep 08
I LOVE the idea of the Debt list!
Granton 02 Sep 08
I love the debt-list analogy. I tend to have one additional list for my projects: Future Stuff
Sometimes the list contains needed functionality that I haven’t implemented yet, but often it acts as a place for me to dump ideas to deal with later. The key is that not everything in the Future list will actually get implemented. But it’s a place for me to capture feature/ui ideas that I sometimes get as I’m coding and my brain gets ahead of my current task. Before I did this I would often lose/forget these random ideas – or feel I have to sidetrack my current task to do something new before it is forgotten.
Alan Wallaceon 02 Sep 08
Thanks Ryan, always interesting to see how others manage this kind of thing. I tend to use the wiki in github rather than backpack(sorry!) but it’s a good call regarding the SSL and storing allthe more sensitive details.
Zachon 02 Sep 08
Debt list is great. Sometimes you do little things “wrong” that might be right at the time, but its defiantly a good thing to record them. I can’t remember if this is in getting real, but it really should be.
Olexiy Prokhorenkoon 03 Sep 08
Unfortunately, even if hosted version control is a good thing to have, you still need pretty often to have your own server (Slicehost is fine and cheap i.e.), where you deploy and test, and/or show client the results. But if you have your own server – why do you need hosted version control? It takes minutes to set up your own on your own server, so… If there’d be some solution, which gives hosted version control + deployment point not for production use, but to “show” and “test”—that’d be a neat thing
refer Nowon 03 Sep 08
I definately loved this thank you for the post it was very informative
Artin R.on 03 Sep 08
There was a great Hacker News comment about this very thing. User jmtame suggested “Try to at least see your code every day, otherwise it’s like coming back from a week-long vacation and not remembering your code very well. Ever stare into the sun and try to get around in a dark room? It’s like that.”
coldFlameon 03 Sep 08
I second that – running a VPS with version control and some kind of todo list costs about nothing. Using slicehost as well, btw :)
Cameronon 03 Sep 08
Wow great post. I am in this situation, and have no version control locally or hosted. This is mainly becuase I don’t know much about version control and how to use it successfully. I would appreciate some help on how to use GIT.
RSon 03 Sep 08
It depends where your skills are. I’m not very comfortable with server setup and administration, so I opt for hosting options that take care of everything for me. Hosted version control services make my life easier as a person who isn’t very knowledgeable outside my own development environment.
Chris Nageleon 03 Sep 08
Ryan, great point. It’s exactly why we created Beanstalk in the first place. We were able to manage our own Subversion repositories, but it took away from valuable time we could have used somewhere else. Now that we use both GitHub and Beanstalk I can’t imagine not having the activity view. It provides a great snapshot of progress for our clients and our team.
Sethon 03 Sep 08
Yes, but are the MEMO / TEXT fields encrypted in the Backpack database? :p
Seth...againon 04 Sep 08
Also – don’t most people have their SVN servers setup separate from their dev machines? I know GitHub is the new “in” thing, but really….
joEyon 04 Sep 08
I’ve found this useful:
“The Next Action. Knowing that you don’t need to track everything you could conceivably do about a Project; you just need to know the next physical action that would get you closer to completion.”
I have the opposite problem; I’m working on too many projects on a daily basis, so the next action is a good way to remind myself where I left off.
Coryon 09 Sep 08
I am having this same problem, my side project gets getting sidetracked for days at a time.
I have started carrying a small notebook with me though and jotting down notes as I think of things so that when I get back to work on my side project, I can look back at my notes to help refresh myself faster. Seems to work pretty well so far.
Kevinon 09 Sep 08
Excellent post. I especially like the idea of having a “Debt” list. Great idea!
This discussion is closed.