Making software is a social activity
There’s nothing quite like having inspiration for a software idea and then jumping into your editor to start coding. At the beginning everything is great: you’re bootstrapping everything and implementing the core idea, fine tuning the UI for the experience you want, and making minor adjustments to the concept as you start to actually use it. But after a while motivation starts to wane and then one day you don’t even open your editor. Eventually you forget about it and question what you found exciting about it in the first place.
This is how most side projects go for software engineers. We have a spark, we rush to work on it, and that eventually fades. I’ve done it many, many times.
I actually don’t think this is a bad thing to go through repeatedly either. Ideas and motivation should be harnessed and put to use when they are at their strongest. Even if you end up shelving the project after a week or two, you will have utilised that spark and either created something meaningful or learned something in the process. At this point I’m fully aware when embarking on these kind of projects that I’m probably going to fizzle out eventually, but still I plough ahead.
But what if you want to actually launch something and see it all the way through? It’s obviously doable. People do it all the time. But I think the secret sauce to making it happen is that you need to involve other people.
We rarely have an issue shipping software at our day jobs. Open source projects continue to have thousands of contributors all helping out. Content creators in the programming space are continuously working on new projects. Kickstarter campaigns continually show updates (maybe not the best example). And people building in public will post and update on their progress.
While there’s nothing stopping you from succeeding in what you set out to do behind closed doors, as soon as other people are involved we seem to reduce the possibility of failure to ship entirely. Someone is out there waiting on a new release, or is encouraging you to ship, or is even helping you by contributing. The social aspect of building something together keeps things on track. Where you might give up and throw in the towel because you’ve lost the spark, someone else can carry that forward, reigniting your passion for it.
It’s incredibly fun and rewarding to see others use what you build, or work on it with another software developer. For me that’s a huge part of what I enjoy about this profession. If I made software entirely by myself and didn’t hear any feedback from other people I’m not sure I’d like it anywhere near as much.
So if you really want to ship something: involve other people!
If you’re not confident in building in public, maybe seek out some mentorship. For the Ruby community something like First Ruby Friend is a great way to work on something with a mentor, or to mentor someone else yourself.
Building in public and keeping a log of what you’re doing can be a great source of motivation to keep yourself accountable. Just see what Jeremy Smith did when working on Liminal.
And if you’re looking to contribute to Open Source there are countless issues and features that projects would love to see you contribute towards.
Don’t shy away from getting involved in the community for your programming language, they’re almost always welcoming. They know that without people joining and helping out and talking that their community wouldn’t exist.
So next time when you have an idea, see how quickly you can get someone else involved to help you along.