Feel The Fear and Launch It Anyway

Getting TweetHours to v1.0.0 v1.0.6 (ahem) hasn’t been easy. But, it has been a lot of fun. Before going any further though, allow me to give you a little back story.

TweetHours is a mobile app that quickly allows Twitter users to find interesting hours they can get involved with. If today was a Monday but one of the hours you were interested in didn’t start till 6pm on a Thursday then TweetHours will set a reminder for you so you don’t forget and miss out. Then, each following Thursday at 6pm you would get a reminder, and so on.

Now, aside from the technical aspect of building such an app, what has been most interesting to me on this project is that I didn’t come up with this idea.

Mobile Apps + Ideas = Eject, Eject!

Ideas are usually the place I start, but I’ve been bitten by this approach so many times before that this time I wanted to do things a little differently.

The problem with ideas is that everyone has them. And everyone who has them thinks that their ideas are better than everyone elses. It’s one of the psychological phenomenon where we believe ourselves to be better than we really are at everything we do. Male drivers are a great example. We are equal parts Hamilton, Mansel, and Fangio as soon as we are behind the wheel of any motor.

Mostly my ideas are great for me, but they are not viable businesses. richard-bransonThey solve my problems, but it would seem that from prior experience, my problems are shared by so few people that they could never be sold at such a scale as to attract a multi million pound buyout and start my subsequent retirement to Necker Island with Richard.

And apps attract ideas like 4chan attracts controversy. Honestly, when asked by anyone what it is that you do for a living, never say apps. People assume this means you must be eager to hear their app idea – which is frequently so vast in scale it makes the modern Facebook infrastructure appear as a mere side project – and then balk at the potential price for building said app starting somewhere in the six figure range.

I’m used to working with clients who have their businesses dictate what needs to be done. I’m also used to building ideas I come up with. In the former case, once the software is built, I am often surplus to requirements and as such, no longer getting paid. Boo. But such is life. And in the latter, well, once I’ve built my ideas I usually find there is actually no market for the tool or app I’ve lovingly created, and so I resign to the fact that simply doing the work was worthwhile so long as I learned something.

This approach sucks, and now that I’m consciously aware of it’s short-comings, I am actively working to avoid it.

Not My Idea, Don’t Blame Me

As mentioned though, TweetHours came about as a result of an apparent need that had not yet been fulfilled. I know, right?! We’ve made it all the way to 2015 and somehow there are still some ideas left that haven’t been turned into a mobile app.

That is to say, a potential customer (not really, I mean my wife) asked me for it. And others in the same or similar fields reacted positively to the sound of it. This is not to say I asked other people’s wives, but rather others in the b2b sector that my wife was working in at the time.

How hard can it be to do a Mobile App Launch?

As mentioned, the app premise is simple. A list of hours, tick the ones you are interested in, receive alerts when they start. Now, I’ve covered already both on this blog and on the tutorials site that in actuality, and of course as any normal software developer will tell you, it wasn’t as simple as it first appeared.

The alerts were tricky. I really should have RTFM more as all the answers to that problem were already well documented.

Getting the imagery sorted was another task. I chose to outsource this and was super pleased with the results. Design isn’t my forte and you really can’t go to market in 2015 with an MS paint monstrosity. And besides, I don’t even use Windows anymore so that would have meant bringing out the gimp.

I built half the app and then took on a couple of pieces of client work. When I returned to finish it near enough a year later I hit so many upgrade issues I ended up starting the project again using the newer dependency versions and porting one file over at a time. Thank God for having the forethought to write a decent set of tests.

Mobile App Launch

Probably the strangest problem of all though was fear. Fear of releasing my app baby into a world full of 1* reviews and Internet crazy. I’d imagine this is somewhat akin to how my parents felt the first time I went out for a drive alone after passing my driving test.

if you build it and then release it, they probably won’t come, but ffs, do release it

So rather than release I set up a beta program. I’d never had to do that side of app dev before so it was new to me.

What a palava.

Google force you into using their Groups setup which is haphazard enough, and then offer no way of giving your app away for free to beta testers. Madness. EA and Dice pulled a similar stunt on me back when Battlefield 4 came out on the pc. Paying full price for a bug ridden crash to desktop simulator left me feeling uneasy about repeating that experience by asking my friends and family to pay to test my app for me.

Still, even though I barely used the beta function, it covered all the same setup required to put the app out into the real world, so it wasn’t a complete waste of time.

I made a bit of a boob in that I accidentally bumped my version in the ionic config to v1.0.0 when going into beta. Hence, the app that has gone live is v1.0.6. What a noob.

I could come up with a ton of reasons I hesitated on going live with TweetHours. I’ve covered just a few. But finally, on the 16th June 2015, I promoted my app to prod.

It felt good.

Now I can sit back, relax, and begin thinking up another great idea 🙂


Published by

Code Review

Code Review

CodeReviewVideos is a video training site helping software developers learn Symfony faster and easier.

Leave a Reply

Your email address will not be published. Required fields are marked *