Five things to consider before going indie

So you think you’re prepared to quit your job and live off your own projects?

This is a highly reflective article written by an independent Android developer who didn’t make it. It is zero motivational bullshit — only cold hard truth. You have been warned.

So, you’ve decided to make a living of your own apps? Always wanted to build what matters to you instead of slaving for the big boss? Saw others game the system and got inspired to do so yourself — write an app once and live off the passive income for the rest of your life, chilling? Congrats, you’re a fool just like me! But don’t worry just yet. Maybe you’ve got what it takes to actually succeed in your endeavor.

1. It all begins with a proper attitude

Let’s start with a small checklist. Are you:

Very passionate about coding?

Ready to dedicate all your free time to your project?

Aiming to make it the absolute best?

Not caring about profits, but rather about making a difference?

Not really going out much anyway, so you don’t mind sacrificing Friday beer, your sex life, meeting your relatives etc. for a while?

If most of these are yes, sort your fucking life out first!

The traits mentioned above are very typical for a miserable geek. An immature romantic. A no-lifer. Trust me, I’ve been there. Such people believe that if they work super hard and put everything else aside they will succeed. But the truth is, if you walk that path you probably won’t even get a chance to finish the v.1 of your app before you completely burn out.

As with everything, there’s a reason how this mindset is formed. People who get into engineering (particularly coding) not because of money but because of passion often turn out to be social outcasts. Their natural giftedness in logical thinking had prevented them from conversing with peers since the early childhood. They grew up introverted, constrained, and eventually got into computers as a form of escapism. Because of the lack of real life experience, their mindset was mostly shaped by surrogate emotions from watching movies, TV shows, playing video games, reading random things on the web etc. As a result, they’ve developed a very idealistic, black-and-white outlook where the good and honest working guy always wins. Those are the people who work hard and overtime, never delegate, and never ask for a raise. You will never find them on management positions either — they’re only good at doing their assigned job. They fall behind in confidence, often lead an unhealthy lifestyle and have poor work/life balance. And if such a person chooses to quit their job to liberate themselves from slaving for their boss and live a fuller life as an independent developer, all they’ll end up with will be slaving for their inner demons.

There won’t be a boss anymore, but the stress will remain the same if not more. Forty hours per week will become sixty, eighty — proper recreation will be put aside ‘until it’s done’. The person will stop enjoying life because there’ll be nothing left to enjoy. From there it’s only a matter of months until this ends up in crippling depression and the person is so paralyzed they can neither keep on working nor get their life back on track.

Again, I’ve been there. It fucking sucks. But the good news is — it’s curable. Not really in the scope of this article, but it’s curable. And when you’re all good, the chance of your success skyrockets infinitely.

So my advice here is: when you go indie, do absolutely NOT dedicate all your time to your project, do absolutely NOT put aside your life to get it done faster, do absolutely NOT spend extra hours polishing it to perfection sacrificing the joys of life you’re doing all this for. Lead a healthy lifestyle now, have enough sleep, sex, workout, human interaction, cater to your needs and desires, take it easy, and everything will be fantastic.

Bottom line:

If you feel like you can’t lead a natural, balanced life, fix your mindset first.

2. Did your mama teach you to fail?

If you’ve read some other motivational articles, you’ve probably seen that they often commonly name perfectionism as a culprit of our development mishaps. But the real problem is the perfectionism’s root cause — the fear of failure.

Perfectionism is not a bad thing per se. Having high standards is inarguably better than having no standards at all. The fear of failure, however, is a real bitch: it’s the trait that makes you believe that you’ve only got a single shot at succeeding, and to not fail you must do everything flawlessly. This is especially painful for those who decide to quit their job and pursue their dreams: they are afraid of failing because for them that would mean burying their dreams forever, returning to their old worthless existence, and never considering taking the same risk again.

Perfectionism and the fear of failure often go hand in hand, so if you feel that you’ve got one, it’s highly likely that you’ve also got another. Both are the product of your upbringing, high expectations set by your parents, criticizing you for every mistake you make, no matter how gently — seeming like nothing to them but slowly killing your self-esteem. If you grew to be an overachiever, winning student contests and getting top grades all the time, this might be an indicator of you having this fear.

So what’s bad, you ask? When put into a constrained environment like a workplace, nothing. (And, actually, good grades and achievements may help you land a decent job, and if you’re aware of your worth, unlock you a higher salary.) But when it comes to independence, you’ll find yourself unable to complete any project — it will simply never be good enough! “People won’t like it unless I add feature X and also Y,” you’ll be thinking. And though people actually like all kinds of shit, and it’s impossible to please everyone anyway, you’ll stress out, and this will be the reason why you’ll never deliver.

Now, how to deal with it? Full disclosure now, I succumbed to this fear, I didn’t find the cure that would help me, and that’s why I’m leaving indie Android development for now. However, what is this if not a failure itself? And suddenly, I’m at peace with that. Nothing disastrous happened, I haven’t really lost anything — well, I spent 2.5 years with near to zero financial gain, but I got wiser, which may help me in the long term. And I haven’t given up on my ambitions of going indie either; this is not the end of me, and I may still revisit that idea eventually.

Hence my advice will be: fail plenty and fast! Just fail a few times and see that nobody actually gave a fuck and the world hasn’t skipped a beat. After that, embrace failures, learn to see them as attempts made and experience gained. Life is actually not that short, so you’ll have your second, third, fourth chance — but only if you let yourself fail the first one.

And here’s an article that may help you with that.

Bottom line:

If you are an overachiever, you must live through a few failures to liberate yourself from the fear. Better do it fast.

3. Be strategic

If you’ve been brought up in a working class home like me, your decision to quit a stable job and venture into the unknown will probably be a huge shock to your family. A ruthless and careless step, they will say. And be totally right — that is unless you develop a plan and act reasonably.

Most things in this chapter are obvious as hell, but I’ll put them here just for completeness’ sake.

Firstly, make sure you accumulate enough money before quitting. No one should be that stupid to go indie being broke already, but I’m telling you just in case. Prepare for at least a year (ideally two) of living without any income. Also given paragraph #1, don’t just have the bare minimum to survive on ramen, but save up enough to keep leading the same level of life as you did before (particularly, don’t you EVER move back in with your parents).

Secondly, start with the right project. You probably have some big idea for the Citizen Kane of apps by now — forget it! The ideal first project should:

be simple, i.e., doable in a week (it’ll take a few months anyway because you suck at estimating);

make you some money (ad revenue will suffice);

get you some following;

get you some code or skills that you can reuse;

or be a complete flop, teaching you how to fail and recover.

If your project hits 4 of these points, it’s good to go. And remember: under no circumstances should you multitask on several projects at once! You can pivot your priorities, cease development of one app and pick another. But when you abandon a project, just forget about it, see it as a failure, and move on. Because if you don’t, you’ll fall into the indecisiveness trap and be unable to work on any.

And finally, have a retreat plan. Chances are, despite all efforts you will fail for good and will finally have to resume your career. Therefore, while working on your projects try to learn and use tech that is marketable, i.e., that you can put on your CV and convert your experience into money.

(This is where I fucked up: I adopted vanilla Android development, trusted Android docs and Colt’s #perfmatters videos too much, and grew to despise all that Kotlin / RxJava / MVP / other hype-driven fluff. Well what do you know, these are the essentials now, and without these, even Google themselves won’t take me in.)

Also, don’t burn the bridges with your old job. You will probably never want to return there, but the chance to do so will give you some peace of mind.

Bottom line:

Make sure you don’t get broke, and make sure you always know what to do.

4. Nice guys finish last

Okay, this might have sounded a bit sexual. But just like there’s nothing sexy about being a nice guy in your dating game, there’s nothing good about being a nice guy in business. Well, unless you want to send your time, money, and enthusiasm down the drain, and crawl back into workforce, bawwing.

Improve the world with code — there’s this noble calling a lot of developers believe they have (unsurprisingly, see chapter #1). But too often this divine mission makes them blind to reality. As a result, these developers will gladly put their effort for the greater good expecting no profits in return: they will offer their apps at no cost or for donations, contribute to open source, help other folks in the community, on Stack Overflow etc. Furthermore, they believe being such goody-two-shoes will help them build better personal profiles, get noticed and praised, respected and adored, and will generally get them further in life.

Now say after me: THIS. IS. FUCKING. BULLSHIT.

If you’re a good guy, here’s a reality check for you. No one cares about your individuality or your feelings. To people out there, you matter only as much as the products of your work. They may enjoy your app if it makes their lives better (saves them money or time, or gives them some fun and distraction), yet they could give two shits about you, your life and your ideals, and will take advantage of you whenever you give them a chance.

And that’s exactly why you shouldn’t give two shits about them.

So grow the fuck up and remember:

You chose indie because that’s how you preferred to earn a living. You’re not doing this to become a saint. You’re doing this to fucking survive. Being an egoist and putting your needs above all is the only way to go. Everyone around you is doing exactly the same. Those who say they don’t are hypocrites. Or spineless fools who are asking to be fucked over. Users see you only as the workforce behind one of the apps they use — so you should see them only as numbers, conversions, and lifetime revenue. Pretend to care about your users, be nice and all, but don’t get attached. Those are the strangers who only care that you give them more stuff for less money. So don’t get personal, and NEVER let them dictate what you should do. Put your trust into analytics instead. Value your work, put a price tag on it, make users pay. People are getting too comfortable with not paying for software these days, which also hurts you. Surely, some users will get pissed, but fuck them. They would never do anything for free for you. For the same reason, don’t bother contributing to open source unless you are absolutely positive there will be financial gain (immediate or not). Or, for that matter, unless you have nothing better to do with your time. All those GitHub projects and Stack Overflow ratings are only good for letting others see that you are eager to do work for free. And most importantly, learn to forgive yourself. Make a pact with your moral sense. This is not you being an asshole — this is how economy works. All the above still applied when you were an employee, only that it was your business owner’s burden. But they were okay with that as long as the cash flowed with the help of your hands, and so should you.

If any of this makes you feel uncomfortable, then indie development is not for you. Go back to your job, and keep your pet projects as your nerdy little hobby instead. Like, seriously.

Bottom line:

You must learn not to care what others may think, and put your interests first.

5. You are a business now

Just look how far you’ve come!

When you were an employee, you were merely a workforce unit, doing your assigned job, completing your tasks, getting your agreed salary, having strictly defined responsibilities, being shielded from any business liabilities, and having no say in any company-wide decisions.

But now you’re going to be a developer on your own. Now you make all the choices. You define the strategy. You manage your risks, your budget, and your other resources. And you take full responsibility for the work you’re doing.

You are becoming a business. And you should think and act like one.

Everything written before — that’s only what you need to get there. But even if you manage to make a few apps that totally pay off your living at the moment, this will not last forever. Eventually, they will all reach their limits, attracting no new users, being surpassed by competition, losing their spotlight and lastly falling into obsolescence. So to actually stay there you must finally let go of your engineer mindset and adopt the mindset of business.

Here’s what a developer cares about:

working on an interesting project;

writing good code (because they will have to maintain it themselves);

being ethical to users, e.g., being generous with free features, having gentle monetization, keeping ads to a minimum etc.;

their personal reputation (from doing quality work and playing nice).

And here’s what business cares about:

maximizing profits;

delivering products that are capable of generating maximum profits with as little investment as possible, and shipping them at the right moment;

with as little investment as possible, and shipping them at the right moment; their public image — but only to the extent that it may affect their profits (you think Google fired that manifesto guy because they cared about the cause? Bollocks, they just didn’t want to piss the media and the investors off because that would mean their stocks going down);

(you think Google fired that manifesto guy because they cared about the cause? Bollocks, they just didn’t want to piss the media and the investors off because that would mean their stocks going down); sustained growth, via unethical means if must be.

To sum up, business doesn’t concern itself with feelings — but only with sustained functioning, which is achieved through cold hard calculation. That’s why you must suppress the last of your emotions and remember:

Working on an interesting project sure is nice, but all that must matter to you now is generating positive cash flow. Unless you’re lucky to have an idea that sells immediately (and you’re so confident about it that you can go and pitch to investors right away), swallow your pride and go develop something that does — even if it’s another fucking Match 3 slot machine, a retarded single-tap game with shitload of ads, or a blatant rip-off of some hot title put together from Unity assets. Only when you have satisfactory cash flow you may allocate resources to developing the apps you want. Good code is overrated. Business doesn’t care that writing bad code now will bring you suffering later — what matters is that you deliver a working product fucking ASAP. And actually, why do you even think it will be you who’ll suffer? You are not seriously going to write code till you die of old age, are you? So that’s why your goal should be releasing fast and cutting corners wherever possible. If the app fails — good riddance, no need to support it. And if it succeeds (and I mean financially) — you’ll just hire a few interns to maintain it, and voila, the shitty code is not your personal problem anymore. Now, about that last part. From day one you must clearly understand that eventually, you’ll have to grow. You won’t be physically able to support everything yourself, and — if you come that far, chances are that you’ll be fucking sick of coding by then. Naturally, you’ll have to hire people and delegate your work to them. And that’s where you must be mentally ready to screw people over: hire passionate inexperienced dweebs who’ll be eager to work for you for a bowl of rice, acquire cheap coders from third world countries, play mind games on your employees in order to pay them less etc. — do everything you can to make them generate you more profits while keeping the most of it to yourself. Unethical? — perhaps. But that’s how you stay afloat, and that’s how every fucking business internally works.

I wish I could say all that was sarcastic, but it’s not.

Bottom line:

Learn to suppress your emotions and plan with cold hard calculation.

Be morally ready to make decisions that you would find devastating as an employee.

Conclusions

Indie development is not for pussies.

No, I’m not discouraging you from quitting traditional employment and trying to do your own thing. Quite the opposite, I believe that working on one’s own terms is what every professional should aim for. I’m writing this piece because I learned those lessons the hard way, and perhaps after reading it you won’t repeat the mistakes I made.

Or fucking go and repeat them! Because who the fuck am I to listen to?

— And who the fuck are you?

— Glad you asked. Long story short, I spent last 2.5 years trying to become an indie Android developer. Over those years I earned FORTY FUCKING BUCKS. I haven’t even withdrawn it from Play Store yet because the transfer fee alone is $20. And in all that time I published only one decent app — Material Cue — and even that one is still a bloody 0.9.something because it’s NOT FUCKING GOOD ENOUGH! This app used to have in-app purchases (aka early support donations), but at some point, I removed those too.

Here I want to say thank you to my 26 anonymous backers for those forty total bucks, and sorry for never releasing all those “pro features” that I promised.

Thank you unironically.

And on this cheerful note, I officially announce that I’m leaving Android for now and returning to my previous area of expertise: test automation for web apps. Nothing changed there in these 2.5 years; companies worldwide are still making the same dumb mistakes trying to implement automation on their own (definitely a topic to write my next stories on!) But now there’s me to the rescue: I do know a thing or two about good enterprise-grade test automation, and I’m willing to help these companies build great automation projects from the start, saving them years of wasted effort.

Is your company one of these by chance? Why not tell your boss to hire me?

And to others — thanks for bearing with me to the end. Liked the read? Follow me to be the first to get my new stories in your feed. Also, write in comments what you think. And perhaps clap a little? That will make my heart go faster.

Take care!