When we think of a software developer, we imagine a person that’s always at the computer, focusing on creating some world-changing app, spending nights improving the performance of a software procedure, fixing bugs all day long, or trying to create the next machine learning algorithm.
That’s probably true for many developers that work in a traditional career. They work for a big company, a startup, a bank, or any other employer.
Some of us, including me, are experiencing a completely different career.
Sometimes I watch a conference talk on YouTube about some really, really obscure programming topic, and I wonder “where did this person find the time to learn all this stuff”?
There’s not enough time in a day for me to even watch that talk, let alone discover all that stuff in the first place. Then I remind myself I’m different. I’m full-stack.
In Web development, full-stack means you do both frontend and backend. But here I’m giving full-stack another meaning. A meaning I discovered through this post by Thiago Forte which in turn I discovered through this post by Mr RIP.
I’m an independent software developer. I’ve been independent since… let me check… forever. I’ve never been employed by anyone. I’ve never been an employee. A contractor, freelancer, yes. But never an employee.
And looking back I’ve always been a part-time contractor. Working half-days to pay the bills, working the rest of the day to work on my own indie projects.
Web apps, mobile apps, open source, CMS plugins, themes, desktop apps, training projects, I’ve tried it all. Sometimes dumb ideas, sometimes not.
There is a world of difference between the skills you need when working as an employed software developer, and the skills you need as an independent software developer.
Imagine you want to create your own software product, and sell it independently.
You have to wear so many hats!
You have to know how to make sure the project you work on is a good idea. This is not trivial, and also involves luck and timing.
You have to be good at branding, so you come up with a memorable name for your app.
You have to be a good designer, to design the landing page.
You have to be a good copywriter, so you know what to say in this landing page.
You have to be a Web developer to create the landing page.
You have to be a DevOps person to deploy the landing page.
You have to be good at marketing. That’s how you know how to collect emails for your first beta.
You need to get some legalese in place. Privacy, terms, GDPR..
Did I forgot anything? Oh yes we haven’t yet started working on the software product you wanted to sell.
You have to be great at that. Great execution, solid backend, an architecture that scales, a nice UI and UX, security.
You have to know how to deploy the application, how to quickly deploy updates, how not to crash it with migrations.
Then you need to be good at marketing. I hope you had an audience interested otherwise you’ll learn that you don’t “build and they will come”. You need to know how to properly write emails that are opened by your prospects.
You need to learn how to do SEO, how to do content marketing, how to do sales, how to be a guest in a podcast or YouTube channel to raise awareness about your product.
I hope you’re a great speaker, and preferably a native English speaker.
Of course you can hire someone to help you with that. I mentioned about 15 different professional areas. Some of those will need a team of 5 people minimum.
Let’s now get some venture capital money to pay those 30-40 people every month, I hope you already have some good contacts in Silicon Valley!
Unless you’re a full-stack indie developer like me, and you absolutely love doing that kind of stuff. Wearing all the hats you need to wear to get your creation off the ground and in the hands of customers.
And in 99% of the cases, eventually you’ll end up failing and spending hours reading the success stories on Indie Hackers.
Or perhaps you’ll be in the 1% and you’ll succeed.