8-minute read
A few months back, I was behind on sending invoices to my clients.
I only send a couple a month, but I was sick of paying Stripe an additional 5% for each invoice, and the SaaS I had started paying for really wasn’t worth the fee.
The time I spent researching SaaS solutions and going through trials was a colossal waste.
The software was either bloated with a bunch of stuff I didn’t need/want, or it was overpriced and missing key features like recurring invoices.
I was fed up!
And that is when I decided to build my own invoicing software. And I am not even a hardcore coder.
The first version would take me about a month to complete and it would only be a working concept or MVP, but it actually worked!
I was stocked!
Not only to have a solution that was exactly what I wanted but to have one that I built!
But it wasn’t all sunshine and rainbows.
There were a few nights of pain and frustration that almost got me to give up on the entire project.
Reviewing the process and the entirety of what I went through to build this app, I came up with three lessons that can help you create your own solutions to solve your biggest challenges.
Lesson #1
Focus on a single problem 🧘🏼♂️
In my case, the simplest function I needed was to generate an invoice and make it easy for the client to pay that invoice.
As you start building your solution, you will have all these new ideas or start thinking about features you don’t really need.
Also known as Scope creep.
Your goal should be to stay focused on solving the core problem. You can also add more features later.
But first, we need to make sure we can solve the core problem.
This happened to me when I was building my invoicing app. My single focus was to solve this problem for me.
But as I started building this out, I started thinking about how to turn it into a SaaS so that other people could pay to use it.
This thought process started changing how I built specific features because they needed to be user-friendly, not just available.
I went back through what I had built and started changing things.
It cost me about four days of progress.
How to stay focused
There are two key things I did to get refocused.
#1 Whiteboard
⚠️ Warning: this can get messy!
I don’t actually use a whiteboard; I prefer the huge Post-it pads that hang on the wall.
This is always where my ideas start.
I write down the issue or feature, and then I start brainstorming to get to the core of what needs to be built.
Once I have things ironed out and a clear vision of how to get the thing, I get organized.
#2 Use project management software
I use GitHub.
I created a new repository and added every uncompleted task as an issue.
Then, I set up a project and began organizing the tasks based on the importance of MVP completion.
From there, I treat it like a game; how many tasks can I complete today?
You can also use tools like Notion, Asana, or a million others.
Lesson #2
Start with what you know. 🤔
Let me be clear: I am not a brilliant developer who knows how to write a bunch of code.
Which is why I decided to start with what I know.
I have been building WordPress websites for 15 years, which gave me somewhere to start.
I’ve also been supporting and writing about Gravity Forms for the past four years, which gave me another framework or platform to rely on.
If I had to build this thing from scratch, it never would have happened.
Even the best AI tools could have gotten me from zero to a working concept.
This foundation meant I was asking how to build it using WordPress and Gravity Forms.
Not: How do I write JavaScript or build invoicing software?
I leveraged existing software to build my app and solve my problems.
This might even mean working with someone you know who has the skills you don’t.
If positioned correctly, you might find someone willing to work as a partner to turn this problem into a business.
Leveraging AI
AI has come a long way, just in the last year, but it’s not completely ready to build your software from start to finish.
But that doesn’t mean you can’t use it.
I use AI when building these apps in a couple of key ways.
#1 Brainstorming
Sometimes, I just need to discuss my ideas with someone smarter than me so that I can clarify them.
If you prompt AI correctly, you can use it as a sounding board to challenge you and offer real feedback and suggestions.
#2 Validation
Once the brainstorming is done. The next step is to validate the idea and validate that it can be done with my software stack.
Remember, I’m not building this from scratch, I’m using Gravity Forms, WordPress, GenerateBlocks, and Advanced Custom Fields.
#3 Code Snippets
There are bound to be bits of the project that need some custom code to get them across the finish line.
When you can focus AI on what you need and help it fully understand the end result, it will help craft the needed solution.
For better results, try to find a GPT trained in a specific coding language or software.
There are a bunch of custom GPTs at the GPT Shed that are worth checking out.
Lesson #3
Trim the fat ✂️
If you’re building software to sell, this is a crucial step.
You need to ensure that how you have built things won’t negatively affect the user experience.
This might include cutting things out, changing how something works, or adding a new feature.
After I had built my proof of concept and had a working app, I went back through to trim the fat.
Leveraging other software like WordPress plugins, things can get bloated.
So I went back through my app and started looking for what I could cut or what could be replaced with a code snippet.
I also wanted to improve how things looked, and part of that meant doing things differently.
I’ll share two specific examples.
#1 User Setup
My initial approach was to use the existing interface provided by WordPress and Gravity Forms to configure the system, which was fine if I was going to be the only user.
However, if I wanted to sell this software to other users, it would need a simpler user interface.
The system was set up using user meta from the user profile to populate the invoices with company data like name, email, phone, etc.
Finding these settings would have been impossible for someone unfamiliar with WordPress.
The solution was building a user profile page with all the necessary settings to configure their account.
The second part of that was to present the user with this page during the onboarding process.
#2 Features Access
A few features were only accessible via the WordPress admin, again presenting an issue for the user.
One of these features was the ability to resend the invoice email.
This feature could be complex, but I simplified it to ensure I could get it to work first.
With the help of AI, I created a code snippet that would allow you to resend an invoice email from your list of open invoices.
This was a bit of a challenge, but because I was leveraging existing software, in this case, Gravity Forms, the functionality already existed; I just needed to make it accessible from the front end.
You might wonder how adding more features or a new user profile page is “timing the fat”.
It’s simple.
Before these changes, the user would need to take at least 5 steps to perform each of these different actions.
Now, they can complete each one in a single step.
Final Thought:
You don’t need to be a hardcore coder or spend a fortune to build software that works. With the right focus, tools, and mindset, you can solve your own problems and create something amazing.