Long-time lurker, first-time poster. I wanted to share an experience to encourage others to finish the last ten percent of projects. SPOILER: it's not really ten percent 🤦♂️
Historically I've left a trail of incompleted projects. Projects are missing authentication, ways to take payments, and barely run in an environment. It's all but diagnosable.
This project is the first time I made it through a project (https://www.goingsolo.rocks). I feel comfortable calling it complete. I wanted to share my experience with the "ninety-ninety" rule. That second ninety percent can encompass a lot of new trials, tribulations, and triumphs.
Let's start with the first ninety percent. I created an application. I got it hosted on my trusty hosting platform (Heroku) with continuous deployment. There was functionality to create a Mondrian art piece and download it. Finally, you can generate random Mondrian art to view and download. In previous projects, I may have considered that as far as it needed to go. I may have lost the initial motivation or, more likely, reached the edge of my comfort zone.
The remaining functionality was to "allow a user to buy the downloadable image". What I didn't realize was that this last ten percent was the second ninety percent.
Here is a list of things that came up during my second ninety percent. These are my experiences. Someone familiar with any of these will know alternative solutions.
Stripe Payments:
I imagine many developers here have taken test payments via Stripe before but never official payments. Official payments require account verification in Stripe. Account verification requires adding a valid bank account as well as information about your business. I have a single-member LLC. I don't have an EIN, although I could get one, which caused some confusion with the account verification process. In addition to the extra steps, you are now playing with fire. Real money from real people adds excitement and anxiety.
Time Added: 3 hours over 2 days
Emails:
I wanted to send emails from something other than a Gmail account. I elected to use MailerSend as my API. MailerSend does not allow you to sign up and immediately send out spam from their service, which I thought was good practice. However, this caused some serious hurdles for me. As a general statement, I don't know the intricacies of DNS records. In ten years of developer work, I've had little to no interaction with those records. I used Namecheap for my domain registration. MailerSend had some documentation but using my tried and true "copy and paste" resulted in invalid records. I spent many hours looking through many StackOverflow articles. I compared my DNS records to a friend's that was using the same MailerSend API (hosted via Google Cloud Platform) and it all looked the same. I did finally find some alternative documentation on MailerSend for updating DNS records for Namecheap. Thank goodness.
Time Added: 9 hours over 4 days
Persistence of Purchases:
As a cautious individual, I wanted to have a way to record the Mondrian that someone purchased in case of something in the purchase process failed. I added a MongoDB instance to save the information. It was just one more thing to sign up for so why not. Oh, you want to connect from your Heroku app to a hosted MongoDB? You'd better know how to update the network access in MongoDB. Local environments don't always have a parallel experience to production environments. There are security restrictions and networks to consider.
Time Added: 5 hours over 6 days
Honorable Mention: SSL Certificates
I elected to pay the piper (Heroku) the seven dollars a month to keep my app running and automatically manage SSL Certs.
It's safe to say that these three items easily took me as long as the first ninety percent. Additionally, these items were where the "it got real". People are paying you money for something. It needs to work. You can't just blow away your dockerized database or easily send another email if the first one errors. There are expectations. In my mind, this moved it from a "mess around" to a "product" project.
The moral of the story is that getting something from "done" to "done done" can be quite an endeavor. It's not "done done" until someone can use it in production and it works. If you are like me and chronically abandon projects before "done done", spend some time to take that extra step. There is a lot to be learned and value to be gained from doing it.
P.S. - Feel free to use "done done" as an official label for any project management system. We all have the person that says things are "done" when they only work locally. Next time, ask them if it's "done done".
Your SaaS Doesn’t Have a Traffic Problem — It Has a Trust Problem
I Got Shadow-Banned on Reddit So Many Times That I Built RedChecker
Its amazing and worth sharing thanks for the information could you please sir have a look on https://albaqueen.com and suggest me what should we have to change? and how it can put a positive impact on our site?
Love this! I've been delaying getting my website to done done. Got it done week before last. Now (like you) I realise its not done till I've done the T&C. Plus email functionality and a bit more polish/SEO