The Entrepreneur Forum | Financial Freedom | Starting a Business | Motivation | Money | Success
  • SPONSORED: GiganticWebsites.com: We Build Sites with THOUSANDS of Unique and Genuinely Useful Articles

    30% to 50% Fastlane-exclusive discounts on WordPress-powered websites with everything included: WordPress setup, design, keyword research, article creation and article publishing. Click HERE to claim.

Welcome to the only entrepreneur forum dedicated to building life-changing wealth.

Build a Fastlane business. Earn real financial freedom. Join free.

Join over 90,000 entrepreneurs who have rejected the paradigm of mediocrity and said "NO!" to underpaid jobs, ascetic frugality, and suffocating savings rituals— learn how to build a Fastlane business that pays both freedom and lifestyle affluence.

Free registration at the forum removes this block.

How to Build a Saas or App Concept to Market

GIlman

Still Gilman
FASTLANE INSIDER
Read Fastlane!
Read Unscripted!
Summit Attendee
Speedway Pass
User Power
Value/Post Ratio
605%
Oct 16, 2014
801
4,843
You will get many many opinions on how to build an app, everything from learn to code all the way to learn nothing except how to manage other people. Many ways can get you where you want to go. I won't elaborate on the benefits of any of these.

I will however, describe to you the process that I have used to go from idea to final app. I have been involved in the creation of dozens of apps, from both the amateur (code it all yourself) to the professional (I own a software dev shop in Vietnam with about 25 employees), we do both in house apps for our own company and outsource contract work for others. See my thread in my signature about starting that up.

Here is the blueprint of how I take an idea all the way through to an actual application. Although I know how to code, my time has become far too valuable to do anything but manage a project from a high level. What I am describing is the process to manage the creation of a project, not how to be involved in the nuts and bolts of creating it yourself.

Revenue Model

This is something I stress to everyone I work with on projects. You must have at least an initial plan on how your product will generate money. This is the very first thing I do and needs to be top of mind because you want to optimize your project around whatever model you choose.

Do not skip this step, I would argue the most important thing that must be sorted out first before anything else. If you cannot figure out a way to bring in money from your app from the get go, I would not start on it until you have figured it out. No money equals no long term viability. Of course your revenue model may change over time as you figure out how people use your product and what they are willing to pay for it, but you must have an initial plan.

Common options are:
  1. One Time Sale - You charge a fee to buy the software and may charge again later down the road for upgrades. Many mobile apps chose this option.
  2. Subscription - where you charge a recurring fee (typically monthly or annually). You can setup the subscription as a global cost to use the software - one set cost give you everything. Another option is based on some parameter such as number of users (e.g. you charge $10/mo/user), this is often how business SaaS products are priced. Another option for the subscription model is tier based, the tiers can be linked to features available (where each higher tier offers additional functionality from the lower tier) or based on some volume parameters with higher tiers offering greater volume of something (e.g. a cloud storage company having tiers based on amount of storage you can use)
  3. Fee based - There is some charge based on usage. There are tons of examples of this from AirBnB to Uber. Basically these are typically transactional based systems where something is offered and a fee is charged for each transaction on the platform.
  4. Advertising - This is pretty self explanatory. You can either plan to generate the advertising yourself or outsource to someone else like apple or google to get the ads. This is an eyeball play, and is best used on apps where people will spend a ton of time. Examples of this are games with ads displayed while playing or things like TikTok where the ads are build into the feed directly.

Also you can always combine different revenue options above, it does not have to be a one method solution.

Also remember the Freemium model where you offer some very basic version and then charge users to gain full functionality. Just make sure if you do choose freemium to design it in such a way that the user will get some use out of the product but there will be a strong incentive to want to upgrade. It costs money to maintain infrastructure and if too many people stay on freemium forever you won’t be able to stay profitable.

How do you figure out what people are willing to pay? The easiest way is to look in the market what people are already paying for similar apps/services. Or if there are no other players in your market try and find apps that are similar in scope and targeting a financially similar market (for instance if you are making something for dentists see if there is anything similar for doctors and what they are paying.

One of the big drivers for what you can charge is based on the amount of money available in the industry or user group. You can charge much much much higher fees for products aimed at doctors/lawyers/engineers/dentists/etc than you can charge teenagers/small restaurants/small salons/etc…One group may not blink at dropping 200K on a product while another will be stressed by $2,000 or even $200. Be aware that the bigger the organization you are dealing with usually the longer the sales cycle can be, something taking years.

Market Evaluation

The second thing that may be important to know, is if the market is large enough using the revenue model you are selecting to warrant creation of this product. The smaller the market size, the more you must be able to charge for the product to make it worth selling. Some products the market size is essentially infinite, such as a game on the App Store, in theory anyone could be interested in buying it.

Many products, especially niche industry specific products, will have a finite market. You can usually pretty easily find out an estimate of your market size. Usually I have done this by finding some registers of members of that industry. For instance years ago I was developing software for use in medical education during residency. I found an organization the ACGME that does accrediting for all residency programs. They had complete data on the total number of residents accepted into each residency program. From this I knew the maximum possible size of my target model and from my revenue model I could calculate the upper limit of potential revenue possible. Of course there is no such thing as 100% capture of any market so this is just a very rough gauge.

Gauging general interest can also be valuable tool in figuring out if this product is worth developing. One of my favorite ways to do this is to use google AdWords Keyword Planner tool. (Find Your Campaign Keywords with Keyword Planner - Google Ads). You have to create a free account, but using this tool you can do a deep dive into what people are searching for. The more people searching for a solution to a problem your product will solve, the bigger the market for this product. I use this tool all the time to figure out different phases of the product from conception to marketing.

Validate your idea somehow

I will use a recent project I have been developing to illustrate this step.

Project: A private label rental app for high end properties to give owners strict control of their properties while also getting the tax and revenue benefits of renting their property out. Goal is to get the upside without the typical downsides of P2P rentals.

There are many ways to get initial validation. One of my favorites is to just talk to anyone and everyone that will listen about it. People that would (in my case) both use it to offer their own properties for use as well as people that would be using those properties. Gauge interest from this feedback. If no one can see the vision of what you are doing, that raises some serious questions about the value of it.

This is free feedback and always very enlightening. I have zero fear of someone stealing my idea, it is a big job that requires tons of execution and in general people are too lazy to take it on. It's a bigger risk to me to keep my mouth shut

As an example: I was at an business conference (some people from this forum were in attendance), and I pitched my idea for this rental app to dozens of people. Many of the people there were very interested and gave me ideas of what they would want and how to make it valuable to them. Many of them had used other apps like AirBnB and VRBO and told me the pain points they had experience, which helped me to refine my idea further.

There are other forms of validation that you can do too. For instance, some people will try to pre-sell. They will setup a dummy page online, then create some ads on google or facebook. You can either try to get actual pre-sales, or get fake pre-sells. To get a fake presell you take the person all the way to the credit card form and when they hit complete order just don't save their data and generate an error...this proves they would have bought it. And don't worry about losing a bunch of customers, there are tons more and your purpose at this phase is just validation. And if losing a handful of customers would be impactful then the idea has no legs in the first place.

You can also try to presell in person too where you approach a business, etc..., and have them invest some amount of money upfront to help you develop it for some big perk down the line. You would be amazed the number of businesses that will do this if you can get them to see the true value of your product. I have done this with a "partner" business to help build an app, the upfront cost was $200K. But I have a long proven track record of delivering and the product was solving a huge pain point of this company.

Another way you can do soft validation is through Google Keyword Planner mentioned above. If you did not already do this when researching the products market, do it now by plugging in different keyword search phrases related to your intended product. See if people are searching for it. The more traffic of people looking for something the more need and larger the relevant audience.

Create Outline of Your product.

There are several ways to do this, but in this stage I create a text sketch of my product. Now days I actually use ChatGPT to help me do these. To do this I write as complete of a description as possible, using normal English, then ask ChatGPT to create me user stories and acceptance criteria.

Here is a fictitious example (made up on the fly right now for say a dog walking app) of what I would feed into ChatGPT.

"Imagine you are designing software, you need to take the following information and generate user stories and acceptance criteria that a software designer and software programmer will use to create the application. Please include a background statement summarizing the application.

The app will be created for smartphones such as an iPhone. The purpose of the application will be to enable dog owners to find people that can walk their dog for an agreed upon price.

New users will create an account by entering their phone number into the app. The app will then send the new user a text message with a code. The new user can then enter the code into the app which will validate that their phone number is valid, and then the user will be prompted for a password and will designate whether they are a dog owner user or dog walker user.

Dog owner users can view a list of dog walker users, that are ordered by distance from them. The list will show a picture of the dog walker user, show their rating from other dog owner users, a description of their services, and a price for their services. Dog owner users can select a dog walker user and send a job offer to walk their dog.


Dog walker users will see a list of their scheduled dog walking appointments. Dog walker users will be notified when a dog owner user sends a job offer, and they will be able to accept or decline the offer."

I feed this into chatGPT, and the following is the output I get.

Background Statement: Our application aims to connect dog owners with dog walkers in their vicinity. This mobile app, designed for smartphones like iPhone, will facilitate the process of finding and booking dog walking services. Users will be able to create accounts, search for nearby dog walkers, and arrange dog walking appointments. Below are user stories and acceptance criteria to guide the software designer and programmer in building this application.


User Stories:

User Registration:


  1. As a new user, I want to create an account with my phone number so I can access the app's features.
    Acceptance Criteria:

    • The app should provide a registration screen with a phone number input field.
    • After entering the phone number, the app should send a verification code via SMS.
    • The user should be able to enter the received code to verify their phone number.
    • Once the phone number is validated, the user should be prompted to create a password.
    • The user should be asked to specify whether they are a dog owner or a dog walker.
Dog Owner Features:

  1. As a dog owner user, I want to view a list of nearby dog walkers so I can choose one to walk my dog.
    Acceptance Criteria:

    • The app should display a list of dog walker users ordered by distance from the dog owner's location.
    • Each list item should include a profile picture, rating, service description, and price for each dog walker.
    • Users should be able to select a dog walker from the list.
  2. As a dog owner user, I want to send a job offer to a selected dog walker.
    Acceptance Criteria:

    • After selecting a dog walker, the app should provide an option to send a job offer.
    • The user should be able to specify the date and time for the dog walking appointment.
    • The app should notify the selected dog walker of the job offer.
Dog Walker Features:

  1. As a dog walker user, I want to see a list of my scheduled dog walking appointments.
    Acceptance Criteria:

    • The app should display a list of upcoming dog walking appointments for the dog walker.
    • Each appointment should include details such as the dog owner's name, dog's name, date, and time.
  2. As a dog walker user, I want to receive notifications when a dog owner user sends a job offer.
    Acceptance Criteria:

    • The app should send a push notification to the dog walker user when a job offer is received.
    • The notification should include details about the job offer, such as the dog owner's name and the appointment details.
  3. As a dog walker user, I want to be able to accept or decline job offers.
    Acceptance Criteria:

    • The app should provide options to accept or decline a job offer when a notification is received.
    • If the dog walker accepts, the appointment should be added to their schedule.
I then work with chatGPT asking it to modify user stories that do not fit what I am wanting. You can get a pretty good set of user stories and acceptance criteria working with ChatGPT this way. Once you have it close to where you want it, then copy it to a document and then make the remainder of the modifications by hand.

Finding Talent

Chances are that along the path you will need to hire someone for design, coding, copywriting, marketing, etc.

One method some people use is to find a technical cofounder. Someone that knows how to code and is willing to do the sweat equity needed to code out the app. I can’t tell you how to find this person, because I have never done it, but if you have access to someone with the right skills or can find them, this is one pathway you can take. Of course you will be giving them equity, which is a marriage of sorts, so you must consider the benefits vs risk of this. Ask many people who have done a partnership in the past and you will find many horror stories of entering into this type of arrangement. Of course just like marriage, you may find the perfect partner and together can do far more than you could have alone.

Another method I have used in the past is finding talent through sites such as Upwork. If you are not familiar, Upwork is basically a site to find and hire people as contractors to the work you need. The process is very straight forward.

Here is my software development company (https://www.upwork.com/agencies/~0156ccc02c6b3a9f76/). Use it for reference for the discussion below, you can easily find each element I’m describing.

Here is my general process:

Do a search for the skills that you need. It is best if you have researched and have specific knowledge about what you want. For instance if I was building a mobile app I may be looking for programmers skilled in javascript and react native.

Next you need to vet the particular contractor you find. Be aware that there are both agencies representing a group of contractors as well as individuals on Upwork. If it is not clear to you what you are dealing with ask them.

Look at their job success, it should be 100% or at least in the mid to high 90’s. Also look at the total # of jobs they have completed and total hours worked. Between the job success and the number of jobs you can gauge how likely they will successfully complete your job. Our company does a small portion of our work on Upwork now days, the vast majority is direct referrals from prior clients, so I would view this work history a the minimum they have done, they may have much much more experience.

How long they have been a member on upward? The longer they have been a member the more legit and less likely they are to just disappear on your.

Look at their portfolio of work online to get an idea of what they have done and visually how it looks. Most contractors do not have a complete portfolio online, you can always contact them and ask them to view their portfolio.

Now look at their work history. You can get a rough idea of the size of jobs they have done, make sure to select the option for both “Completed Jobs” and “Jobs in Progress”. Look at both the hours and the money earned. In particular if you have a really big job, make sure they have taken on some sizable work, some developers can handle a small app but will struggle with a complex app.

Also using work history look at the descriptions of the work they have done. If they have done jobs that are related in some way to what you are doing, they will have more experience for your specific job.

Also using work history, look at the range of rates they have charged. You have to pay attention to the dates, because over time most places will increase their rates as they get more experience and credibility on upward. You might be able to ask for a lower rate, but if they are well established they may not be willing to negotiate.

Make a job posting, and invite them to the job. Once you are in contact with them, ask them about their time availability, when they could start, and negotiate the rate. You may also ask them for references and if they have an available portfolio to look at.

I would recommend (required: for any non-native speaking contractor) that you ask for a video or voice call to discuss your project. You want to see how well they communicate and understand what you are looking for. Communication is a key element to success so make sure the person can communicate effectively. During this interview explain to them your work requirements and ask specifically if they have had any experience with similar projects and ask if they have the skills to complete what you are needing - if they tell you they do not have skills in that area that is a hard pass.

If they accept your job and you accept them, then you can formalize it through UpWork.

Designs and Mockups

At this stage, I hand over the user stories to our software designer. They take these stories and create a visually exact mockup of the app. We use a product called Figma. Each and every screen of the app can be created and you can interact with the app as if it was real. You can click on things moving between different views and test the flow and functionality of the app.

As tempting as it is to give the user stories to the coders straight away. Do NOT skip this step. It will cost you time and money down the line. I usually plan for between 5-15% of the total project costs to be used for design. It is the best money spent because you can find problems before a line of code is laid down and sort them out at this relatively cheap phase. Changing code is expensive.

Also it give you the ability to create a unified easy to understand vision of what the product is, how it will work, and what it does. Between the user stories and the mockups, you can easily get everyone on the same page from the get go.

Validation Part 2

After getting your mockups back, you now have the opportunity to revalidate your concept, having spent a relatively small amount. Depending on the complexity of your app the initial mockups probably were in the range of $500-4000 at current rates.

Sort out what works and what doesn’t, then go back to the drawing board and come up with better solutions for things that don’t work well. Remember it’s important to think in terms of both adding and removing features where appropriate. Simplicity is always always always the best solution, so look for ways to combine, reduce, or remove things.

You can also go and show the mockups to potential customers and get their feedback. What they like, what they don’t like, and most importantly would they buy it. If possible try to presell and actually get some sort of payment from people, this is real commitment.

The other useful thing you can do with mockups is to incorporate them into your validation test funnel. This is basically an extension of the first validation step. Build your mockup screenshots into your test funnel and see what type of interest you can generate. One potential way to do this is through crowdfunding sites like kick starter, create a campaign and then use some digital marketing to push people to your campaign. Many people think of kickstarter as a way to fund a project, which it can be. But kickstarter is equally as valuable (if not more so) as a way to validate that people will actually buy what you are building.

Also, you can use the mockup screenshots to build a pitch deck if you are looking for investors or people to help fund your project. As they say a picture is worth a thousand words and this is very true with mockups. You can show someone your app idea much easier than you can explain it with words. Also it makes it feel real in the eyes/hands of the people seeing/using the mockup.

Something else I have used mockups for is to find a launch/test partner if you do not have one already. For instance, say you were making a SaaS to manage gyms. You really really need to find some gym that is willing to use your product in the beta phase and help you iron out some of the UI/UX (user interface/user experience) and other bugs before you bring it to the broader market. The way I have pitched this to them (the value they will get out of this partnership) - I tell them that their input is helping to guide the development and features of the product and so this solution will be more optimized to them and there needs than any other product on the market. I emphasize to them the rare opportunity that it is for them to have real input into something that will make their business run smoother and more profitably. You might be surprised how many people would find value in this and be willing to help you out for this reason alone. I also have often offered some financial incentive, like you can use it for free or 50% off when it is launched.

Continued on Post #12
Click Here to Jump to Post 12
 
Dislike ads? Remove them and support the forum: Subscribe to Fastlane Insiders.
Last edited:

MJ DeMarco

I followed the science; all I found was money.
Staff member
FASTLANE INSIDER
EPIC CONTRIBUTOR
Read Rat-Race Escape!
Read Fastlane!
Read Unscripted!
Summit Attendee
Speedway Pass
User Power
Value/Post Ratio
446%
Jul 23, 2007
38,211
170,515
Utah
Upgraded to GOLD, love people doing big things!

Thanks for sharing @GIlman -- have you given up on medicine?
 

taimurshaz

New Contributor
User Power
Value/Post Ratio
50%
Aug 22, 2023
2
1
You will get many many opinions on how to build an app, everything from learn to code all the way to learn nothing except how to manage other people. Many ways can get you where you want to go. I won't elaborate on the benefits of any of these.

I will however, describe to you the process that I have used to go from idea to final app. I have been involved in the creation of dozens of apps, from both the amateur (code it all yourself) to the professional (I own a software dev shop in Vietnam with about 25 employees), we do both in house apps for our own company and outsource contract work for others. See my thread in my signature about starting that up.

Here is the blueprint of how I take an idea all the way through to an actual application. Although I know how to code, my time has become far too valuable to do anything but manage a project from a high level. What I am describing is the process to manage the creation of a project, not how to be involved in the nuts and bolts of creating it yourself.

Step 1: Validate your idea somehow

I will use a recent project I have been developing to illustrate this step.

Project: A private label rental app for high end properties to give owners strict control of their properties while also getting the tax and revenue benefits of renting their property out. Goal is to get the upside without the typical downsides of P2P rentals.

There are many ways to get initial validation. One of my favorites is to just talk to anyone and everyone that will listen about it. People that would (in my case) both use it to offer their own properties for use as well as people that would be using those properties. Gauge interest from this feedback. If no one can see the vision of what you are doing, that raises some serious questions about the value of it.

This is free feedback and always very enlightening. I have zero fear of someone stealing my idea, it is a big job that requires tons of execution and in general people are too lazy to take it on. It's a bigger risk to me to keep my mouth shut

As an example: I was at an business conference (some people from this forum were in attendance), and I pitched my idea for this rental app to dozens of people. Many of the people there were very interested and gave me ideas of what they would want and how to make it valuable to them. Many of them had used other apps like AirBnB and VRBO and told me the pain points they had experience, which helped me to refine my idea further.

There are other forms of validation that you can do too. For instance, some people will try to pre-sell. They will setup a dummy page online, then create some ads on google or facebook. You can either try to get actual pre-sales, or get fake pre-sells. To get a fake presell you take the person all the way to the credit card form and when they hit complete order just don't save their data and generate an error...this proves they would have bought it. And don't worry about losing a bunch of customers, there are tons more and your purpose at this phase is just validation. And if losing a handful of customers would be impactful then the idea has no legs in the first place.

You can also try to presell in person too where you approach a business, etc..., and have them invest some amount of money upfront to help you develop it for some big perk down the line. You would be amazed the number of businesses that will do this if you can get them to see the true value of your product. I have done this with a "partner" business to help build an app, the upfront cost was $200K. But I have a long proven track record of delivering and the product was solving a huge pain point of this company.

Step 2: Create Outline of Your product.

There are several ways to do this, but in this stage I create a text sketch of my product. Now days I actually use ChatGPT to help me do these. To do this I write as complete of a description as possible, using normal English, then ask ChatGPT to create me user stories and acceptance criteria.

Here is a fictitious example (made up on the fly right now for say a dog walking app) of what I would feed into ChatGPT.

"Imagine you are designing software, you need to take the following information and generate user stories and acceptance criteria that a software designer and software programmer will use to create the application. Please include a background statement summarizing the application.

The app will be created for smartphones such as an iPhone. The purpose of the application will be to enable dog owners to find people that can walk their dog for an agreed upon price.

New users will create an account by entering their phone number into the app. The app will then send the new user a text message with a code. The new user can then enter the code into the app which will validate that their phone number is valid, and then the user will be prompted for a password and will designate whether they are a dog owner user or dog walker user.

Dog owner users can view a list of dog walker users, that are ordered by distance from them. The list will show a picture of the dog walker user, show their rating from other dog owner users, a description of their services, and a price for their services. Dog owner users can select a dog walker user and send a job offer to walk their dog.


Dog walker users will see a list of their scheduled dog walking appointments. Dog walker users will be notified when a dog owner user sends a job offer, and they will be able to accept or decline the offer."

I feed this into chatGPT, and the following is the output I get.

Background Statement: Our application aims to connect dog owners with dog walkers in their vicinity. This mobile app, designed for smartphones like iPhone, will facilitate the process of finding and booking dog walking services. Users will be able to create accounts, search for nearby dog walkers, and arrange dog walking appointments. Below are user stories and acceptance criteria to guide the software designer and programmer in building this application.


User Stories:

User Registration:


  1. As a new user, I want to create an account with my phone number so I can access the app's features.
    Acceptance Criteria:

    • The app should provide a registration screen with a phone number input field.
    • After entering the phone number, the app should send a verification code via SMS.
    • The user should be able to enter the received code to verify their phone number.
    • Once the phone number is validated, the user should be prompted to create a password.
    • The user should be asked to specify whether they are a dog owner or a dog walker.
Dog Owner Features:

  1. As a dog owner user, I want to view a list of nearby dog walkers so I can choose one to walk my dog.
    Acceptance Criteria:

    • The app should display a list of dog walker users ordered by distance from the dog owner's location.
    • Each list item should include a profile picture, rating, service description, and price for each dog walker.
    • Users should be able to select a dog walker from the list.
  2. As a dog owner user, I want to send a job offer to a selected dog walker.
    Acceptance Criteria:

    • After selecting a dog walker, the app should provide an option to send a job offer.
    • The user should be able to specify the date and time for the dog walking appointment.
    • The app should notify the selected dog walker of the job offer.
Dog Walker Features:

  1. As a dog walker user, I want to see a list of my scheduled dog walking appointments.
    Acceptance Criteria:

    • The app should display a list of upcoming dog walking appointments for the dog walker.
    • Each appointment should include details such as the dog owner's name, dog's name, date, and time.
  2. As a dog walker user, I want to receive notifications when a dog owner user sends a job offer.
    Acceptance Criteria:

    • The app should send a push notification to the dog walker user when a job offer is received.
    • The notification should include details about the job offer, such as the dog owner's name and the appointment details.
  3. As a dog walker user, I want to be able to accept or decline job offers.
    Acceptance Criteria:

    • The app should provide options to accept or decline a job offer when a notification is received.
    • If the dog walker accepts, the appointment should be added to their schedule.
I then work with chatGPT asking it to modify user stories that do not fit what I am wanting. You can get a pretty good set of user stories and acceptance criteria working with ChatGPT this way. Once you have it close to where you want it, then copy it to a document and then make the remainder of the modifications by hand.

Step 3 Designs and Mockups

At this stage, I hand over the user stories to our software designer. They take these stories and create a visually exact mockup of the app. We use a product called Figma. Each and every screen of the app can be created and you can interact with the app as if it was real. You can click on things moving between different views and test the flow and functionality of the app.

As tempting as it is to give the user stories to the coders straight away. Do NOT skip this step. It will cost you time and money down the line. I usually plan for between 5-15% of the total project costs to be used for design. It is the best money spent because you can find problems before a line of code is laid down and sort them out at this relatively cheap phase. Changing code is expensive.

Also it give you the ability to create a unified easy to understand vision of what the product is, how it will work, and what it does. Between the user stories and the mockups, you can easily get everyone on the same page from the get go.

---Have to run for now, will add to this later
This is so interesting to me however I'm only 14 so I'll be keeping this knowledge in my brain for the meantime.Hope to continue reading the rest soon!
 

circleme

Bronze Contributor
Read Fastlane!
Read Unscripted!
Speedway Pass
User Power
Value/Post Ratio
143%
Jan 17, 2023
167
238
Thank you for your post, Gilman!
This is free feedback and always very enlightening. I have zero fear of someone stealing my idea, it is a big job that requires tons of execution and in general people are too lazy to take it on. It's a bigger risk to me to keep my mouth shut
How would you feel about this if the effort involved in creating a solution was less expensive, but the solution still solved a recurring problem?
Many of the people there were very interested and gave me ideas of what they would want and how to make it valuable to them.
You mentioned the soft proof here and then a little further on the possibilities for a hard proof (pay me something for it). In your opinion, would a free trial of an MVP also make sense in order to achieve hard proof? Freemium is probably a bit too early here, since the MVP is, well, just an MVP with manageable features.

For example, how would you validate smaller software (hard-proof)?

My current approach - and I'm open to any criticism from you if that were possible - is something like this:

1. Identify (micro) niches
2. Identify problems
3. Soft proof like you do (talking to potential customers, researching the frequency of the problem online, ...)
4. MVP creation
5. Free MVP Launch in exchange for an email address
6. Obtain user feedback to continuously expand MVP
 
Dislike ads? Remove them and support the forum: Subscribe to Fastlane Insiders.

Fatrys

Contributor
Read Fastlane!
Read Unscripted!
User Power
Value/Post Ratio
309%
Jul 5, 2016
23
71
29
Paris, France
Watching this thread as I’m in the process of creating my first app.

So far so good with steps 1 to 3!

Will you cover the launch/marketing steps?

Thanks!
 

GIlman

Still Gilman
FASTLANE INSIDER
Read Fastlane!
Read Unscripted!
Summit Attendee
Speedway Pass
User Power
Value/Post Ratio
605%
Oct 16, 2014
801
4,843
Upgraded to GOLD, love people doing big things!

Thanks for sharing @GIlman -- have you given up on medicine?

Thanks MJ. No i’m still working about 23 weeks a year. Thinking about maybe hanging in up in 2025 or scaling back even more.

This is so interesting to me however I'm only 14 so I'll be keeping this knowledge in my brain for the meantime.Hope to continue reading the rest soon!

I've updated and added a bunch of content to the first post. I realized I had skipped a few steps and wanted to add them in relevant order. Should be more complete now.

Thank you for your post, Gilman!

How would you feel about this if the effort involved in creating a solution was less expensive, but the solution still solved a recurring problem?

You mentioned the soft proof here and then a little further on the possibilities for a hard proof (pay me something for it). In your opinion, would a free trial of an MVP also make sense in order to achieve hard proof? Freemium is probably a bit too early here, since the MVP is, well, just an MVP with manageable features.

For example, how would you validate smaller software (hard-proof)?

My current approach - and I'm open to any criticism from you if that were possible - is something like this:

1. Identify (micro) niches
2. Identify problems
3. Soft proof like you do (talking to potential customers, researching the frequency of the problem online, ...)
4. MVP creation
5. Free MVP Launch in exchange for an email address
6. Obtain user feedback to continuously expand MVP

I’m not entirely sure what you were asking about less expensive. You mean charging less to customers than competitors or that you don’t expect to charge much because of the nature of the project.

It really depends on volume of the market. A $1 game in the App Store can sell millions of copies, which is fine to be low cost. But if you’re in a market with only 10,000 possible buyers you better be charging a premium for servicing an exclusive market.

As far as just being a lower price option. The real downside is that people equate price with quality to a significant degree. This is true for everything. So if you go low price your product will never be viewed as the premium solution. Also from my experience lower priced products generally attract people that cause you more problems. They tend to be more demanding and less agreeable…this has just been my observation.

I’m not a huge fan of freemium, because there is a cost to maintaining infrastructure to support most products. Lots of people will use freemium forever and never pay. I personally prefer a free trial or freemium like trial, make it a long one if you want. For freemium like trial create different tiers of features, let them use the lowest tier free for 3 or 6 months.

This way they have an incentive to upgrade to more features right away but if after 3-6 months or so they don’t upgrade they will start paying for the lowest tier. I personally like this better because it gets rid of people that are likely to never pay and just consume your resources.

As far as validating smaller projects, well it really depends what it is. DM me what you’re trying to do and if I have any ideas I’ll let you know. Sometimes the only option is soft proof methods.

I think your plan is reasonable. If possible find things in areas that you are very familiar. It’s often harder to create products in industries that you do not have some tie to.

Watching this thread as I’m in the process of creating my first app.

So far so good with steps 1 to 3!

Will you cover the launch/marketing steps?

Thanks!

I will cover some on this. For marketing there are some real solid guys in this forum, @Andy Black comes top of mind to me. He has tons of content here on digital marketing.
 
Last edited:

Andy Black

Help people. Get paid. Help more people.
Staff member
FASTLANE INSIDER
EPIC CONTRIBUTOR
Read Fastlane!
Speedway Pass
User Power
Value/Post Ratio
369%
May 20, 2014
18,707
69,116
Ireland
For marketing there are some real solid guys in this forum, @Andy Black comes top of mind to me. He has tons of content here on digital marketing.
Thanks for the tag @GIlman. @Fatrys ... maybe start with the links in my signature.

@eliquid has some great marketing threads, and a thread about building and growing SaaS products.
 
Dislike ads? Remove them and support the forum: Subscribe to Fastlane Insiders.

Surgewave

New Contributor
Read Fastlane!
User Power
Value/Post Ratio
88%
Oct 24, 2020
8
7
Bangalore, India
You will get many many opinions on how to build an app, everything from learn to code all the way to learn nothing except how to manage other people. Many ways can get you where you want to go. I won't elaborate on the benefits of any of these.

I will however, describe to you the process that I have used to go from idea to final app. I have been involved in the creation of dozens of apps, from both the amateur (code it all yourself) to the professional (I own a software dev shop in Vietnam with about 25 employees), we do both in house apps for our own company and outsource contract work for others. See my thread in my signature about starting that up.

Here is the blueprint of how I take an idea all the way through to an actual application. Although I know how to code, my time has become far too valuable to do anything but manage a project from a high level. What I am describing is the process to manage the creation of a project, not how to be involved in the nuts and bolts of creating it yourself.

Revenue Model

This is something I stress to everyone I work with on projects. You must have at least an initial plan on how your product will generate money. This is the very first thing I do and needs to be top of mind because you want to optimize your project around whatever model you choose.

Do not skip this step, I would argue the most important thing that must be sorted out first before anything else. If you cannot figure out a way to bring in money from your app from the get go, I would not start on it until you have figured it out. No money equals no long term viability. Of course your revenue model may change over time as you figure out how people use your product and what they are willing to pay for it, but you must have an initial plan.

Common options are:
  1. One Time Sale - You charge a fee to buy the software and may charge again later down the road for upgrades. Many mobile apps chose this option.
  2. Subscription - where you charge a recurring fee (typically monthly or annually). You can setup the subscription as a global cost to use the software - one set cost give you everything. Another option is based on some parameter such as number of users (e.g. you charge $10/mo/user), this is often how business SaaS products are priced. Another option for the subscription model is tier based, the tiers can be linked to features available (where each higher tier offers additional functionality from the lower tier) or based on some volume parameters with higher tiers offering greater volume of something (e.g. a cloud storage company having tiers based on amount of storage you can use)
  3. Fee based - There is some charge based on usage. There are tons of examples of this from AirBnB to Uber. Basically these are typically transactional based systems where something is offered and a fee is charged for each transaction on the platform.
  4. Advertising - This is pretty self explanatory. You can either plan to generate the advertising yourself or outsource to someone else like apple or google to get the ads. This is an eyeball play, and is best used on apps where people will spend a ton of time. Examples of this are games with ads displayed while playing or things like TikTok where the ads are build into the feed directly.

Also you can always combine different revenue options above, it does not have to be a one method solution.

Also remember the Freemium model where you offer some very basic version and then charge users to gain full functionality. Just make sure if you do choose freemium to design it in such a way that the user will get some use out of the product but there will be a strong incentive to want to upgrade. It costs money to maintain infrastructure and if too many people stay on freemium forever you won’t be able to stay profitable.

How do you figure out what people are willing to pay? The easiest way is to look in the market what people are already paying for similar apps/services. Or if there are no other players in your market try and find apps that are similar in scope and targeting a financially similar market (for instance if you are making something for dentists see if there is anything similar for doctors and what they are paying.

One of the big drivers for what you can charge is based on the amount of money available in the industry or user group. You can charge much much much higher fees for products aimed at doctors/lawyers/engineers/dentists/etc than you can charge teenagers/small restaurants/small salons/etc…One group may not blink at dropping 200K on a product while another will be stressed by $2,000 or even $200. Be aware that the bigger the organization you are dealing with usually the longer the sales cycle can be, something taking years.

Market Evaluation

The second thing that may be important to know, is if the market is large enough using the revenue model you are selecting to warrant creation of this product. The smaller the market size, the more you must be able to charge for the product to make it worth selling. Some products the market size is essentially infinite, such as a game on the App Store, in theory anyone could be interested in buying it.

Many products, especially niche industry specific products, will have a finite market. You can usually pretty easily find out an estimate of your market size. Usually I have done this by finding some registers of members of that industry. For instance years ago I was developing software for use in medical education during residency. I found an organization the ACGME that does accrediting for all residency programs. They had complete data on the total number of residents accepted into each residency program. From this I knew the maximum possible size of my target model and from my revenue model I could calculate the upper limit of potential revenue possible. Of course there is no such thing as 100% capture of any market so this is just a very rough gauge.

Gauging general interest can also be valuable tool in figuring out if this product is worth developing. One of my favorite ways to do this is to use google AdWords Keyword Planner tool. (Find Your Campaign Keywords with Keyword Planner - Google Ads). You have to create a free account, but using this tool you can do a deep dive into what people are searching for. The more people searching for a solution to a problem your product will solve, the bigger the market for this product. I use this tool all the time to figure out different phases of the product from conception to marketing.

Validate your idea somehow

I will use a recent project I have been developing to illustrate this step.

Project: A private label rental app for high end properties to give owners strict control of their properties while also getting the tax and revenue benefits of renting their property out. Goal is to get the upside without the typical downsides of P2P rentals.

There are many ways to get initial validation. One of my favorites is to just talk to anyone and everyone that will listen about it. People that would (in my case) both use it to offer their own properties for use as well as people that would be using those properties. Gauge interest from this feedback. If no one can see the vision of what you are doing, that raises some serious questions about the value of it.

This is free feedback and always very enlightening. I have zero fear of someone stealing my idea, it is a big job that requires tons of execution and in general people are too lazy to take it on. It's a bigger risk to me to keep my mouth shut

As an example: I was at an business conference (some people from this forum were in attendance), and I pitched my idea for this rental app to dozens of people. Many of the people there were very interested and gave me ideas of what they would want and how to make it valuable to them. Many of them had used other apps like AirBnB and VRBO and told me the pain points they had experience, which helped me to refine my idea further.

There are other forms of validation that you can do too. For instance, some people will try to pre-sell. They will setup a dummy page online, then create some ads on google or facebook. You can either try to get actual pre-sales, or get fake pre-sells. To get a fake presell you take the person all the way to the credit card form and when they hit complete order just don't save their data and generate an error...this proves they would have bought it. And don't worry about losing a bunch of customers, there are tons more and your purpose at this phase is just validation. And if losing a handful of customers would be impactful then the idea has no legs in the first place.

You can also try to presell in person too where you approach a business, etc..., and have them invest some amount of money upfront to help you develop it for some big perk down the line. You would be amazed the number of businesses that will do this if you can get them to see the true value of your product. I have done this with a "partner" business to help build an app, the upfront cost was $200K. But I have a long proven track record of delivering and the product was solving a huge pain point of this company.

Another way you can do soft validation is through Google Keyword Planner mentioned above. If you did not already do this when researching the products market, do it now by plugging in different keyword search phrases related to your intended product. See if people are searching for it. The more traffic of people looking for something the more need and larger the relevant audience.

Create Outline of Your product.

There are several ways to do this, but in this stage I create a text sketch of my product. Now days I actually use ChatGPT to help me do these. To do this I write as complete of a description as possible, using normal English, then ask ChatGPT to create me user stories and acceptance criteria.

Here is a fictitious example (made up on the fly right now for say a dog walking app) of what I would feed into ChatGPT.

"Imagine you are designing software, you need to take the following information and generate user stories and acceptance criteria that a software designer and software programmer will use to create the application. Please include a background statement summarizing the application.

The app will be created for smartphones such as an iPhone. The purpose of the application will be to enable dog owners to find people that can walk their dog for an agreed upon price.

New users will create an account by entering their phone number into the app. The app will then send the new user a text message with a code. The new user can then enter the code into the app which will validate that their phone number is valid, and then the user will be prompted for a password and will designate whether they are a dog owner user or dog walker user.

Dog owner users can view a list of dog walker users, that are ordered by distance from them. The list will show a picture of the dog walker user, show their rating from other dog owner users, a description of their services, and a price for their services. Dog owner users can select a dog walker user and send a job offer to walk their dog.


Dog walker users will see a list of their scheduled dog walking appointments. Dog walker users will be notified when a dog owner user sends a job offer, and they will be able to accept or decline the offer."

I feed this into chatGPT, and the following is the output I get.

Background Statement: Our application aims to connect dog owners with dog walkers in their vicinity. This mobile app, designed for smartphones like iPhone, will facilitate the process of finding and booking dog walking services. Users will be able to create accounts, search for nearby dog walkers, and arrange dog walking appointments. Below are user stories and acceptance criteria to guide the software designer and programmer in building this application.


User Stories:

User Registration:


  1. As a new user, I want to create an account with my phone number so I can access the app's features.
    Acceptance Criteria:

    • The app should provide a registration screen with a phone number input field.
    • After entering the phone number, the app should send a verification code via SMS.
    • The user should be able to enter the received code to verify their phone number.
    • Once the phone number is validated, the user should be prompted to create a password.
    • The user should be asked to specify whether they are a dog owner or a dog walker.
Dog Owner Features:

  1. As a dog owner user, I want to view a list of nearby dog walkers so I can choose one to walk my dog.
    Acceptance Criteria:

    • The app should display a list of dog walker users ordered by distance from the dog owner's location.
    • Each list item should include a profile picture, rating, service description, and price for each dog walker.
    • Users should be able to select a dog walker from the list.
  2. As a dog owner user, I want to send a job offer to a selected dog walker.
    Acceptance Criteria:

    • After selecting a dog walker, the app should provide an option to send a job offer.
    • The user should be able to specify the date and time for the dog walking appointment.
    • The app should notify the selected dog walker of the job offer.
Dog Walker Features:

  1. As a dog walker user, I want to see a list of my scheduled dog walking appointments.
    Acceptance Criteria:

    • The app should display a list of upcoming dog walking appointments for the dog walker.
    • Each appointment should include details such as the dog owner's name, dog's name, date, and time.
  2. As a dog walker user, I want to receive notifications when a dog owner user sends a job offer.
    Acceptance Criteria:

    • The app should send a push notification to the dog walker user when a job offer is received.
    • The notification should include details about the job offer, such as the dog owner's name and the appointment details.
  3. As a dog walker user, I want to be able to accept or decline job offers.
    Acceptance Criteria:

    • The app should provide options to accept or decline a job offer when a notification is received.
    • If the dog walker accepts, the appointment should be added to their schedule.
I then work with chatGPT asking it to modify user stories that do not fit what I am wanting. You can get a pretty good set of user stories and acceptance criteria working with ChatGPT this way. Once you have it close to where you want it, then copy it to a document and then make the remainder of the modifications by hand.

Finding Talent

Chances are that along the path you will need to hire someone for design, coding, copywriting, marketing, etc.

One method some people use is to find a technical cofounder. Someone that knows how to code and is willing to do the sweat equity needed to code out the app. I can’t tell you how to find this person, because I have never done it, but if you have access to someone with the right skills or can find them, this is one pathway you can take. Of course you will be giving them equity, which is a marriage of sorts, so you must consider the benefits vs risk of this. Ask many people who have done a partnership in the past and you will find many horror stories of entering into this type of arrangement. Of course just like marriage, you may find the perfect partner and together can do far more than you could have alone.

Another method I have used in the past is finding talent through sites such as Upwork. If you are not familiar, Upwork is basically a site to find and hire people as contractors to the work you need. The process is very straight forward.

Here is my software development company (https://www.upwork.com/agencies/~0156ccc02c6b3a9f76/). Use it for reference for the discussion below, you can easily find each element I’m describing.

Here is my general process:

Do a search for the skills that you need. It is best if you have researched and have specific knowledge about what you want. For instance if I was building a mobile app I may be looking for programmers skilled in javascript and react native.

Next you need to vet the particular contractor you find. Be aware that there are both agencies representing a group of contractors as well as individuals on Upwork. If it is not clear to you what you are dealing with ask them.

Look at their job success, it should be 100% or at least in the mid to high 90’s. Also look at the total # of jobs they have completed and total hours worked. Between the job success and the number of jobs you can gauge how likely they will successfully complete your job. Our company does a small portion of our work on Upwork now days, the vast majority is direct referrals from prior clients, so I would view this work history a the minimum they have done, they may have much much more experience.

How long they have been a member on upward? The longer they have been a member the more legit and less likely they are to just disappear on your.

Look at their portfolio of work online to get an idea of what they have done and visually how it looks. Most contractors do not have a complete portfolio online, you can always contact them and ask them to view their portfolio.

Now look at their work history. You can get a rough idea of the size of jobs they have done, make sure to select the option for both “Completed Jobs” and “Jobs in Progress”. Look at both the hours and the money earned. In particular if you have a really big job, make sure they have taken on some sizable work, some developers can handle a small app but will struggle with a complex app.

Also using work history look at the descriptions of the work they have done. If they have done jobs that are related in some way to what you are doing, they will have more experience for your specific job.

Also using work history, look at the range of rates they have charged. You have to pay attention to the dates, because over time most places will increase their rates as they get more experience and credibility on upward. You might be able to ask for a lower rate, but if they are well established they may not be willing to negotiate.

Make a job posting, and invite them to the job. Once you are in contact with them, ask them about their time availability, when they could start, and negotiate the rate. You may also ask them for references and if they have an available portfolio to look at.

I would recommend (required: for any non-native speaking contractor) that you ask for a video or voice call to discuss your project. You want to see how well they communicate and understand what you are looking for. Communication is a key element to success so make sure the person can communicate effectively. During this interview explain to them your work requirements and ask specifically if they have had any experience with similar projects and ask if they have the skills to complete what you are needing - if they tell you they do not have skills in that area that is a hard pass.

If they accept your job and you accept them, then you can formalize it through UpWork.

Designs and Mockups

At this stage, I hand over the user stories to our software designer. They take these stories and create a visually exact mockup of the app. We use a product called Figma. Each and every screen of the app can be created and you can interact with the app as if it was real. You can click on things moving between different views and test the flow and functionality of the app.

As tempting as it is to give the user stories to the coders straight away. Do NOT skip this step. It will cost you time and money down the line. I usually plan for between 5-15% of the total project costs to be used for design. It is the best money spent because you can find problems before a line of code is laid down and sort them out at this relatively cheap phase. Changing code is expensive.

Also it give you the ability to create a unified easy to understand vision of what the product is, how it will work, and what it does. Between the user stories and the mockups, you can easily get everyone on the same page from the get go.

Validation Part 2

After getting your mockups back, you now have the opportunity to revalidate your concept, having spent a relatively small amount. Depending on the complexity of your app the initial mockups probably were in the range of $500-4000 at current rates.

Sort out what works and what doesn’t, then go back to the drawing board and come up with better solutions for things that don’t work well. Remember it’s important to think in terms of both adding and removing features where appropriate. Simplicity is always always always the best solution, so look for ways to combine, reduce, or remove things.

You can also go and show the mockups to potential customers and get their feedback. What they like, what they don’t like, and most importantly would they buy it. If possible try to presell and actually get some sort of payment from people, this is real commitment.

The other useful thing you can do with mockups is to incorporate them into your validation test funnel. This is basically an extension of the first validation step. Build your mockup screenshots into your test funnel and see what type of interest you can generate. One potential way to do this is through crowdfunding sites like kick starter, create a campaign and then use some digital marketing to push people to your campaign. Many people think of kickstarter as a way to fund a project, which it can be. But kickstarter is equally as valuable (if not more so) as a way to validate that people will actually buy what you are building.

Also, you can use the mockup screenshots to build a pitch deck if you are looking for investors or people to help fund your project. As they say a picture is worth a thousand words and this is very true with mockups. You can show someone your app idea much easier than you can explain it with words. Also it makes it feel real in the eyes/hands of the people seeing/using the mockup.

Something else I have used mockups for is to find a launch/test partner if you do not have one already. For instance, say you were making a SaaS to manage gyms. You really really need to find some gym that is willing to use your product in the beta phase and help you iron out some of the UI/UX (user interface/user experience) and other bugs before you bring it to the broader market. The way I have pitched this to them (the value they will get out of this partnership) - I tell them that their input is helping to guide the development and features of the product and so this solution will be more optimized to them and there needs than any other product on the market. I emphasize to them the rare opportunity that it is for them to have real input into something that will make their business run smoother and more profitably. You might be surprised how many people would find value in this and be willing to help you out for this reason alone. I also have often offered some financial incentive, like you can use it for free or 50% off when it is launched.

---Have to run for now, will add to this later
It's amazing. It's like my one months work done in few minutes. Thanks you @GIlman for this post.
 

Albert KOUADJA

Bronze Contributor
Read Fastlane!
Speedway Pass
User Power
Value/Post Ratio
84%
Mar 13, 2022
310
259
You will get many many opinions on how to build an app, everything from learn to code all the way to learn nothing except how to manage other people. Many ways can get you where you want to go. I won't elaborate on the benefits of any of these.

I will however, describe to you the process that I have used to go from idea to final app. I have been involved in the creation of dozens of apps, from both the amateur (code it all yourself) to the professional (I own a software dev shop in Vietnam with about 25 employees), we do both in house apps for our own company and outsource contract work for others. See my thread in my signature about starting that up.

Here is the blueprint of how I take an idea all the way through to an actual application. Although I know how to code, my time has become far too valuable to do anything but manage a project from a high level. What I am describing is the process to manage the creation of a project, not how to be involved in the nuts and bolts of creating it yourself.

Revenue Model

This is something I stress to everyone I work with on projects. You must have at least an initial plan on how your product will generate money. This is the very first thing I do and needs to be top of mind because you want to optimize your project around whatever model you choose.

Do not skip this step, I would argue the most important thing that must be sorted out first before anything else. If you cannot figure out a way to bring in money from your app from the get go, I would not start on it until you have figured it out. No money equals no long term viability. Of course your revenue model may change over time as you figure out how people use your product and what they are willing to pay for it, but you must have an initial plan.

Common options are:
  1. One Time Sale - You charge a fee to buy the software and may charge again later down the road for upgrades. Many mobile apps chose this option.
  2. Subscription - where you charge a recurring fee (typically monthly or annually). You can setup the subscription as a global cost to use the software - one set cost give you everything. Another option is based on some parameter such as number of users (e.g. you charge $10/mo/user), this is often how business SaaS products are priced. Another option for the subscription model is tier based, the tiers can be linked to features available (where each higher tier offers additional functionality from the lower tier) or based on some volume parameters with higher tiers offering greater volume of something (e.g. a cloud storage company having tiers based on amount of storage you can use)
  3. Fee based - There is some charge based on usage. There are tons of examples of this from AirBnB to Uber. Basically these are typically transactional based systems where something is offered and a fee is charged for each transaction on the platform.
  4. Advertising - This is pretty self explanatory. You can either plan to generate the advertising yourself or outsource to someone else like apple or google to get the ads. This is an eyeball play, and is best used on apps where people will spend a ton of time. Examples of this are games with ads displayed while playing or things like TikTok where the ads are build into the feed directly.

Also you can always combine different revenue options above, it does not have to be a one method solution.

Also remember the Freemium model where you offer some very basic version and then charge users to gain full functionality. Just make sure if you do choose freemium to design it in such a way that the user will get some use out of the product but there will be a strong incentive to want to upgrade. It costs money to maintain infrastructure and if too many people stay on freemium forever you won’t be able to stay profitable.

How do you figure out what people are willing to pay? The easiest way is to look in the market what people are already paying for similar apps/services. Or if there are no other players in your market try and find apps that are similar in scope and targeting a financially similar market (for instance if you are making something for dentists see if there is anything similar for doctors and what they are paying.

One of the big drivers for what you can charge is based on the amount of money available in the industry or user group. You can charge much much much higher fees for products aimed at doctors/lawyers/engineers/dentists/etc than you can charge teenagers/small restaurants/small salons/etc…One group may not blink at dropping 200K on a product while another will be stressed by $2,000 or even $200. Be aware that the bigger the organization you are dealing with usually the longer the sales cycle can be, something taking years.

Market Evaluation

The second thing that may be important to know, is if the market is large enough using the revenue model you are selecting to warrant creation of this product. The smaller the market size, the more you must be able to charge for the product to make it worth selling. Some products the market size is essentially infinite, such as a game on the App Store, in theory anyone could be interested in buying it.

Many products, especially niche industry specific products, will have a finite market. You can usually pretty easily find out an estimate of your market size. Usually I have done this by finding some registers of members of that industry. For instance years ago I was developing software for use in medical education during residency. I found an organization the ACGME that does accrediting for all residency programs. They had complete data on the total number of residents accepted into each residency program. From this I knew the maximum possible size of my target model and from my revenue model I could calculate the upper limit of potential revenue possible. Of course there is no such thing as 100% capture of any market so this is just a very rough gauge.

Gauging general interest can also be valuable tool in figuring out if this product is worth developing. One of my favorite ways to do this is to use google AdWords Keyword Planner tool. (Find Your Campaign Keywords with Keyword Planner - Google Ads). You have to create a free account, but using this tool you can do a deep dive into what people are searching for. The more people searching for a solution to a problem your product will solve, the bigger the market for this product. I use this tool all the time to figure out different phases of the product from conception to marketing.

Validate your idea somehow

I will use a recent project I have been developing to illustrate this step.

Project: A private label rental app for high end properties to give owners strict control of their properties while also getting the tax and revenue benefits of renting their property out. Goal is to get the upside without the typical downsides of P2P rentals.

There are many ways to get initial validation. One of my favorites is to just talk to anyone and everyone that will listen about it. People that would (in my case) both use it to offer their own properties for use as well as people that would be using those properties. Gauge interest from this feedback. If no one can see the vision of what you are doing, that raises some serious questions about the value of it.

This is free feedback and always very enlightening. I have zero fear of someone stealing my idea, it is a big job that requires tons of execution and in general people are too lazy to take it on. It's a bigger risk to me to keep my mouth shut

As an example: I was at an business conference (some people from this forum were in attendance), and I pitched my idea for this rental app to dozens of people. Many of the people there were very interested and gave me ideas of what they would want and how to make it valuable to them. Many of them had used other apps like AirBnB and VRBO and told me the pain points they had experience, which helped me to refine my idea further.

There are other forms of validation that you can do too. For instance, some people will try to pre-sell. They will setup a dummy page online, then create some ads on google or facebook. You can either try to get actual pre-sales, or get fake pre-sells. To get a fake presell you take the person all the way to the credit card form and when they hit complete order just don't save their data and generate an error...this proves they would have bought it. And don't worry about losing a bunch of customers, there are tons more and your purpose at this phase is just validation. And if losing a handful of customers would be impactful then the idea has no legs in the first place.

You can also try to presell in person too where you approach a business, etc..., and have them invest some amount of money upfront to help you develop it for some big perk down the line. You would be amazed the number of businesses that will do this if you can get them to see the true value of your product. I have done this with a "partner" business to help build an app, the upfront cost was $200K. But I have a long proven track record of delivering and the product was solving a huge pain point of this company.

Another way you can do soft validation is through Google Keyword Planner mentioned above. If you did not already do this when researching the products market, do it now by plugging in different keyword search phrases related to your intended product. See if people are searching for it. The more traffic of people looking for something the more need and larger the relevant audience.

Create Outline of Your product.

There are several ways to do this, but in this stage I create a text sketch of my product. Now days I actually use ChatGPT to help me do these. To do this I write as complete of a description as possible, using normal English, then ask ChatGPT to create me user stories and acceptance criteria.

Here is a fictitious example (made up on the fly right now for say a dog walking app) of what I would feed into ChatGPT.

"Imagine you are designing software, you need to take the following information and generate user stories and acceptance criteria that a software designer and software programmer will use to create the application. Please include a background statement summarizing the application.

The app will be created for smartphones such as an iPhone. The purpose of the application will be to enable dog owners to find people that can walk their dog for an agreed upon price.

New users will create an account by entering their phone number into the app. The app will then send the new user a text message with a code. The new user can then enter the code into the app which will validate that their phone number is valid, and then the user will be prompted for a password and will designate whether they are a dog owner user or dog walker user.

Dog owner users can view a list of dog walker users, that are ordered by distance from them. The list will show a picture of the dog walker user, show their rating from other dog owner users, a description of their services, and a price for their services. Dog owner users can select a dog walker user and send a job offer to walk their dog.


Dog walker users will see a list of their scheduled dog walking appointments. Dog walker users will be notified when a dog owner user sends a job offer, and they will be able to accept or decline the offer."

I feed this into chatGPT, and the following is the output I get.

Background Statement: Our application aims to connect dog owners with dog walkers in their vicinity. This mobile app, designed for smartphones like iPhone, will facilitate the process of finding and booking dog walking services. Users will be able to create accounts, search for nearby dog walkers, and arrange dog walking appointments. Below are user stories and acceptance criteria to guide the software designer and programmer in building this application.


User Stories:

User Registration:


  1. As a new user, I want to create an account with my phone number so I can access the app's features.
    Acceptance Criteria:

    • The app should provide a registration screen with a phone number input field.
    • After entering the phone number, the app should send a verification code via SMS.
    • The user should be able to enter the received code to verify their phone number.
    • Once the phone number is validated, the user should be prompted to create a password.
    • The user should be asked to specify whether they are a dog owner or a dog walker.
Dog Owner Features:

  1. As a dog owner user, I want to view a list of nearby dog walkers so I can choose one to walk my dog.
    Acceptance Criteria:

    • The app should display a list of dog walker users ordered by distance from the dog owner's location.
    • Each list item should include a profile picture, rating, service description, and price for each dog walker.
    • Users should be able to select a dog walker from the list.
  2. As a dog owner user, I want to send a job offer to a selected dog walker.
    Acceptance Criteria:

    • After selecting a dog walker, the app should provide an option to send a job offer.
    • The user should be able to specify the date and time for the dog walking appointment.
    • The app should notify the selected dog walker of the job offer.
Dog Walker Features:

  1. As a dog walker user, I want to see a list of my scheduled dog walking appointments.
    Acceptance Criteria:

    • The app should display a list of upcoming dog walking appointments for the dog walker.
    • Each appointment should include details such as the dog owner's name, dog's name, date, and time.
  2. As a dog walker user, I want to receive notifications when a dog owner user sends a job offer.
    Acceptance Criteria:

    • The app should send a push notification to the dog walker user when a job offer is received.
    • The notification should include details about the job offer, such as the dog owner's name and the appointment details.
  3. As a dog walker user, I want to be able to accept or decline job offers.
    Acceptance Criteria:

    • The app should provide options to accept or decline a job offer when a notification is received.
    • If the dog walker accepts, the appointment should be added to their schedule.
I then work with chatGPT asking it to modify user stories that do not fit what I am wanting. You can get a pretty good set of user stories and acceptance criteria working with ChatGPT this way. Once you have it close to where you want it, then copy it to a document and then make the remainder of the modifications by hand.

Finding Talent

Chances are that along the path you will need to hire someone for design, coding, copywriting, marketing, etc.

One method some people use is to find a technical cofounder. Someone that knows how to code and is willing to do the sweat equity needed to code out the app. I can’t tell you how to find this person, because I have never done it, but if you have access to someone with the right skills or can find them, this is one pathway you can take. Of course you will be giving them equity, which is a marriage of sorts, so you must consider the benefits vs risk of this. Ask many people who have done a partnership in the past and you will find many horror stories of entering into this type of arrangement. Of course just like marriage, you may find the perfect partner and together can do far more than you could have alone.

Another method I have used in the past is finding talent through sites such as Upwork. If you are not familiar, Upwork is basically a site to find and hire people as contractors to the work you need. The process is very straight forward.

Here is my software development company (https://www.upwork.com/agencies/~0156ccc02c6b3a9f76/). Use it for reference for the discussion below, you can easily find each element I’m describing.

Here is my general process:

Do a search for the skills that you need. It is best if you have researched and have specific knowledge about what you want. For instance if I was building a mobile app I may be looking for programmers skilled in javascript and react native.

Next you need to vet the particular contractor you find. Be aware that there are both agencies representing a group of contractors as well as individuals on Upwork. If it is not clear to you what you are dealing with ask them.

Look at their job success, it should be 100% or at least in the mid to high 90’s. Also look at the total # of jobs they have completed and total hours worked. Between the job success and the number of jobs you can gauge how likely they will successfully complete your job. Our company does a small portion of our work on Upwork now days, the vast majority is direct referrals from prior clients, so I would view this work history a the minimum they have done, they may have much much more experience.

How long they have been a member on upward? The longer they have been a member the more legit and less likely they are to just disappear on your.

Look at their portfolio of work online to get an idea of what they have done and visually how it looks. Most contractors do not have a complete portfolio online, you can always contact them and ask them to view their portfolio.

Now look at their work history. You can get a rough idea of the size of jobs they have done, make sure to select the option for both “Completed Jobs” and “Jobs in Progress”. Look at both the hours and the money earned. In particular if you have a really big job, make sure they have taken on some sizable work, some developers can handle a small app but will struggle with a complex app.

Also using work history look at the descriptions of the work they have done. If they have done jobs that are related in some way to what you are doing, they will have more experience for your specific job.

Also using work history, look at the range of rates they have charged. You have to pay attention to the dates, because over time most places will increase their rates as they get more experience and credibility on upward. You might be able to ask for a lower rate, but if they are well established they may not be willing to negotiate.

Make a job posting, and invite them to the job. Once you are in contact with them, ask them about their time availability, when they could start, and negotiate the rate. You may also ask them for references and if they have an available portfolio to look at.

I would recommend (required: for any non-native speaking contractor) that you ask for a video or voice call to discuss your project. You want to see how well they communicate and understand what you are looking for. Communication is a key element to success so make sure the person can communicate effectively. During this interview explain to them your work requirements and ask specifically if they have had any experience with similar projects and ask if they have the skills to complete what you are needing - if they tell you they do not have skills in that area that is a hard pass.

If they accept your job and you accept them, then you can formalize it through UpWork.

Designs and Mockups

At this stage, I hand over the user stories to our software designer. They take these stories and create a visually exact mockup of the app. We use a product called Figma. Each and every screen of the app can be created and you can interact with the app as if it was real. You can click on things moving between different views and test the flow and functionality of the app.

As tempting as it is to give the user stories to the coders straight away. Do NOT skip this step. It will cost you time and money down the line. I usually plan for between 5-15% of the total project costs to be used for design. It is the best money spent because you can find problems before a line of code is laid down and sort them out at this relatively cheap phase. Changing code is expensive.

Also it give you the ability to create a unified easy to understand vision of what the product is, how it will work, and what it does. Between the user stories and the mockups, you can easily get everyone on the same page from the get go.

Validation Part 2

After getting your mockups back, you now have the opportunity to revalidate your concept, having spent a relatively small amount. Depending on the complexity of your app the initial mockups probably were in the range of $500-4000 at current rates.

Sort out what works and what doesn’t, then go back to the drawing board and come up with better solutions for things that don’t work well. Remember it’s important to think in terms of both adding and removing features where appropriate. Simplicity is always always always the best solution, so look for ways to combine, reduce, or remove things.

You can also go and show the mockups to potential customers and get their feedback. What they like, what they don’t like, and most importantly would they buy it. If possible try to presell and actually get some sort of payment from people, this is real commitment.

The other useful thing you can do with mockups is to incorporate them into your validation test funnel. This is basically an extension of the first validation step. Build your mockup screenshots into your test funnel and see what type of interest you can generate. One potential way to do this is through crowdfunding sites like kick starter, create a campaign and then use some digital marketing to push people to your campaign. Many people think of kickstarter as a way to fund a project, which it can be. But kickstarter is equally as valuable (if not more so) as a way to validate that people will actually buy what you are building.

Also, you can use the mockup screenshots to build a pitch deck if you are looking for investors or people to help fund your project. As they say a picture is worth a thousand words and this is very true with mockups. You can show someone your app idea much easier than you can explain it with words. Also it makes it feel real in the eyes/hands of the people seeing/using the mockup.

Something else I have used mockups for is to find a launch/test partner if you do not have one already. For instance, say you were making a SaaS to manage gyms. You really really need to find some gym that is willing to use your product in the beta phase and help you iron out some of the UI/UX (user interface/user experience) and other bugs before you bring it to the broader market. The way I have pitched this to them (the value they will get out of this partnership) - I tell them that their input is helping to guide the development and features of the product and so this solution will be more optimized to them and there needs than any other product on the market. I emphasize to them the rare opportunity that it is for them to have real input into something that will make their business run smoother and more profitably. You might be surprised how many people would find value in this and be willing to help you out for this reason alone. I also have often offered some financial incentive, like you can use it for free or 50% off when it is launched.

---Have to run for now, will add to this later
Thanks you for this this post.
 

GIlman

Still Gilman
FASTLANE INSIDER
Read Fastlane!
Read Unscripted!
Summit Attendee
Speedway Pass
User Power
Value/Post Ratio
605%
Oct 16, 2014
801
4,843
Development Technologies Overview

This section will be a little on the technical side but it is worth understanding some of the basic technologies and terminology so you understand what developers are talking about when you interact with them. If you don’t care about this information just skip to the next section.

There are some specific considerations you will need to make when finding your developers. First what technologies will you be using? I will give a brief synopsis of common technologies that are used today for development. It is important to have some basic understandings of what technologies are typically used so that you can make better decisions.

Some mobile apps and nearly all SaaS web apps will also require you to create a backend program that runs on the server and can send and receive data and files to support your application. If you need to save or retrieve data from your mobile or web app, you will need to create and maintain a backend server application to handle these functions.

For mobile apps

React Native - This is technology that was created and is maintained by Facebook. React native is not a programming language but a framework built by face book that can run on multiple operating systems. The benefit of react native is that you can code once and then compile that code into apps for both the iOS and Android app stores. The major downside is a performance hit on large demanding applications because of added overhead. Basically there is an additional layer between the operating system and your code that takes up some additional resources.

Native Programming Languages:

As opposed to react native, there are some specific programming languages that you can use. If you use these they will be specific to the operating system you are creating form.
  • Swift - Official native programming language for programming iOS apps. Produced and maintained by Apple. Best option for very demanding apps to optimize performance.
  • Java - This is the original official language and most commonly used for programming native android apps.
  • Kotlin - This is the current official language for android app development.
  • Others - There are many programming languages besides these that can be used for mobile app development, but the 4 mentioned are the most popular as well as the officially supported ones (except React Native) by Apple and Google for iOS and Android respectively. I include react native because it is the most commonly used cross-platform solution to produce both iOS and Android apps simultaneously.
For web based Software as a Service (SaaS) Apps

Webapps are built in two parts, front end and backend. The front end is the application that runs in the users browser, when the user visits the URL of the webapp. The backend is the software that runs on the server. The front end application makes requests to the backend (server) to send and receive data and resources such as images. Both the frontend and backend are developed independently, and there are different programming languages and frameworks appropriate for each. Front end application technologies will be discussed here and backend technologies discussed in the following section.

A traditional web site was composed of content and links. When you clicked on a link the web browser would make a request from the server and a new web page with all of its content would be fetched. Today nearly all SaaS webapp frontends today are built as Single Page Applications (SPA). With a single page application, when you connect to the server initially, the server sends JavaScript programming code to the browser.

This javascript code runs in the browser and is able to format and display all of the different views for content. After this initial script is loaded, then the remainder of the interactions with the server are simply to send or receive small packages of data. This allows you to create the look and feel of an actual application running in the browser as opposed to fetching different web pages with each click of a link.

For single page application front end development, these are the most popular.
  • React – Created by Facebook. Is very widely used with lots of experienced programmers available who can code React applications. React is very popular and very capable. If you do not know what else to use, and your developer does not give you a good reason to use something else, React is probably the safest best to use at the moment.
  • Angular – Created by Google. Also widely used, but a bit less common than React. I personally prefer React over Angular, but many people like to use Angular. Also from what I see I think Angular is falling in popularity over time. Personally I would never use Angular for anything, but it has it’s fans.
  • VueJS – Created by Evan You, and maintained by an open source community. I have not used this framework, but it has a solid following. One down side of VueJS is that there is not corporate backer, which can lead to future issues if the core team abandons development in the future.
  • Svelte – I am mentioning this one because it is my own personal favorite framework, and is growing in popularity every year. Svelte was created by Rich Harris and is maintained by a core open source team, so there is the same risk as VueJS that if the team abandons the project it could become obsolete in the future. You can create applications with less code than required with the other frameworks and it has excellent performance because of the way it is structured (which is beyond this discussion). If you are learning to code, this would be an excellent framework to learn to use.
  • Others – Really there are a huge number of front end frameworks, I have listed the 3 most popular plus my personal favorite (Svelte, which is still within the top 10). If you want to discover more just do a web search for “JavaScript front end frameworks”.
Backend Technologies

When we say backend we are referring to the server and the software running on it that supports your web app or mobile app. The backend is actually operates independently from your web app and mobile app. In fact, a single backend can provide data and file resources to many different web/mobile apps simultaneously. The backend does not care what connects to it, so long as it makes requests in the appropriate way and has the correct permission to access that data (e.g. if required was authenticated with a valid user name and password). If you create a mobile app and also create a web app, you can use the exact same backend for both.

There are many different software packages and frameworks that can be used to create backends, but there are two design patterns that are very popular that you are likely to encounter. Both of them have the ability to receive a request, and then return the required data back to the mobile or web app.

  • restAPI – This is a basically a way for your web or mobile app to request data by specifying a specific URL. For instance to get a list of users the url may be "https://someserver.com/users". Or to get a specific user the url may be "https://somserver.com/user/18723456" where the # is the user id to return. The server does not return a web page, but instead returns a very short chuck of data, if your curious it would look something like this. {userId: 18723456, userName: “Gilman”, email: “gilman@someplace.com”}. Each url endpoint is specifically coded on the back end with what to expect from the request and what to return for data.
  • GraphQL – This is more like a direct connection to the database or other data sources for the application. On the server you configure what data can be accessed and by who. The web or mobile app then sends a request asking for specific data, and the server returns it. All requests are made to the same server address, there is no URL formatting like with a restAPI. If you are curious a request from and app to get the user in our example above would look like this {user(id: “18723456”){userId userName email}} the data that the server returns would look like this {“data”: {“user”: {“userId”: 18723456, “userName”: “Gilman”, “email”: “gilman@someplace.com”}. }
  • Others – There are some other ways to deploy a backend, but unless you have a specific reason so choose something else you should be using a restAPI or GraphQL backend.
The reason I show how to request and also how the data is returned is to make the point that restAPI and GraphQL are two different ways to request and receive data where the method of the request is very different but the way the data will be returned is typically very similar. Currently about 80% of backends are designed using restAPI pattern and about 20% of backends are designed using GraphQL.

So why use one over the other? RestAPI is a very rigid setup. You make a request to the server and the server determines what data is returned to you based on the programming. In our example above if you request a user’s data from the restAPI, it will always return the userId, userName, and email. If you only wanted the userName without the other data you can’t request that specifically. If you want a set of data to be returned in a different way, you have to go back to the server and reprogram how the data is returned back or add a new URL that will return back data in a different way than the original URL.

GraphQL works the opposite way. On the server you simply determine which data the mobile or web app can access, and then the programmer of the web app is able to request that data in whatever format and only including exactly what data they want. So now, if we only want to get the userName of a user without any additional data, the programmer of your mobile or web app can specifically program it so it requests only the userName.

In this sense, a restAPI is more rigid and structured and GraphQL is very adaptable allowing flexibility in how data for web and mobile apps can be requested from it. One downside of GraphQL, is that since you do not have rigid constraints on exactly how the data is fetched, a developer could code an app that requested massive amounts of data and cause your backend GraphQL server to bog down trying to service that request. There are methods to limit this ability for abuse, but this potential for abuse exists in a way that is not possible with a restAPI. A restAPI can only be abused if it is programed to allow the abuse.

Refine and Add to Specification

At this phase, you now have your original specification, the example I gave was using user stories and acceptance criteria. You also have your mockups from your designer. As part of the design process your designer has taken your rough concept and added many features to it.

For instance, you may have requested for a list of dog walkers to be displayed to people needing their dog walked. In the design you may see a feature to filter and sort that list that was added by the designer (which you did not explicitly ask for). This is a good thing, because the designer should have a ton of experience with design and they will take expand and improve upon your basic ideas. However, you need to create some written specification to accompany all of the features to assist the developers.

In addition usually the original user stories I gave to the designer are very broad, to establish the concept, but are not really digestible pieces for the developers (i.e. one story may encompass a very large amount of functionality). Now with the design in hand I can create some more specific user stories that break down the functionality in the design.

There are many different styles and ways to write software specification. Each has their own benefit and downsides. I like user stories and acceptance criteria because it provides guidance and some details to your people, but it is not so specific that you are micromanaging every detail of the project. This allows your programmers and designers to use their experience, talents, and creativity to add to your project, and you should be leveraging the abilities of your team to the maximum.

Years ago I use to be very very very specific with all of my specification, each was a progression of steps stating how everything would work to the tiniest detail. I discovered that although I did produce things that “worked” the way I was describing, I was spending way too much time writing spec and not using my team in an efficient and effective way. Find a good team and trust them to do their job, don’t micromanage it.

Let me take a moment and talk about User Stories and Acceptance Criteria which were introduced earlier (this is my preferred way of writing software specifications). A user story is a general statement that describes who, when, and what should happen in the software. The acceptance criteria are basically the things that the feature must accomplish to be considered complete for the current cycle of development.

This is actually really important because you need (no matter the type of specification you use) to have a agreed upon standard of when a feature is considered done. Complete the features in the current development cycle, and if there are modifications needed, then plan them in a future development cycle.

We used chat GPT in our initial example and you can do the same to refine your specification, but at this point I often just add these specifications manually using the mockups as a blue print.

Using the example from above of a sort feature in the dog walker list I would create some specification some thing like this. Notice the pattern I described earlier in the example below. Who (dog owner), when (viewing the list of dog walkers), what (sort list of dog walkers)

User Story: As a dog owner, when viewing the list of dog walkers, I want to be able to sort the list of dog walkers.
  • The list should be sortable by name
  • The list should be sortable by distance
  • The list should be sortable by price

See how this is a discreet development task, which is important especially if you are dealing with a team of more than one developer. It allows a member to grab that task and finish and integrate it to the code in a timely manner. If you have only one developer this is less important from a development standpoint.

Find your Developers

At this phase, we are ready to find the people to develop our product. It will be helpful to know in general what general technologies you want to use so you can find the appropriate people.

A few things to consider. Do you want a team or an single individual developer. If it is a small project, and there is not a growth trajectory that it can become a big project in the future, then a single developer will be ideal since there will be no need to coordinate with other people.

The larger the project gets, the more it makes sense to hire a team. First as a team you have more creative muscle as it were, because they can collaborate to come up with better solutions. Also, people get sick, quit, die, or get bogged down by other things in life. If you are relying on a single person this can stall your project. If you have a good team, people should be able to rotate in and out if needed as the project progresses.

Few projects are a one and done deal. There are usually updates, bug fixes, or other additions you will want to make overtime. Not many products can stay relevant for years without some degree up maintenance. Having a team in place helps enormously with this process.

For specifics of looking for programmers, see the section in the first post "Finding Talent". The more specific you are in your search of what you need, the better fit you will find. This is why I gave an overview of some technologies was to point you in the general direction of what you may want.

Since there is a good chance your developers will be overseas, I will re-emphasize that you much make sure that they are able to communicate efficiently in your language before you start. If you can't communicate effectively the project will be doomed from the start.

I want to say a thing or two about project bids. There are generally two ways that people will try to get projects bid. As a fixed price where a price is negotiated up front and all development will occur for that price, or hourly where your developers will charge based on the time that it takes to complete the task.

I have a strong opinion about this having both hired developers myself and in the position where people hire our company. It seems that a fixed price would be the way to go, since you know up front what to expect. The problem with fixed price projects are several.

First it puts your interests in conflict with the development team. You want to get as much work as possible for the agreed upon rate, and the development team wants to do the least amount of work possible. To get anything close to an accurate fixed price estimate, you must be very very specific and detailed about what you want. Literally everything must be priced in. Do not assume that something is obvious, if you have not explicitly asked for it, it has not been priced into the estimate.

As the project goes along, you will find that you have either overlooked things, want to add to what you initially wanted, or need to make some core changes to the project. If you have a fixed rate project you are now at an impasse because these changes may completely alter the direction of the project and there is no inherent pricing mechanism how to do this. You can renegotiate the price based on your requests, but now you have no real negotiating leverage because the project is under way. Things can get really expensive really quickly.

I would strongly recommend doing a project at what you find to be a reasonable hourly rate. This will bring your interests and your developers interests more in line, and from my experience the project will have less change of stalling or failing.

If you are opposed to doing it by hourly, and really want a fixed rate quote, I would recommend that you go through your specifications with a fine tooth comb, and make sure every feature is detailed. If something comes up later that is not in the original bid, I would just carry on with the project until completion. Then get a new bid or negotiate an hourly rate to make changes to the completed project.

Project Management

Project management will be your primary and most important task. Keeping a steady flow of what needs to be done on your project, and organizing the order that those tasks will be completed will ensure your project moves forward in a predictable manner. This is the area that I would spend time really learning. Buy some books or do research online, but you are the project manager, so become a professional in project management.

In particular I would study Agile Development, SCRUM, and Kanaban. There are other methods of development people use, but I have found elements of these three to be the easiest to implement and make an accountable dynamic system to manage and communicate with my teams.

Once you have found your developers you want to use, the first thing that I would do is ask your developer, or team, which project management method they like and what they are most familiar with. Many developers have used a number of management styles, and you will need to agree upfront how you will organize and manage the work that needs to be done.

The general method that we use most often is some variant of agile software development and scrum. We usually use a Kanaban style board to manage the progression of tasks through the development cycle. Basically the board is broken down into different columns that represent the different stages that development tasks can be in. Tasks will start out in the first (left) column (which we call Icebox), and are moved from column to column to the right, until they reach the last column.

You can manage your board using an actual whiteboard, create each column on the whiteboard, then use sticky notes with each task written on them. Of course this only works if the team is physically in the same location. There are also many different software packages that you can use to create a digital work board, which is what you will have to use if you have a remote team, one common one is called Trello although there are many others and one of my personal favorite is called Pivotal Tracker.

We group development into discrete periods, we call each of these periods a “Sprint”, and a typical sprint will run for 1-2 weeks. This is a concept taken from scrum. Before each sprint, you as the project manager will determine what tasks will be included in the next sprint. Once the sprint has begun, only the tasks in the sprint will be worked on. When all the tasks are completed the sprint is over.

We typically organize our Kanaban board in the following way to manage our sprints.
  • Icebox - this is the first group of tasks we have and contains a list of any and all features that will be developed at sometime in the future. We have not decided yet what sprint to develop these features, but the icebox keeps track of everything that we need to get done at some point in the future. I also put things in here that are just ideas, and may or may not ever be added, but it’s a convent way to keep track of those though threads.
  • Sprint Backlog - before the first (or next) sprint begins, you (or whoever) is managing the development team, will select tasks from the icebox, that need to be completed in the current sprint, and move them from icebox to the sprint backlog. When a task is in the sprint backlog, it is not assigned to anyone for development, any developer is free to grab the task when they are available to work on it. If you have only one developer this still works to keep track of what is in progress and what stage.
  • Working - when a developer is ready to begin working on a new task, they move the task from Spring Backlog to Working and assign the task to themselves. The task will stay in the working column until all acceptance criteria are met.
  • Testing - when the developer has completed the task, and all acceptance criteria are met, the developer will move the task to the testing column. Either you or someone you designate, will then test the features (see below) to ensure that things are working as expected. If it does not pass, then you will write your comments on the task, and move it back into the Sprint Backlog column.
  • Done - if a task passes all testing, then it is moved to the done column. When all tasks have been completed, and are in the done column, then the sprint is over and a new sprint will be planned and started.
Software Version Repository

At this point we need to discuss where and how you will manage the actual code produced. There are a couple key elements you are looking for. First you need a common way that anyone working on the project can access, download existing code, make changes commit their changes. You also want to be have a history of all changes, which gives you the ability to look back in time to prior code if something goes wrong in the future. You all so need a way to control who has what access to the code.

The two major types of software repositories in use today are svn (Subversion) and git which has no other name. If you are starting out, and don’t know what to use, just choose git which is widely used by a massive number or projects.

Although you do not need an online repository to store your code, I would strongly recommend it. First it will make it easier in most instances to collaborate with your team, especially if you are not in the same location. Second it gives you a solid backup system away from your primary location incase something bad were to happen (e.g. the building burned down).

The two major git repositories nearly everyone uses is GitHub (GitHub: Let’s build from here), and Bitbucket (Bitbucket | Git solution for teams using Jira). Both use git as their protocol, so you can start with one and migrate to the other if you ever wanted to. We use GitHub primarily, because they also have built in issue tracking with a Kanaban board. But bitbucket is just as good, and you may not like the project management tools on GitHub and want to use something else anyway like Trello.

A couple of very important points. This is your project, and you are the manager. I personally would create the admin account, and invite your team to the project. Give the team only the absolute minimum access and privileges that they need to do their job. For instance, usually I would set it up so that the developers can add commits and merge branches, but not create or delete the repository. One other very important thing, assuming this is meant to be a commercial project, make sure that you mark any repository you make as Private and not Public. If you leave or mark it as public you are essentially releasing all of your code into the wild for anyone to download and see.

-- Need to run for now, More to come
 
Dislike ads? Remove them and support the forum: Subscribe to Fastlane Insiders.
Last edited:

oneac

Bronze Contributor
Read Rat-Race Escape!
Read Unscripted!
Speedway Pass
User Power
Value/Post Ratio
244%
Jul 29, 2022
117
285
Development Technologies Overview

This section will be a little on the technical side but it is worth understanding some of the basic technologies and terminology so you understand what developers are talking about when you interact with them. If you don’t care about this information just skip to the next section.

There are some specific considerations you will need to make when finding your developers. First what technologies will you be using? I will give a brief synopsis of common technologies that are used today for development. It is important to have some basic understandings of what technologies are typically used so that you can make better decisions.

Some mobile apps and nearly all SaaS web apps will also require you to create a backend program that runs on the server and can send and receive data and files to support your application. If you need to save or retrieve data from your mobile or web app, you will need to create and maintain a backend server application to handle these functions.

For mobile apps

React Native - This is technology that was created and is maintained by Facebook. React native is not a programming language but a framework built by face book that can run on multiple operating systems. The benefit of react native is that you can code once and then compile that code into apps for both the iOS and Android app stores. The major downside is a performance hit on large demanding applications because of added overhead. Basically there is an additional layer between the operating system and your code that takes up some additional resources.

Native Programming Languages:

As opposed to react native, there are some specific programming languages that you can use. If you use these they will be specific to the operating system you are creating form.
  • Swift - Official native programming language for programming iOS apps. Produced and maintained by Apple. Best option for very demanding apps to optimize performance.
  • Java - This is the original official language and most commonly used for programming native android apps.
  • Kotlin - This is the current official language for android app development.
  • Others - There are many programming languages besides these that can be used for mobile app development, but the 4 mentioned are the most popular as well as the officially supported ones (except React Native) by Apple and Google for iOS and Android respectively. I include react native because it is the most commonly used cross-platform solution to produce both iOS and Android apps simultaneously.
For web based Software as a Service (SaaS) Apps

Webapps are built in two parts, front end and backend. The front end is the application that runs in the users browser, when the user visits the URL of the webapp. The backend is the software that runs on the server. The front end application makes requests to the backend (server) to send and receive data and resources such as images. Both the frontend and backend are developed independently, and there are different programming languages and frameworks appropriate for each. Front end application technologies will be discussed here and backend technologies discussed in the following section.

A traditional web site was composed of content and links. When you clicked on a link the web browser would make a request from the server and a new web page with all of its content would be fetched. Today nearly all SaaS webapp frontends today are built as Single Page Applications (SPA). With a single page application, when you connect to the server initially, the server sends JavaScript programming code to the browser.

This javascript code runs in the browser and is able to format and display all of the different views for content. After this initial script is loaded, then the remainder of the interactions with the server are simply to send or receive small packages of data. This allows you to create the look and feel of an actual application running in the browser as opposed to fetching different web pages with each click of a link.

For single page application front end development, these are the most popular.
  • React – Created by Facebook. Is very widely used with lots of experienced programmers available who can code React applications. React is very popular and very capable. If you do not know what else to use, and your developer does not give you a good reason to use something else, React is probably the safest best to use at the moment.
  • Angular – Created by Google. Also widely used, but a bit less common than React. I personally prefer React over Angular, but many people like to use Angular. Also from what I see I think Angular is falling in popularity over time. Personally I would never use Angular for anything, but it has it’s fans.
  • VueJS – Created by Evan You, and maintained by an open source community. I have not used this framework, but it has a solid following. One down side of VueJS is that there is not corporate backer, which can lead to future issues if the core team abandons development in the future.
  • Svelte – I am mentioning this one because it is my own personal favorite framework, and is growing in popularity every year. Svelte was created by Rich Harris and is maintained by a core open source team, so there is the same risk as VueJS that if the team abandons the project it could become obsolete in the future. You can create applications with less code than required with the other frameworks and it has excellent performance because of the way it is structured (which is beyond this discussion). If you are learning to code, this would be an excellent framework to learn to use.
  • Others – Really there are a huge number of front end frameworks, I have listed the 3 most popular plus my personal favorite (Svelte, which is still within the top 10). If you want to discover more just do a web search for “JavaScript front end frameworks”.
Backend Technologies

When we say backend we are referring to the server and the software running on it that supports your web app or mobile app. The backend is actually operates independently from your web app and mobile app. In fact, a single backend can provide data and file resources to many different web/mobile apps simultaneously. The backend does not care what connects to it, so long as it makes requests in the appropriate way and has the correct permission to access that data (e.g. if required was authenticated with a valid user name and password). If you create a mobile app and also create a web app, you can use the exact same backend for both.

There are many different software packages and frameworks that can be used to create backends, but there are two design patterns that are very popular that you are likely to encounter. Both of them have the ability to receive a request, and then return the required data back to the mobile or web app.

  • restAPI – This is a basically a way for your web or mobile app to request data by specifying a specific URL. For instance to get a list of users the url may be "https://someserver.com/users". Or to get a specific user the url may be "https://somserver.com/user/18723456" where the # is the user id to return. The server does not return a web page, but instead returns a very short chuck of data, if your curious it would look something like this. {userId: 18723456, userName: “Gilman”, email: “gilman@someplace.com”}. Each url endpoint is specifically coded on the back end with what to expect from the request and what to return for data.
  • GraphQL – This is more like a direct connection to the database or other data sources for the application. On the server you configure what data can be accessed and by who. The web or mobile app then sends a request asking for specific data, and the server returns it. All requests are made to the same server address, there is no URL formatting like with a restAPI. If you are curious a request from and app to get the user in our example above would look like this {user(id: “18723456”){userId userName email}} the data that the server returns would look like this {“data”: {“user”: {“userId”: 18723456, “userName”: “Gilman”, “email”: “gilman@someplace.com”}. }
  • Others – There are some other ways to deploy a backend, but unless you have a specific reason so choose something else you should be using a restAPI or GraphQL backend.
The reason I show how to request and also how the data is returned is to make the point that restAPI and GraphQL are two different ways to request and receive data where the method of the request is very different but the way the data will be returned is typically very similar. Currently about 80% of backends are designed using restAPI pattern and about 20% of backends are designed using GraphQL.

So why use one over the other? RestAPI is a very rigid setup. You make a request to the server and the server determines what data is returned to you based on the programming. In our example above if you request a user’s data from the restAPI, it will always return the userId, userName, and email. If you only wanted the userName without the other data you can’t request that specifically. If you want a set of data to be returned in a different way, you have to go back to the server and reprogram how the data is returned back or add a new URL that will return back data in a different way than the original URL.

GraphQL works the opposite way. On the server you simply determine which data the mobile or web app can access, and then the programmer of the web app is able to request that data in whatever format and only including exactly what data they want. So now, if we only want to get the userName of a user without any additional data, the programmer of your mobile or web app can specifically program it so it requests only the userName.

In this sense, a restAPI is more rigid and structured and GraphQL is very adaptable allowing flexibility in how data for web and mobile apps can be requested from it. One downside of GraphQL, is that since you do not have rigid constraints on exactly how the data is fetched, a developer could code an app that requested massive amounts of data and cause your backend GraphQL server to bog down trying to service that request. There are methods to limit this ability for abuse, but this potential for abuse exists in a way that is not possible with a restAPI. A restAPI can only be abused if it is programed to allow the abuse.

Refine and Add to Specification

At this phase, you now have your original specification, the example I gave was using user stories and acceptance criteria. You also have your mockups from your designer. As part of the design process your designer has taken your rough concept and added many features to it.

For instance, you may have requested for a list of dog walkers to be displayed to people needing their dog walked. In the design you may see a feature to filter and sort that list that was added by the designer (which you did not explicitly ask for). This is a good thing, because the designer should have a ton of experience with design and they will take expand and improve upon your basic ideas. However, you need to create some written specification to accompany all of the features to assist the developers.

In addition usually the original user stories I gave to the designer are very broad, to establish the concept, but are not really digestible pieces for the developers (i.e. one story may encompass a very large amount of functionality). Now with the design in hand I can create some more specific user stories that break down the functionality in the design.

There are many different styles and ways to write software specification. Each has their own benefit and downsides. I like user stories and acceptance criteria because it provides guidance and some details to your people, but it is not so specific that you are micromanaging every detail of the project. This allows your programmers and designers to use their experience, talents, and creativity to add to your project, and you should be leveraging the abilities of your team to the maximum.

Years ago I use to be very very very specific with all of my specification, each was a progression of steps stating how everything would work to the tiniest detail. I discovered that although I did produce things that “worked” the way I was describing, I was spending way too much time writing spec and not using my team in an efficient and effective way. Find a good team and trust them to do their job, don’t micromanage it.

Let me take a moment and talk about User Stories and Acceptance Criteria which were introduced earlier (this is my preferred way of writing software specifications). A user story is a general statement that describes who, when, and what should happen in the software. The acceptance criteria are basically the things that the feature must accomplish to be considered complete for the current cycle of development.

This is actually really important because you need (no matter the type of specification you use) to have a agreed upon standard of when a feature is considered done. Complete the features in the current development cycle, and if there are modifications needed, then plan them in a future development cycle.

We used chat GPT in our initial example and you can do the same to refine your specification, but at this point I often just add these specifications manually using the mockups as a blue print.

Using the example from above of a sort feature in the dog walker list I would create some specification some thing like this. Notice the pattern I described earlier in the example below. Who (dog owner), when (viewing the list of dog walkers), what (sort list of dog walkers)

User Story: As a dog owner, when viewing the list of dog walkers, I want to be able to sort the list of dog walkers.
  • The list should be sortable by name
  • The list should be sortable by distance
  • The list should be sortable by price

See how this is a discreet development task, which is important especially if you are dealing with a team of more than one developer. It allows a member to grab that task and finish and integrate it to the code in a timely manner. If you have only one developer this is less important from a development standpoint.

Find your Developers

At this phase, we are ready to find the people to develop our product. It will be helpful to know in general what general technologies you want to use so you can find the appropriate people.

A few things to consider. Do you want a team or an single individual developer. If it is a small project, and there is not a growth trajectory that it can become a big project in the future, then a single developer will be ideal since there will be no need to coordinate with other people.

The larger the project gets, the more it makes sense to hire a team. First as a team you have more creative muscle as it were, because they can collaborate to come up with better solutions. Also, people get sick, quit, die, or get bogged down by other things in life. If you are relying on a single person this can stall your project. If you have a good team, people should be able to rotate in and out if needed as the project progresses.

Few projects are a one and done deal. There are usually updates, bug fixes, or other additions you will want to make overtime. Not many products can stay relevant for years without some degree up maintenance. Having a team in place helps enormously with this process.

For specifics of looking for programmers, see the section in the first post "Finding Talent". The more specific you are in your search of what you need, the better fit you will find. This is why I gave an overview of some technologies was to point you in the general direction of what you may want.

Since there is a good chance your developers will be overseas, I will re-emphasize that you much make sure that they are able to communicate efficiently in your language before you start. If you can't communicate effectively the project will be doomed from the start.

I want to say a thing or two about project bids. There are generally two ways that people will try to get projects bid. As a fixed price where a price is negotiated up front and all development will occur for that price, or hourly where your developers will charge based on the time that it takes to complete the task.

I have a strong opinion about this having both hired developers myself and in the position where people hire our company. It seems that a fixed price would be the way to go, since you know up front what to expect. The problem with fixed price projects are several.

First it puts your interests in conflict with the development team. You want to get as much work as possible for the agreed upon rate, and the development team wants to do the least amount of work possible. To get anything close to an accurate fixed price estimate, you must be very very specific and detailed about what you want. Literally everything must be priced in. Do not assume that something is obvious, if you have not explicitly asked for it, it has not been priced into the estimate.

As the project goes along, you will find that you have either overlooked things, want to add to what you initially wanted, or need to make some core changes to the project. If you have a fixed rate project you are now at an impasse because these changes may completely alter the direction of the project and there is no inherent pricing mechanism how to do this. You can renegotiate the price based on your requests, but now you have no real negotiating leverage because the project is under way. Things can get really expensive really quickly.

I would strongly recommend doing a project at what you find to be a reasonable hourly rate. This will bring your interests and your developers interests more in line, and from my experience the project will have less change of stalling or failing.

If you are opposed to doing it by hourly, and really want a fixed rate quote, I would recommend that you go through your specifications with a fine tooth comb, and make sure every feature is detailed. If something comes up later that is not in the original bid, I would just carry on with the project until completion. Then get a new bid or negotiate an hourly rate to make changes to the completed project.

Project Management

Project management will be your primary and most important task. Keeping a steady flow of what needs to be done on your project, and organizing the order that those tasks will be completed will ensure your project moves forward in a predictable manner. This is the area that I would spend time really learning. Buy some books or do research online, but you are the project manager, so become a professional in project management.

In particular I would study Agile Development, SCRUM, and Kanaban. There are other methods of development people use, but I have found elements of these three to be the easiest to implement and make an accountable dynamic system to manage and communicate with my teams.

Once you have found your developers you want to use, the first thing that I would do is ask your developer, or team, which project management method they like and what they are most familiar with. Many developers have used a number of management styles, and you will need to agree upfront how you will organize and manage the work that needs to be done.

The general method that we use most often is some variant of agile software development and scrum. We usually use a Kanaban style board to manage the progression of tasks through the development cycle. Basically the board is broken down into different columns that represent the different stages that development tasks can be in. Tasks will start out in the first (left) column (which we call Icebox), and are moved from column to column to the right, until they reach the last column.

You can manage your board using an actual whiteboard, create each column on the whiteboard, then use sticky notes with each task written on them. Of course this only works if the team is physically in the same location. There are also many different software packages that you can use to create a digital work board, which is what you will have to use if you have a remote team, one common one is called Trello although there are many others and one of my personal favorite is called Pivotal Tracker.

We group development into discrete periods, we call each of these periods a “Sprint”, and a typical sprint will run for 1-2 weeks. This is a concept taken from scrum. Before each sprint, you as the project manager will determine what tasks will be included in the next sprint. Once the sprint has begun, only the tasks in the sprint will be worked on. When all the tasks are completed the sprint is over.

We typically organize our Kanaban board in the following way to manage our sprints.
  • Icebox - this is the first group of tasks we have and contains a list of any and all features that will be developed at sometime in the future. We have not decided yet what sprint to develop these features, but the icebox keeps track of everything that we need to get done at some point in the future. I also put things in here that are just ideas, and may or may not ever be added, but it’s a convent way to keep track of those though threads.
  • Sprint Backlog - before the first (or next) sprint begins, you (or whoever) is managing the development team, will select tasks from the icebox, that need to be completed in the current sprint, and move them from icebox to the sprint backlog. When a task is in the sprint backlog, it is not assigned to anyone for development, any developer is free to grab the task when they are available to work on it. If you have only one developer this still works to keep track of what is in progress and what stage.
  • Working - when a developer is ready to begin working on a new task, they move the task from Spring Backlog to Working and assign the task to themselves. The task will stay in the working column until all acceptance criteria are met.
  • Testing - when the developer has completed the task, and all acceptance criteria are met, the developer will move the task to the testing column. Either you or someone you designate, will then test the features (see below) to ensure that things are working as expected. If it does not pass, then you will write your comments on the task, and move it back into the Sprint Backlog column.
  • Done - if a task passes all testing, then it is moved to the done column. When all tasks have been completed, and are in the done column, then the sprint is over and a new sprint will be planned and started.
Software Version Repository

At this point we need to discuss where and how you will manage the actual code produced. There are a couple key elements you are looking for. First you need a common way that anyone working on the project can access, download existing code, make changes commit their changes. You also want to be have a history of all changes, which gives you the ability to look back in time to prior code if something goes wrong in the future. You all so need a way to control who has what access to the code.

The two major types of software repositories in use today are svn (Subversion) and git which has no other name. If you are starting out, and don’t know what to use, just choose git which is widely used by a massive number or projects.

Although you do not need an online repository to store your code, I would strongly recommend it. First it will make it easier in most instances to collaborate with your team, especially if you are not in the same location. Second it gives you a solid backup system away from your primary location incase something bad were to happen (e.g. the building burned down).

The two major git repositories nearly everyone uses is GitHub (GitHub: Let’s build from here), and Bitbucket (Bitbucket | Git solution for teams using Jira). Both use git as their protocol, so you can start with one and migrate to the other if you ever wanted to. We use GitHub primarily, because they also have built in issue tracking with a Kanaban board. But bitbucket is just as good, and you may not like the project management tools on GitHub and want to use something else anyway like Trello.

A couple of very important points. This is your project, and you are the manager. I personally would create the admin account, and invite your team to the project. Give the team only the absolute minimum access and privileges that they need to do their job. For instance, usually I would set it up so that the developers can add commits and merge branches, but not create or delete the repository. One other very important thing, assuming this is meant to be a commercial project, make sure that you mark any repository you make as Private and not Public. If you leave or mark it as public you are essentially releasing all of your code into the wild for anyone to download and see.

-- Need to run for now, More to come
Extremely valuable post and an extremely nice summary of the development cycle.

Thank you for this!

What advice would you give to someone learning to program their own app? Do you find that programming on your own is a waste of time even if it would be your first SaaS?
 

WillHurtDontCare

Legendary Contributor
FASTLANE INSIDER
EPIC CONTRIBUTOR
Read Fastlane!
Read Unscripted!
Summit Attendee
Speedway Pass
User Power
Value/Post Ratio
305%
May 28, 2017
1,986
6,052
32
USA
Great thread @GIlman

I wanted to add a take on adding new features to a project that is in production. Production just means that the product is actively being used, ideally with paying customers. You want to create systems that make it seamless to push the code onto your servers so that it takes effect, referred to as continuous integration & continuous delivery (CICD). Your code changes can also impact your SaaS's existing features in ways that you wouldn't expect (bugs), so you want to have guardrails in place in terms of testing and quality assurance (QA).

CICD refers to automatically pushes code changes through a pipeline so that your code changes are reflected in higher environments. Environments crudely mean web servers that are used by different teams according to how mature your software company is. If you're a solo SaaS founder, your only environments are likely your computer where you develop the code and the production server where the code is live. But as your company grows, you will become more cautious because you don't want to break things and piss off paying customers, so you add more stops along the way between the code on your computer and the live system that paying customers use.

The first stop would be a staging server, which is very similar to the production server except that paying customers do not use it and the servers are smaller / less expensive. This step exists because you want to your code might run differently on a live server rather than your local machine. This staging server acts as a way for you to quality check your work before shipping it to your users. When you get big enough, you hire quality assurance analysts to try to break workflows as you ship new features, to make sure that everything continues to work. You can add as many of these stop gaps as you'd like - when I worked for a startup we had a development environment for the developers to check their work on live servers, then the code was merged to staging servers for quality assurance to check, then to RC servers a week or two prior to finally shipping new features to production.

You also want to include code tests to evaluate the results of user workflows. These could be as basic as confirming that you get an error if a user enters some bad data (IE only including 3 digits in a phone number), or if they try to submit a form without including all of the required information. This can really help your QA team so that they don't have to check every trivial detail each time you add new features. You can also add checks to make sure that software developers format their code properly so that your codebase remains readable, you can check to see if API keys were submitted, and others.

There are also cool tools like Launch Darkly that allow you to hide features in production. Basically, you add a boolean that determines whether a feature will be shown, and press a button in Launch Darkly's interface to enable / disable features. This can be really useful if you're launching complex features that take a while to code / test, so you can just hide the feature rather than revert the code.

You can use tools like GitHub actions, GitLab, AWS CICD for CICD. They will be used to push your new code to the servers, make migrations (updating your data models), and push new features out without you manually needing to update the servers each time.

Also, despite all of the guard rails that you set up, you will create bugs in production. Don't lose sleep over that, because that hasn't stopped Microsoft from becoming a multi trillion dollar company. What you need to do though is make sure that you write good try / error code and log errors properly so that you can quickly figure out where in your codebase the errors come from and determine how to fix them. AWS CloudWatch makes this straightforward, and you can use other tools like DataDog for deeper dives. These logs are useful beyond just simple error catching - you can use them for security purposes like monitoring if users are suddenly using your software from foreign countries (suspected hacking). You can also use this to refute chargebacks, as these logs provide proof that people were using your service before they demanded that their credit card providers take their money back from you.
 

Albert KOUADJA

Bronze Contributor
Read Fastlane!
Speedway Pass
User Power
Value/Post Ratio
84%
Mar 13, 2022
310
259
Great thread @GIlman

I wanted to add a take on adding new features to a project that is in production. Production just means that the product is actively being used, ideally with paying customers. You want to create systems that make it seamless to push the code onto your servers so that it takes effect, referred to as continuous integration & continuous delivery (CICD). Your code changes can also impact your SaaS's existing features in ways that you wouldn't expect (bugs), so you want to have guardrails in place in terms of testing and quality assurance (QA).

CICD refers to automatically pushes code changes through a pipeline so that your code changes are reflected in higher environments. Environments crudely mean web servers that are used by different teams according to how mature your software company is. If you're a solo SaaS founder, your only environments are likely your computer where you develop the code and the production server where the code is live. But as your company grows, you will become more cautious because you don't want to break things and piss off paying customers, so you add more stops along the way between the code on your computer and the live system that paying customers use.

The first stop would be a staging server, which is very similar to the production server except that paying customers do not use it and the servers are smaller / less expensive. This step exists because you want to your code might run differently on a live server rather than your local machine. This staging server acts as a way for you to quality check your work before shipping it to your users. When you get big enough, you hire quality assurance analysts to try to break workflows as you ship new features, to make sure that everything continues to work. You can add as many of these stop gaps as you'd like - when I worked for a startup we had a development environment for the developers to check their work on live servers, then the code was merged to staging servers for quality assurance to check, then to RC servers a week or two prior to finally shipping new features to production.

You also want to include code tests to evaluate the results of user workflows. These could be as basic as confirming that you get an error if a user enters some bad data (IE only including 3 digits in a phone number), or if they try to submit a form without including all of the required information. This can really help your QA team so that they don't have to check every trivial detail each time you add new features. You can also add checks to make sure that software developers format their code properly so that your codebase remains readable, you can check to see if API keys were submitted, and others.

There are also cool tools like Launch Darkly that allow you to hide features in production. Basically, you add a boolean that determines whether a feature will be shown, and press a button in Launch Darkly's interface to enable / disable features. This can be really useful if you're launching complex features that take a while to code / test, so you can just hide the feature rather than revert the code.

You can use tools like GitHub actions, GitLab, AWS CICD for CICD. They will be used to push your new code to the servers, make migrations (updating your data models), and push new features out without you manually needing to update the servers each time.

Also, despite all of the guard rails that you set up, you will create bugs in production. Don't lose sleep over that, because that hasn't stopped Microsoft from becoming a multi trillion dollar company. What you need to do though is make sure that you write good try / error code and log errors properly so that you can quickly figure out where in your codebase the errors come from and determine how to fix them. AWS CloudWatch makes this straightforward, and you can use other tools like DataDog for deeper dives. These logs are useful beyond just simple error catching - you can use them for security purposes like monitoring if users are suddenly using your software from foreign countries (suspected hacking). You can also use this to refute chargebacks, as these logs provide proof that people were using your service before they demanded that their credit card providers take their money back from you.
Thank you very much for all these details.
 
Dislike ads? Remove them and support the forum: Subscribe to Fastlane Insiders.

Womat

New Contributor
Read Fastlane!
Read Unscripted!
User Power
Value/Post Ratio
67%
Apr 24, 2019
15
10
Absolutely Amazing! Thanks for sharing, @GIlman! Will keep an eye for your updates.
 

Post New Topic

Please SEARCH before posting.
Please select the BEST category.

Post new topic

Guest post submissions offered HERE.

Latest Posts

New Topics

Fastlane Insiders

View the forum AD FREE.
Private, unindexed content
Detailed process/execution threads
Ideas needing execution, more!

Join Fastlane Insiders.

Top