We’ve all been there, we find ourself wanting to work on one of our brilliant ideas in our spare time but often we open the laptop, setup the project and then the motivation just fizzles away. Why? Where does the excitement go?
For me, first starting in Ruby on Rails, I spent all my time outside of work in front of my MacBook Pro frantically typing away and now… Well some days I can work for awhile and others the thought being in anything code makes me sleepy.
So what happened? Any number of things could be blamed:
- stress at work
- stress at home
- lack of interesting projects at the day job
- busy schedule
- release of a stellar time suck of a game
I’m sure many other developers can relate.
- Keep it small
- Have a reason
- Have fun
- Schedule it out
- Buddy system
Keep It Small
We, as developers, all have in the back of our mind that we’re going to build the next big web-app, game or website, but in all reality this is probably like a high-school quarterback planning on being in the NFL. Sure there’s a chance and working hard will increase that chance but statistics are working against you. So why not focus on building something that a specific group of people will find useful, fun or just a good waste of their time?
Start off with something small, something that does one or two things and does them extremely well. Start with something that you can see serious progress with only putting forth 4 to 8 hours a week on. You won’t feel the pressure of having a slow moving development while you have the normal stresses of your day job.
Also these smaller victories will keep you moving forward. If your creation only does one thing by the end of a week or two, but you are very happy with how your app accomplishes that one thing you’ll be more motivated to build the next module.
Have a reason
If the only reason you want to start a project is to make money off of it, then I really can’t help you. I don’t believe that a successful application, game or what have you comes from a place of money. It comes from filling a need in your or someone else’s life or because you truly love the idea.
Blogging has been a pretty powerful motivator for me. For a number of my posts I’ve invented an idea of something fun and interesting to make just to have something to blog about or an example for my tutorial blog posts. Since I’ve been blogging I’ve created:
Some of the best advice I can give anyone is make sure it’s a project you want to make. Recently I made an app solely to test out and learn requireJS, but the best part about it was that I was building a interactive map to share your progress in the game Rome Total War 2. If you follow me on Twitter or Google+ then I’m sure you have seen my updates to this map with a small message about what’s going wrong, who I’m mopping the floor with or my plans for the next time I play.
If you haven’t seen it, please check it out here.
This was one of the most fun projects I ever did, while at the same time I learned quite a lot about RequireJS, GruntJS and BackboneJS. The best part… I use it and I use it often.
Schedule It Out
I’m not the best at this and being under a more strict schedule at work I have a hard time setting deadlines and plans for myself at home but it truly is helpful. The most success I have had with this has been with this blog itself. I’m sure nobody ever saw it then, but my first website had a blog built into it and I wrote a post here and there but without any real structure, I let it disappear.
I told myself that this time was going to be different. I vowed that I would write at least two posts a month and with the exception of this past April where I spent two weeks in Thailand and Indonesia I have kept to that goal very well. So well I’ve been toying with the idea of upping it to three a month. I know, crazy right?
For projects outside of a day job, maybe its more helpful to be strict on the number of hours a week (minimum) you should spend on your project rather than “It has to be done by the end of the month!” The “two posts a month” gives me a lot of freedom for a busy life than requiring I post on specific dates would.
As I mentioned above you should also keep those milestones or goals small and obtainable. Small victories will keep you motivated, I can’t stress that enough.
This may not always be possible and it may also be the worst idea ever for some projects or even some people, but if you can get another programmer whose reliable and will be helpful to the project then it could be a big help. Not just for the aspect that two people programming is faster than one, in most cases anyway, but also for motivational purposes.
Having set tasks for each and due dates (or just required hours per week) the other developer can be a measure for how much you should be progressing and/or the amount of time you should be putting into the project. Plus, if you are working and get stuck on something instead of banging your head on the desk for hours you can have the second pair of eyes to see what you are not or possibly give you another way to approach the problem.
Just as I have mentioned in this post and other workflow related posts, what I’ve laid out above is probably not for everyone. It does however work well for me even if only in theory. The most important thing to take away from this is that you have to find some way of keeping yourself motivated.
Unfortunately my day job doesn’t always stimulate me and some of the projects I’m working on are the product of someone else’s ideas and needs. It’s the projects I work on in my free time that not only keep me happy when work isn’t as interesting as I feel it should be, but it also allows me the opportunity to learn, practice and experiment with languages, frameworks and workflows that I can’t at my job.
If you have methods of motivating yourself that is different from my list, please hit me up on Twitter or Google+ and let me know what they are. I’d be glad to hear about them and if I think they’re topnotch, I’ll share your ideas with others in this post.