Stages in Software Development
Tags: devrel, computerscience, programming, testing
Published: 2022-08-27 19:58:00


**Alpha** and **Beta** versions are common in software, you may also have heard "**Friends & Family**", specially in business-related development environments or **MVP** if you landed a project on an initial stage. Let's deep a bit into this interconnected topics.

## Friends & Family 
have two connotations:
#### Monies
usually in the form a loan, that a business owner gets from either family members or friends in order to help finance their startup or growing business. Investors.
#### People
In software testing means a group of people, be in-house workers of the client or even investors that will test a software product during the development process after each deploy to UAT or User Acceptance Testing environment.


## Alpha version
of software means that it's not thoroughly tested by the developer before it is released to customers. Alpha software may contain serious errors, and any resulting instability could cause crashes or data loss. Alpha software may not contain all of the features that are planned for the final version.


## Beta version
of software is one that has completed intensive internal testing, as well as often being tested by a carefully selected range of external testers in "Live" situations around the world, and we feel it is now as "bug" free as possible and is therefore ready to be safely used by a broader set of users.

<hr />

Not every software is suitable for all testing stages mentioned above. Friends and family is quite common in every software but on the rest, you should analyse the market and see if it's suitable for an alpha or beta version. There's also a sub-category here, both alpha and beta can be open or closed.

#### Closed
Only a limited group of people will have access to the software in this testing version. Think on supporters in kickstarter (e.g. 7 Days to Die) or any other platform, people that made a reservation (e.g. Call of Duty) on an early stage or a limited amount of subscribers (e.g. DALL-E 2 and Github Copilot).

#### Open
Open here means "public", anyone can join this version -yet users can be filtered by stablishing a set of prerequisites- usually through a registering/subscribing process (e.g. Android Beta program and Windows Insiders program).

<hr />

### Stages in software development:

The first version of a product is necessarily a **PoC** (Proof of Concept), which is a base to test the product in a late analysis phase.

The second one would be an Alpha version, in which most features are joining, the functional testing is not 100% compliant and most work on stabilization, integration and bug fixing still needs to be done.

The third one is then a Beta version, in which most bugs have been solved, the software is stable and just needs a bit of polishing.

At this point we reach the MVP (Minimum Viable Product) which is -usually- the V1 of the product. 
That means that we reached the minimum set of features that this software needs to have a meaning and a position in the market on a robust and stable version.

From now on it's a development iteration through versions to add extra features, polishing, bug fixing, optimizations etc.

Please note that the MVP is not necessarily a software that is about to be launched to the market, market changes and iterations to the market analysis can lead us to add more features or expand our understanding of what our MVP should be.

### Version numbers

Versions in software have -usually- 3 numbers separated by dots.
e.g. `4.12.9`
You can also see beta or alpha (pre-releases) in the version, and it can be in one of two ways:
`a-0.1.29` or `0.1.29-alpha`
`b-0.19.33 or 0.19.33-beta`

Those numbers are not arbitrary, there's some sort of a standard: `Major.Minor.Patch` 

The first number means a Major upgrade, the second one a Minor upgrade and the last one is a counter on how many Patch upgrades we did.

### Major, Minor and Patch

**Major Version** means a release of a software product that contains significant changes to features or functionality or underlying technology.

The **minor version** number is incremented when developers add new features to the product that are still compatible with former versions in the same major category.

A software **patch** or fix is a quick-repair job for a piece of programming designed to resolve functionality issues, improve security or add new features.

<hr />

If you have any suggestion or question please comment down below 

<img src="https://c.tenor.com/c4KyoQ7BQPAAAAAC/comment-down-below-dane-manalad.gif" />