Enterprise Computing - Development Flashcards

(66 cards)

1
Q

What is a monorepo?

A

A single giant repository for all microservices; any commit triggers the production of multiple microservices.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is a multirepo?

A

One repository per service; any commit triggers the production of a single service.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What is feature-based development?

A

Developers create long-lived feature branches based on project needs, which are merged into the main branch after weeks or months.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What is trunk-based development?

A

Developers primarily work on a single main branch, using short-lived branches merged back in minutes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Why run commit tests locally?

A

Because others may have already committed changes causing the commit tests to now fail.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Why wait for commit tests?

A

Because it is important to have the devs present and focused, ready to fix failures immediately with a commit or revert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Why avoid commits on a broken build?

A

It complicates debugging and leads to a culture where broken builds are tolerated.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Why should you never go home on a broken build?

A

Because devs soon forget the essential of changes made, and will have to remember them. Commit at least an hour before end of the work day, or first thing in the morning.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Why should you be prepared to revert?

A

Because it is important to get everything working quickly. If it cannot be fixed quickly, revert.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Why should you avoid commenting out tests?

A

Often, the start of a slippery slope to low quality. Either fix the code, modify the test, or delete the test.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What does taking responsibility for breakages involve?

A

Even if your tests pass, you’re responsible if others break; no one should have exclusive knowledge of parts of the codebase.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What three benefits does a version control system provide, according to Farley??

A
  • A step back to safety.
  • Share changes easily.
  • Store changes somewhere safe.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What are the three models of version control described by Farley?

A

Mono-Repo: Everything in one big repository.
Multi-Repo: Independent things in separate repositories.
Multi-Repo’: Interdependent things in separate repositories.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

According to Farley, why does a mono-repo have the three benefits that a version control system provides?

A

Because it is possible to step back safely by stepping back all components, store changes easily by changing any component, and store changes somewhere safe by saving all components/dependencies together.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

According to Farley, why might a multi-repo not support version control benefits?

A

Because inter-component communication and version compatibility aren’t stored in the system.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What are two solutions to the multi-repo problem, according to Farley?

A

Build independently deployable components that have fixed, well-understood APIs, and have flexible, backwards/forwards compatible API’s.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Why do the solutions for the multi-repo problem support version control benefits, according to Farley?

A

They allow individual rollback (step back), coordinated updates (share changes), and separate storage (safe storage).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

According to Farley, why is multi-repo’ considered the worst of all worlds?

A

Because components cannot be developed independently or deployed independently.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

What is Continuous Integration (CI)?

A

CI is the practice of quickly integrating newly developed code with the rest of the application code, usually automated and producing a build artifact.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

What are the four stages of traditional product delivery?

A

Alpha release, Beta release, Release Candidate, and Release.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

What are the three environments used in modern feature delivery?

A

Development environment, Staging environment, Production environment.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

What happens in the development environment?

A

A single team’s work is integrated and updated throughout a sprint.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

What happens in the staging environment?

A

Multiple teams’ work is combined and updated at the end of a sprint.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

What happens in the production environment?

A

The work of several teams is released to customers when the business decides it is right.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
What is shift left testing?
A practice of moving testing earlier in development to catch bugs sooner and improve quality.
26
What is the test pyramid?
The test pyramid describes tests carried out in development: Unit tests; Service tests; End-to-end tests.
27
What are unit tests and where are they run?
Unit tests verify that individual functions work correctly and are run in the development environment; there may be thousands executed in seconds by testing frameworks.
28
What are service tests and where are they run?
Service tests ensure services function properly and are run in the staging environment; there may be hundreds executed in a few minutes.
29
What are end-to-end tests and where are they run?
End-to-end tests check that the entire application behaves correctly, often using GUI interaction; they are run in the staging environment and take several minutes.
30
What is the test snow cone?
An anti-pattern with more end-to-end than service or unit tests, leading to slow feedback and inefficiency.
31
What is a brittle test?
A test that fails because another service fails.
32
What is a flaky test?
A test that intermittently fails, often due to timeouts or race conditions.
33
What is the normalization of deviance?
Gradually accepting broken behavior (e.g. flaky tests) as normal, undermining code quality.
34
What are build light indicators?
Tools (e.g. lava lamps, monitor screens) showing pipeline status - green for success, red for failure.
35
What is integration hell, according to Farley?
An anti-pattern where software components are integrated too late in the development process.
36
According to Farley, what is the point of running commit tests locally?
To avoid blocking the shared deployment pipeline with avoidable test failures.
37
According to Farley, what is the point of waiting for results?
So that those who make changes are there ready to fix any problems immediately.
38
According to Farley, what is the point of fixing or reverting failures within 10 minutes?
To prevent blocking useful progress by other developers
39
According to Farley, what is the point of reverting a teammate’s changes if they break the rules?
To avoid blocking progress and maintain a clean pipeline.
40
According to Farley, what is the point of noticing a failure before the committer does being called a build sin?
It pushes developers to pay closer attention to their commits and responsibilities.
41
According to Farley, what is the point of moving on to your next task once the commit passes?
Because rapid, automated testing enables developers to work on new, useful tasks.
42
According to Farley, what is the point of making the committer responsible for any test failure?
To ensure someone owns and fixes the problem quickly.
43
According to Farley, what is the point of it being the responsibility of everyone to agree who will fix a failure?
So that someone takes responsibility and the failure is addressed promptly.
44
According to Farley, what is the point of monitoring the progress of your change?
To catch and reject non-releasable software as early as possible.
45
According to Farley, what is the point of addressing any pipeline failure immediately?
To keep the CI pipeline clear and functional for others, regardless of the cost.
46
What is continuous delivery (CD)?
CD automatically moves software from a source code repository to the staging environment and, at the press of a button, to production.
47
What is continuous deployment?
Continuous Deployment automatically moves software from the repository directly to production without needing a manual release
48
Why Is Creating a Repeatable Process Important in Continuous Delivery?
Because repeatable processes become routine and reliable. A well-rehearsed, standardised process reduces uncertainty, minimises errors, and ensures consistent delivery outcomes across deployments.
49
Why Should Almost Everything Be Automated in CD?
Automation guarantees that all steps in the delivery pipeline are executed correctly and consistently. It eliminates human error, accelerates delivery, and ensures reproducibility, making software releases safer and faster.
50
Why Should Everything Be Under Version Control in Continuous Delivery?
Versioning code, scripts, documents, and configurations ensures traceability and reproducibility. Any team member can recreate any version of the application reliably, making debugging, rollback, and auditing much easier.
51
What Does "If It Hurts, Do It More Frequently" Mean in Software Delivery?
It suggests that difficult tasks like builds, tests, and releases should be performed often to build fluency and resilience. Regular practice exposes weaknesses early, allowing for quicker fixes and reducing long-term pain.
52
What is the principle of 'build quality in' with continous delivery?
Quality must be proactively integrated throughout development, not added later. Bugs should be fixed immediately, as early fixes are cheaper and easier. This helps teams catch problems when they're freshest and most understandable.
53
What Is Meant by "Done Means Released"?
A feature isn’t truly “done” until it's running in a production-like environment. Using partial progress indicators (e.g. "80% done") leads to miscommunication and delays. Real completion means the feature is deployed and usable.
53
Why Should "Everyone Be Responsible" for Delivery?
Delivery success is a shared team responsibility. When responsibility is distributed, collaboration improves, and blame games are avoided. Everyone is accountable for quality and deployment.
54
Why Is Continuous Improvement a Core Principle in CD?
Teams should constantly evaluate what’s working and what isn’t. Feedback loops help them adapt, avoid repeating mistakes, and improve local and global processes. Without it, inefficiencies and poor practices persist.
55
What is A/B testing?
A method where a portion of traffic is routed to a new interface to test customer response.
56
What is canary testing?
A method where a small percentage of traffic is routed to a new version that may have issues.
57
What is blue/green testing?
Swapping the live (blue) environment with a staging (green) environment and reversing if problems occur.
58
According to Humble, how can we achieve continuous delivery?
By implementing fast, automated feedback on the production readiness of applications every time there is a change to code, infrastructure, or configuration.
59
According to Humble, what condition should software always be in?
Software should always be in a production-ready or releasable state.
60
According to Humble, when should testing be done?
Testing should be performed continuously throughout development, not just after the software is complete.
61
According to Humble, how does continuous delivery help avoid the biggest source of waste in software development?
It makes it much easier to release new, experimental features into production, speeding up feedback and reducing waste.
62
According to Humble, who is responsible for quality?
Everyone on the team shares responsibility for maintaining quality.
63
According to Humble, what is more important than delivering functionality?
Keeping the system in a working, healthy state is more important than just shipping new features.
64
According to Humble, how does continuous delivery reduce the risk of release?
Because releasing small, thoroughly tested changes that can be quickly reverted if needed is inherently less risky.
65