Becoming a Software Engineer Entrepreneur
Browse Entrepreneur and Small Business Owners Reddit long enough, and you'll see quite a collection of threads that go like this:
"Hi, I am a software developer looking for a side project! Let me know what problems you have in your business, and I will write software to solve them. You'll get my software for free, and then I'll sell it to others for profit. It's a win-win."
You've read the books and entrepreneur blogs, took a few business classes, and you have the drive to succeed. All you need is a product idea.
And because you took the classes and did your homework, you know that the first step is to find the problem and solve it so here you are, hunting for problems. Someone does drop you a DM; the problem looks solvable, you are excited and ready to go - this is working! You are doing everything right.
Questions to Ponder
Do you have a good understanding of the business domain for your new project? If you are not familiar with the industry standards, you have no frame of reference to answer the following questions:
- Is the presented problem real? Does an acceptable solution already exist, but your client is not familiar with it or not using it for internal reasons?
- Is the problem significant enough to be a pain point for your niche market, or is it merely an inconvenience for your client? Would anybody else be interested in your solution?
- Are you solving the right problem?
- Is the problem just look solvable because you lack a deep understanding of what it would take to address it properly?
- Is your solution solves the problem correctly and generic enough that others may be able to use it? Are you sure that your client doesn't use a unique process that cannot be easily translatable?
- Is your client uses customized domain language? Would everybody understand the jargon in your app?
- Do you know the market? Does it consist of people who are willing and able to pay for your software? As far as you know, right now, your market consists of a single person looking for a free solution.
But what's the worst that can happen?
Even if nobody purchases your software, you've completed something and gained valuable experience in both technical and soft skills. So what's the downside?
Picture yourself working on a side project for a long time - that doesn't produce any income and can end up going in the entirely wrong direction.
You have a client to answer to and a reputation to protect, but you are not getting paid. You can't walk away quickly, saying, "actually, this particular problem no longer interests me; I want to do something else." You probably don't have a contract, spelling out how bugs are going to be addressed (and how quickly) and describing the agreed-upon maintenance and support plan.
And if you have never done anything like this before, you may not be disciplined enough to deliver the complete project by yourself - working all evenings and weekends with no free time to spare is tough.
You don't own the process or the product
Once you learn the domain, what would happen if you'd prefer to design the proposed feature differently? Or remove it? What if you don't like the proposed interface, considering it too confusing or too primitive? Would you have complete creative control?
When would the product development end? How would you solve the disagreements?
A better approach may be to release a product on your own and to see if you are disciplined enough and organized enough to publish something to production. Can you get people to use it? Do you have a good plan on how to maintain your product going forward after the launch day?
Yes, it's more challenging to find that one idea - but you'll own the entire process.
Where should you look?
Start with an easy approach - look in the familiar market. Think about your day as a developer. What is that one thing that annoys you? Something that makes you say out loud, "there gotta be a better way!"
- Make a plugin, template, tutorial for somewhat confusing concepts that still take you a while to write code for (bonus! teaching something forces you to learn it better yourself).
- Create a theme that solves layout problems you keep experiencing. Write a package manager extension.
- Stay on the bleeding edge of technology and crank out a code library that uses newly released framework features.
Whatever you pick, start small. Start with something you can design, write, and deliver in under a week, two tops - this way, you won't have time to overanalyze a product and try to add "just one more feature" or "I can do this better, let me rewrite everything first."
Once the product is complete, post it for people to use. Start advertising. Maybe learn marketing and how to sell something online. In meanwhile, create another thing. And then another. And another.
Congratulations, you just have proven to yourself that you can find a pain point, come up with a solution, and deliver successful products on a predictable schedule. You also learned that you could finish what you've started and got a better idea of what kind of projects make you happy - because it's impossible to keep going for a long time if you are not.
What do you like to do?
Do you prefer to make something and be done with it (until technology changes, like a layout template)? Or would you choose to have subscribers providing you with constant feedback and wishlists?
Do you prefer to teach and make tutorials or just write code? Do you like career coaching, or would it be better not to talk to humans every day?
Learn more about yourself, your strengths, and what you are good at.
Now what?
Be in control of your destiny.
The need for well-designed software is everywhere. It's hard to start going, but once you do, you'll see opportunities - because you've just trained yourself to look for problems.