Week 5 Flashcards
(39 cards)
What is the tradition method of product delivery?
Traditional product delivery (over years/months) uses 4 release:
Alpha
Beta
Release candidate
Release
What is the alpha release?
First release for sophisticated users, contains bugs but is for gathering feedback. Release for limited users.
What is the beta release?
Follows the alpha release, more stable but still requires feedback and contains some bugs.
What is a release candidate?
Comes after the beta release, it’s what the company plans to release, and is a final chance to make changes, if no bugs are found this is what will be released. Should be fairly stable. No new features.
When software was distributed on CDs why was it important that it was thoroughly tested before release?
Expensive and difficult to fix bugs, if you have a warehouse of 50000 CDs to update them all. Once the software is distributed to users it is far harder to update and fix their system when it is on a CD compared to digital download.
Issues with traditional software delivery
Adding features is hard the further down the cycle you go,
Fixing bugs is hard the further down the cycle you go
Very slow
Stressful for developers, working to time frames
What is Modern Feature Delivery?
Works within weeks rather than months
MVP moves between three environments:
Development
Staging
Production
What is the development environment?
The development environment you share with your scrum team, where the features are built, adds changes, does testing. At the end of the sprints, they are sent to staging.
What is the staging environment?
Staging is where the feature is set up in a mirror of the production environment.
Looks like production, we can use it to test on various platforms like Linux, etc. Tease out any bugs by moving environments, before we deploy it to customers using different OS. Perform more testing.
What is production?
Production is where the program runs and is operated by users in the real-world. If bugs are found here they are by real users affecting their real work. Failures are public.
Why is better to get your product to production quicker?
Get feedback faster, roll out updates quicker, stay on top of competitors.
What are the principles of software delivery?
- create a repeatable process
- automate almost everything
- version control for everything
- if it hurts, do it more frequently
- build quality in
- done means released
- everyone is responsible
- continuous improvement
What is ‘create a repeatable process?’
Releasing software should be easy, because it has been done thousands of times before. (minimize mistakes, faster, less stress)
What is ‘automate almost everything?’
The build should be push button operation. Scripts don’t make mistakes. (humans make mistakes)
What is ‘version control for everything?’
Everything you need to build, deploy, test and release your software should be kept in versioned storage. (helps you collaborate with team and back up code files)
What is ‘if it hurts, do it more frequently?’
If a build is painful, do it on every check-in. (people get used to it, less work to do in one go, better to merge code monthly than every 4 years)
What is ‘build quality in?’
Defects are fixed as soon as they are found. TEST EARLY AND AUTOMATICALLY. (fix it earlier up the delivery chain, cheaper and easier to fix)
What is ‘done means released?’
A feature is only considered ‘done’ once it is in production. You don’t know what problems you will encounter or how long they will take to fix. By production these should be done.
What is ‘everyone is responsible?’
At a glance, the status of the build is visible to everyone. Having multiple teams such as test and dev creates an adversarial relationship. (you can’t pass your problems to another team).
What is ‘continuous improvement?’
Teams should reflect on what has gone well, what has gone badly, and discuss how to improve. Don’t witch hunt people who make errors, we learn the lesson as an organization. For example, testing should have picked up the error. People will become scared to innovate otherwise.
What is the iterative/incremental model?
Exploration, development and operation at the same time.
Iterative because the feed-forward between activities is augmented with the feedback between them
Incremental because the interleaves activities regularly deliver small addition pieces of functionality.
What is shift left testing?
Beginning testing as early as practical in the lifecycle. Traditionally in a waterfall cycle it happens at the end which can happen at the end of a number of years, really long time to fix and expensive. Stops us overrunning.
What is the test pyramid?
Describes tests carried out in development
Unit
Service
End to end
What are unit tests?
Before code is accepted into dev, unit tests are ran, there may be thousands of unit tests, performed in seconds using testing frameworks (such as JUnit)