4 Mistakes to Avoid When Building Software

By Matt Giovanisci •  Updated: 10/23/17 •  8 min read  •  Articles

Building a web app is fucking hard. I found this out by trying to build one in 60 days in a programming language I never used before. (Ruby, in case you nerds were wondering.)

And I’m not a programmer. Sure, I know how to code a mean WordPress Theme, but I was in way over my head. However, I was determined to build this app myself or die trying.

Like My Sex Life, It Started with Spread Sheets.

At the end of September 2016, I was updating a spreadsheet that Jason Zook and I used to track our website growth. And when I was finished, I sent it to him.

The spreadsheet tracked web traffic growth, email subscriber growth, traffic-to-email conversion rates, subscriber churn rates, and revenue growth month-over-month (to name a few).

We used this to pinpoint areas of the business we needed to focus on. I loved using it!

Get Sponsorships Monthly Metrics Spreadsheet

Jason loved it, too! Actually, he loved that I was updating and sending it to him every month automatically. He said something like…

Dude, it would be awesome if we could turn this spreadsheet into a software product that automatically pulls this data in for you. But I’m so stupid and dumb that I don’t know how to build something like that. Matt, you’re the smartest and most handsome person I ever met, can you build it?

Paraphrasing aside, I said yes because I loved the idea that I didn’t have to manually add shit to our spreadsheet every month. So without planning, I challenged myself to do it in 60 days.

30 Days Later…

I lost my shit, had a mental breakdown, and couldn’t write another line of code. Turns out I died trying, but at least I had a “prototype.”

The app I built allowed users to create an account, log in, add a website, and manually add their traffic, subscriber, and revenue data for the year. Then, it displayed three data points in giant, colorful circles.

Website page where you can add data manually

We had a product but the software still worked like a spreadsheet having to manually enter your own data. My breakdown started because I was trying to write code to automatically pull data from third-party integrations like Google Analytics, MailChimp, and Gumroad.

And I didn’t know what the fuck I was doing!

Lesson #1: Don’t give yourself 60 days to build a complicated web app in a programming language you never used before.

The Third Co-Founder

I wanted a challenge, but the crazy amount of stress I put myself through was just not healthy. For instance, I like beer, but I’m not going to try to drink as much as I can in 60 days. Or maybe I will.

Ok, bad analogy.

I couldn’t handle the stress of coding anymore. So we added another co-founder to handle the programming and get those sweet-ass automatic data integrations working.

The First Redesign

Now that I wasn’t coding the software anymore, I used my time to redesign the app.

I was trying to make things look a little better while we were working on good, solid code and a handful of third-party integrations.

The New Design Of The Spruce Single Website Dashboard

90 days after this project started, we were finally able to launch Spruce to “Founding Members.” These were our first customers who paid $299 for lifetime access to shoddy software that would improve over time with their valued feedback.

We gained 40 Founding Members in the first week! That was the most money I had ever seen from a product launch.

Things were looking good…except me.

The Rebuild

It was early December 2016 and we now had software that works. We had customers who trusted us and paid good money for our product.

Of course, the next step was to completely rebuild the software in a new programming language. (Go, in case you nerds were wondering.)

I don’t have to go into detail here because it didn’t work. The rebuild was taking too long and we didn’t want to disappoint our customers by not frequently adding new features and integrations.

Lesson #2: Don’t try to rebuild your software in a NEW programming language with only 40 paying customers.

In late January 2017, we parted ways with our programming co-founder and brought on a NEW programming co-founder. (His name is Conrad and the current team is Jason, him, and I.)

Of course, the next step was to completely rebuild the software. But this time, in the ORIGINAL programming language (Ruby). See the difference?

This took about four months to complete the rebuild. And in late May 2017, the software was ready to relaunch! It allowed users to create an account, log in, add a website, connect to FOUR third-party apps (we added Stripe), automatically import your data every day, and show you all those simple, but useful analytics.

The “All Hope Is Lost” Moment

On June 1st, 2017, we launched the rebuild of Spruce to our active users. But because we only had four third-party apps, Jason and I couldn’t use the software for our own businesses yet and we didn’t feel comfortable promoting it.

Of course, that was a problem.

We all wanted Spruce to be amazing, but we knew it would take a lot more work. This demotivated us to continue building and the team communication deteriorated.

So in July 2017, I decided to code ANOTHER redesign, hoping to revive the project and get things back on track.

The New Spruce Design From July 2017

The redesign illustrated what the future of Spruce could look like. But building it would take MORE time and push back the marketing schedule to acquire new customers.

We all jumped on Skype determined to create a detailed plan for this new version (what we dubbed v1000). We spent three days going over every detail.

We wanted to create story cards, build out a wireframe, hire a UI and UX designer to get it right. You know, the things Jason and I should have done a year ago!

But even after all that planning, things stalled. There were no active paying customers to motivate us and a mountain of work ahead of us to get to v1000.

Lesson #3: Don’t start a massive software project without a plan.


In early October 2017, after the one-year anniversary of this project, we had a do-or-die moment. We jumped on Skype to decide how to continue moving forward.

After what felt like 10 hours of talking things out, I asked a question that kicked off a new conversation.

What’s one thing that Spruce must do in order for us to feel comfortable sending a promotional email to our lists?

Jason wanted a Drip integration. I wanted manual data entry. And we all agreed that the price should be $19 a month.

So we came up with a 2-week plan to get Spruce to where we feel good about selling it:

This seemed so simple and doable. And once we started marketing it and getting new paying customers, we would continue to add new features, integrations, and design features to get us to the v1000 version we craved.

Lesson #4: Don’t bite off more than you can chew. The only way to eat an elephant is one bite at a time.

This is something my dad has told me a bunch of times throughout my adult life. I have to constantly remind myself because I often get overwhelmed by large projects.

The Moral of The Story

Building a web app is fucking hard. BUT IT’S WORTH IT!

Two weeks after our do-or-die moment, we cranked out all the app features we wanted, created all the marketing material needed to kick things off, and launched Spruce for the third and final time.

This was a huge learning experience for me. I jumped into something I wasn’t prepared to handle. But I took my lumps and rode the roller coaster all the way through when most people would have given up.

The reason? I need Spruce!

It’s the heart of my business. The spreadsheet was the reason I was able to grow my traffic, email subscribers, and revenue over the last two years. I wouldn’t be where I am without it.

And now, it’s a tool that I can share with my friends and other website owners like myself. I’m proud of what we built, and I’m crazy excited about what it will become over time.

Our mission was to make business analytics simple, to uncomplicate everything. And even though it took a year to bring it to life, it was worth every failure, every fight, every win, and most importantly, the FUCKING STRESS 🙂

Thank You

I have to thank Jason and Conrad first and foremost. They deserve all the credit for Spruce. They had to deal with all my crazy east coast Italian emotions, and I wouldn’t wish that on anyone.

I want to thank all my friends for paying money to be a Founding Member of Spruce and sticking with us while we figured it all out. They made a good bet.

Finally, I want to thank every person who had to deal with me during the stressful moments in-between coding and calls. I’m talking to you, Steph.

Thank you ♥️

Matt Giovanisci

I own three authority sites across different niches, including Swim University, Brew Cabin, and Money Lab. They earn a combined total of roughly $1,000,000 a year. I design and code all my sites. Write the words. Film and edit the videos. Produce the podcasts. Illustrate the graphics. And I have a small team that helps too.

Keep Reading