It’s Personal: Your Pet Project is a Plant, not a Dog.
- Chris Wallace
- Sat Nov 12 2016
One question I get asked when showing a pet project is “how do you find the time to do it”? This really is a valid question, how does anyone find time to have a side project?
We’re soaked in a world where substantial open source projects and tech demos from gifted individuals are published hourly. Yet we’re all working a 9–5 job, sleeping, eating, making time for family/relationships, reading around subjects and just generally maintaining a healthy work/life balance.
My approach to any pet project has to be one ethos which is ‘Your Pet Project is a Plant, not a Dog’.
What do I mean by this? To put it into context a pet dog/cat/etc is something which has a lot of traits:
- They’re always on your radar (after all, they’re one of the family!)
- They bring companionship, affection and pleasure
- They require regular feeding, walking, grooming, insurance, visits to the vet
- It can leave us devastated when a pet is sick/dies/goes missing (sorry for being so depressing).
- Their unpredictability can impact our day-to-day lives
To put it into context, do any of these traits merit a pet project? The answer is no (or at least should be no). Although a pet project brings serious value (which you can read about in a previous post), as well as enjoyment and occasionally return dividends, it can’t/shouldn’t be given the same level of attention as an actual pet animal.
So what is the right level of attention to give a pet project?
From working on my last browsetothefuture project I think I’ve established the best analogy for a pet project. It’s not a pet animal, it’s more like a well maintained plant or vegetable patch. To put it into context:
- Plant’s require attention but not constant attention.
- They only really require food, water and sunlight.
- They may require further reading which may lead to growing other derivatives of plants, or different approaches to gardening.
- They’re a long process of incremental maintenance.
- If a plant dies, it’s (probably) not going to resonate as much as an animal companion.
- To reap any benefits from them (i.e. fruits of labor) you can’t let them die!
- If they grown into a tree they become much more self sufficient.
- They’re a lot easier to abandon (again very sorry for being depressing).
Does this sound more like a coding project? Hopefully the answer is yes. A friend recently said ‘Projects are the most abandoned type of pet’ and a plant is lot easier to part ways with than an animal (unless you’re poison ivy…)
My aim with any pet project is to get something out of it at the end (the fruits of labor). This could be knowledge and experience, some enjoyment, a productivity boost, or (maybe one day) a source of income. But this can’t take precedent over other immediate responsibilities (if the project’s that grand your pet project is most likely a pet horse or pet dinosaur which needs a much deeper investment in your time).
My project’s are of value (to me at least) but I know Rome isn’t built in a day and trees don’t grow overnight. Usually I create a basic backlog of ‘todo/doing/done’ and try and set out sizable pieces to be done each week based around my free time. This is usually around 2–7 hours over a week depending on whatever happens that week. These hours maybe back-to-back one day a week, or an hour a night (heck I might even be an hour sat on a train).
Either way I get a feeling of accomplishment each week and my project is ticking over and not dying. I know by the end of each week I’ve invested value in my future (maybe it’s something as trivial as writing a webpack config, but at least I understand webpack better for it and will write one faster the next time wherever and whenever that is!)
This isn’t an easy rhythm. Sometimes ‘your plant’ just won’t grow as quickly as you like, or it grows so wonderfully quickly it’s tempting to ‘water it’ too many times a week. I think the trick is to keep track of your accomplishments and retrospect personally as you go along. But here’s a few pointers I can suggest to keep pet project’s ticking over.
Stay on target
Make sure your pet project keeps the original intent (is it to learn a technology, is it to help you or someone else, is it for fun?). Not only does this keep your project concise but also helps you professionally identify scope creep. You’re not building all-signing production code so keep your attentions aligned with the intent.
Keep a backlog
It can be a trello board, a cork board and post-its, a notepad with scribbles. Either way use it to keep on top of tasks. I don’t suggest over-planning with epics, stories, features and tasks. Keep it simple, you’re allowed to cheat! Once you’ve added some value to your project, get stuff crossed-out or moved across on your backlog, it’s a refreshing feeling of accomplishment!
Keep a paper trail of your past achievements
Part of a pet project is reflection and regurgitating what you’ve done. Personally I use git as an audit trail of contributions, with branches for each to-do item (if I’m on the same branch for too long, I probably need to sink in a couple more hours to get off of it and pickup something fresh). I know if the pet project is growing poorly I can backtrack quickly. I can also view individual commits to help revisit examples at a later date (if I’ve written something critical, I’ll be sure to highlight it within the commit message).
Don’t set yourself a hard deadline.
Deadlines are for 9–5, pet projects should be fun and keep your passion for code and learning alive. If you start beating yourself up over imaginary deadlines you’re only going to over-invest time in your project and burn yourself out unnecessarily. If you want consistent delivery, gratification and accomplishment (after all it’s your own time you’re spending) I suggest adopting a continuous delivery approach (code and ship and code and ship etc).
Always ask yourself if you’re getting the most out of your project.
Is the end goal, research topic still worthwhile? If not kill the plant or plant it somewhere new, either way move on to the next plant. There’s no shame in abandoning a pet project, your time is precious. Not only does this improve your skills at judging a situation, it also helps you detach yourself from code.
Plan when and what you’re going to do up front.
If I’m jumping into something brand new and scary then I make a point to do it when I know there’s no distractions (a wet Sunday afternoon for example). If I have to write arduous but necessary boilerplate, I’ll do it whilst waiting for my food to cook sat in front of MacGyver (or a much cooler tv show…).
Always ask yourself ‘is this the time and the place’ for such a task. My best advice is to look for pockets of time in your schedule. The bigger the pocket of time available, the more intense your task should be.
Hope this helps you write some PLANT projects of your own! If you have any other pro-tips or suggestions then I want to know!