What you’re about to read is such painfully obvious business common sense that I’m ashamed to be writing it, but it’s based on a true story: I failed spectacularly in trying to build a software business. And Mr. Naive Would-be Entrepreneur, you might be considering doing similar things and dang it, if I can stop you before you start then I’ve done something good. I don’t want to relive this failure, but I’m writing this for you.
Below are lessons I learned while trying to build my first software business in ~2010. Here’s an outline if you don’t want to read the whole thing:
- Don’t start from a position of desperation
- If you’ve been a developer for < 3 years, keep working for the man
- If you saved $10 on hosting, you’ve already failed
- Don’t make a recipe website
- People won’t tell you your idea is bad because “the internet” and they’re too nice
- If you’re really sensitive to criticism, your idea is too fragile
- Now is not the time to try a new technology
- “And then I’ll SEO” isn’t a growth plan
- Don’t waste social capital on crappy ideas
- User Interface actually matters
Power makes people crazy, and programming is powerful: Input electricity & coffee, get software.
Programmers often overestimate their own power. “I could do that in a weekend” has become a cliche.
I let that power get to my head one time. I was unhappy at my full-time job, and I thought I could use my new “full-stack” skills to start a business that would give me independence.
My idea was a recipe site called EatGenius (I actually still like this name). EatGenius’s defining feature was that you could input the ingredients you had in your fridge and it would give you a list of recipes you could make with those ingredients. Not earth-shattering, but not the worst idea ever.
EatGenius was doomed from the start, for reasons that are obvious now. But they weren’t obvious to the business-illiterate, excitable, know-it-all junior web developer I was when I started. Here’s what I learned:
Don’t start from a position of desperation
The energy for EatGenius came from my unpleasant work situation. My boss was controlling the technical stuff (which was mine, dang it) and every day at the office was tension-filled. I desperately wanted out. Starting a business is a way out, right?! Uh, yes…but desiring to quit your job isn’t a solid foundation for a successful business.
If you’re anxious to start something because you’re unhappy with your current job, stop for 5 minutes. Anxiety makes people crazy. It distorts your perception about how hard it is to actually succeed as an entrepreneur.
Wait until you have peace with your job. Let the storm pass. It’s better to swallow your pride and endure an unhappy job for 1 more month so you can find clarity than spend 6 months pursuing a fruitless business idea that you only started because you were desperate to “escape”.
In your frenzy, take the first 5 ideas that come into your head, write them down, and stop thinking about them. Go back to your day job, and revisit them in 1 month. If any of them are really that good, they’ll still seem interesting.
If you’ve been a developer for < 3 years, keep working for the man
When I was a little kid, I tried to sell rocks on my grandma’s cul-du-sac. Not fancy rocks; I literally picked up a handful of landscaping rocks from a flower bed, stuck them on a table and tried to sell them for 50 cents. Needless to say, I wasn’t even able to raise a Series A.
In my rush to self-employment, I failed to realize that software businesses (like rock sales) are complicated and multi-faceted (like rocks): There’s sales, marketing, design, support, and (of course) lots of technical challenges. It takes time to accumulate wisdom about any one of these areas, let alone all of them – which is, by the way, what you’ll need to make a successful business.
If you’ve been around the software industry for less than 3 years, consider yourself a “toddler” developer. I recommend doing a “normal” job for a year or two, paying particular attention to the non-software parts of the industry you’re in: Sales, marketing, design, etc. The people working there are not dummies. They exist for a reason, and you won’t be successful unless you understand why they are important to a business.
If you saved $10 on hosting, you’ve already failed
If you’re spending any time to save $10, $50, $100 on business-critical items such as web hosting or software tooling, you’ve already lost the battle.
Your time is too valuable to be squandered on setting up self-hosted private git repos or trying to get your Rails app to work on the shared hosting plan you use for your blog.
Spend money on time-savers like Heroku for hosting. Don’t waste time configuring servers, using workarounds, or re-solving solved problems. If you can’t spend $100/month on your business, your business sucks.
Don’t make a recipe website
This also applies to social networks or pretty much any business-to-consumer idea.
Don’t make a recipe site unless you have a lot of money. Why? Because you won’t make any. Probably ever.
There’s a reason venture capital exists: To fund ideas that can’t make money. You’re likely the type of person who would like to make money, so if you’re not raising capital, try an idea that you can charge for.
People won’t tell you your idea is bad because “the internet” and they’re too nice
Despite the internet being around for at least 6 years, the majority of people understand internet business as:
- Make a website
- Money comes rolling in
As a programmer you know a lot more than the average person about this internet, so when you tell them about your business idea they’ll think it’s the greatest thing ever! Because surely: Being a programmer, you understand the hard parts and so this idea could be HUGE!
Non-technical people are almost useless for constructive feedback. So what about technical people? If you’re lucky enough to have someone who is tech-savvy and knows a bit about business, you’re actually not much better off. People like to be nice: They don’t want to shoot down your ideas, because it’s really not worth it because you probably won’t listen anyways even if they do have good criticism because you’re too enamored with your genius.
Which leads to the next lesson…
If you’re really sensitive to criticism, your idea is too fragile
Don’t let your idea be your baby. You can probably see how this all flows together: If you’re desperate to leave your job and you think you know a ton because you’re a FULL STACK developer, you might also think your idea is really excellent when it isn’t.
If you find yourself immediately formulating a defense when someone begins asking critical questions of your business plan, you’re too attached and you probably have a lousy idea.
Side note: I think true confidence in a business idea can be tested if you can keep your idea to yourself and not blab it to everyone. Try it. If you’re overly excited about your idea, you won’t be able to shut up about it, which means you’re probably not able to think critically about it. Most successful businesses are built with cool, calm, calculated execution.
Now is not the time to try a new technology
$technology_xyz is hot right now! You’ve been using that lousy PHP+MUMPS framework at work while the Valley programmers have already machine-learned blockchains that write their own PHP frameworks. Not fair!
Resist the temptation. Use tools you’re familiar with, and only use new stuff when you absolutely have a good reason to.
Warning: This trap never goes away!
I almost did it again! When starting WPAutoTest, I thought “Hey React is pretty popular, I’ll learn and use it on my business”. I bought a React course, and started studying. But wait – studying takes time! But wait again – I’m going to be slow with React and I need to move fast! Stop it!
Starting a business is a huge uncertainty. Why are you going to add more complexity by using unfamiliar tools? You’ll spend more of your valuable time fighting to learn the new tool, at the cost of developing your business.
“And then I’ll SEO” isn’t a growth plan
You’re an engineer, so you probably think marketing is largely snake oil. But let’s be honest: You’re just afraid and proud.
You’re afraid because you don’t understand marketing, you don’t like talking to people, and you’d rather just build something because the computer isn’t going to reject you.
You’re proud because you think you can just build a superior software product, and it’ll sell itself. Haha, marketers – I don’t need you!
For me, it was SEO: I’d throw a few pages out there, Google would pick them up, people would see how fantastic my software was, and I’d be rolling in users!
You can substitute your favorite marketing buzzword here: Content marketing, affiliate marketing, AdWords, whatever. If you’re not intimately familiar with your marketing method, you need to stop building and start learning sales. If you don’t, you’re setting yourself up for massive disappointment.
And when I say “understand” a sales or marketing method, you don’t have to be an expert. But you need to understand how it works, when it works, and (more importantly) when it doesn’t work. Building, then figuring out marketing later is like hoping lightning strikes your lousy business.
Don’t waste social capital on your awful ideas
Friends & family are an excellent resource to tap into, so don’t suck the well dry on your first crappy idea.
For me and my lousy recipe site, I reached out to EVERYONE I knew asking for recipes to seed the site. People emailed recipes. People sent recipe books. People gathered up old index cards handwritten by their grandma, stuck them in manilla envelopes and mailed them to me.
How much time did I waste for the people I love, only to take their recipes, slap them on a website, and then shut down that website months later?
Don’t tell everyone about your craptastic software unless you need to borrow money or something.
User Interface actually matters
Developers can often neglect the UI. I think it comes from hubris: We think the underlying technical merits of our software are so good, they’ll shine through the awful UI and people will use the software regardless.
The first Rails app I ever built was a bartering system. I got the idea from my dad, who thought it’d be useful to have a site where people from our church could swap items (this was before Facebook groups effectively took over this purpose).
I was a web developer! I had at least 1 year of experience! I built a basic bit of software that did the job, and I built the UI using Rails scaffolding (see here for an example of what scaffolding looks like). I sent a link to my dad, and called him a few days later in excitement: “Did you see the software I made?!”
“Oh, I saw that link you sent. Was there something on that page? I saw some text but yeah, couldn’t figure it out.”
I didn’t do much better with EatGenius: I went beyond scaffolding, but the UI was atrocious. I expected people to be so desperate to add their recipes to the site, they’d be willing to fill out a 20-question form to do so.
I know all of these mistakes are really bad, but I’ve gotten emails from people in the recent past who are doing these exact same things! I’ve even fallen prey to some of them more than once! Please don’t do them.
If you want, shoot me an email and I’ll help you stop building your bad idea.