490

100 flashcardsby mariya
Study these flashcardsFree · spaced repetition · iPhone, Android, Mac & web

All cards

1
What is the main focus of this chapter?
Collaboration and ownership as the foundation of successful software engineering, beyond technical tools.
2
Why do most software projects fail?
Because of failures in collaboration and ownership rather than purely technical issues.
3
What is the difference between cooperation and collaboration?
Cooperation divides tasks among individuals, while collaboration shares responsibility for the overall outcome.
4
Why can a cooperative team still deliver a broken system?
Because each person can finish their assigned task while the overall system fails due to lack of shared responsibility.
5
What do professional teams prioritize over finishing individual tickets?
Whether the system works, is maintainable, and whether problems are surfaced early.
6
What does ownership mean in software engineering?
Responsibility for outcomes.
7
What does ownership not mean?
Control, blame, or working in isolation.
8
What responsibilities come with owning a piece of code?
Correctness, integration, production behavior, long-term consequences, and handling bugs or regressions.
9
Does ownership end after initial implementation?
No, ownership persists throughout the lifecycle of the code.
10
What is diffusion of responsibility?
When unclear ownership causes everyone to assume someone else is responsible, leading to inaction.
11
Is diffusion of responsibility a character flaw?
No, it is a predictable result of unclear ownership.
12
What are collaboration artifacts?
Commit history, pull requests, reviews, issue discussions, and design notes.
13
Why is Git more than just a version control tool?
It acts as an accountability mechanism that records who changed what, when, and why.
14
What do pull requests represent beyond merging code?
Conversations, decision records, and learning opportunities.
15
What does clean Git history and thoughtful reviews usually indicate?
A well-functioning team.
16
What does silence in a repository often signal?
Accumulating risk and lack of visible collaboration.
17
What is the primary purpose of code reviews?
To improve code quality, spread knowledge, surface assumptions, and share ownership.
18
What happens when reviews are rushed or avoided?
Risk is shifted to the future version of the team.
19
Is conflict harmful to collaboration?
No, disagreement is normal and necessary in software engineering.
20
Why is avoiding conflict a mistake?
Because it hides unresolved differences instead of addressing them.
21
What does disagree and commit mean?
Speak up during decisions, then support the final decision once it is made.
22
What behavior reflects a failure of ownership in decision-making?
Remaining silent during discussion and complaining afterward.
23
Does ownership end when code is written?
No, ownership spans testing, documentation, and maintenance.
24
Why is testing considered an ownership activity?
Because untested features breaking reflects a failure of responsibility.
25
Why is documentation an ownership activity?
Because unclear components indicate failure to own clarity.
26
How do high-performing teams respond to failure?
They ask who owns the issue now and what needs to happen next, not who is to blame.
27
Does AI remove responsibility from engineers?
No, engineers still own the outcomes of AI-generated code.
28
Why can AI increase the importance of ownership?
Because AI can generate code but cannot take responsibility for its consequences.
29
What expectations remain constant despite changing tools?
Engineers are responsible for reviews, decisions, and outcomes.
30
Why does this course emphasize collaboration and ownership early?
To build professional habits before technical complexity becomes an excuse.
31
What visible behaviors will the course require from students?
Working in teams, making decisions with incomplete information, and leaving collaboration artifacts.
32
What is the core thesis of the chapter?
If you misunderstand collaboration, no amount of tooling will save you.
33
Why do most software projects fail?
Because people work from different understandings of what the software is supposed to do.
34
What is the purpose of requirements?
To translate vague ideas into precise, executable intent.
35
Why are ideas considered cheap compared to code?
Ideas can be revised or abandoned easily, while code is precise, rigid, and expensive to change once embedded.
36
What role do requirements play between ideas and code?
They act as a translation layer that reduces risk and enables smooth execution.
37
How should the software development lifecycle be understood in practice?
As a loop where intent leads to execution, execution produces feedback, and feedback corrects gaps in intent.
38
Why is early feedback important in the SDLC?
Because gaps exposed earlier are cheaper to fix than those discovered late.
39
What is a common mistake about requirements?
Treating them as static documentation written once and then ignored.
40
What do requirements actually express?
Expected behavior, acceptable outcomes, and responsibility.
41
What does it mean that requirements encode executable intent?
They are precise enough to guide action, be validated, be tested, and even be acted on by AI.
42
What happens when requirements are vague?
They produce divergent outcomes and propagate ambiguity downstream.
43
Why can two developers build different things from the same vague requirement?
Because ambiguity forces them to invent their own assumptions.
44
What is an example of an ambiguous requirement?
A statement like a page should load quickly without defining measurable constraints.
45
Why is ambiguity especially problematic with AI systems?
Because AI does not reliably ask clarifying questions and proceeds confidently using assumptions.
46
What is meant by ambiguity acting as a failure multiplier?
It scales incorrect assumptions rapidly and convincingly.
47
Why must requirements be structured rather than abstract?
To expose gaps instead of hiding them.
48
What is the role of the backlog?
To structure intent into inspectable, implementable, and verifiable units.
49
Why do smaller backlog items surface assumptions earlier?
Because they reduce hidden uncertainty and make gaps visible.
50
How does Jira function in this course?
As a formal language for expressing intent through epics, stories, tasks, and acceptance criteria.
51
What do epics describe?
Goals.
52
What do stories describe?
Behavior.
53
What do tasks describe?
Implementation steps.
54
What do acceptance criteria define?
The boundaries of what must be true for work to be considered complete.
55
Why is backlog quality a leading indicator of project health?
Because well-formed stories enable parallel work and reduce costly ambiguity.
56
What happens without acceptance criteria?
Completion becomes subjective and interpretations of done vary.
57
What qualities define good acceptance criteria?
Observable, testable, unambiguous, and focused on outcomes.
58
What qualities define poor acceptance criteria?
Subjective, implied, or open to interpretation.
59
Why are requirements compared to contracts?
Because they specify inputs, outputs, and constraints like an API contract.
60
What happens when a requirement contract is vague?
Trust erodes and independent work becomes risky.
61
How does precision enable scale?
It allows independent teams or systems to work reliably without constant clarification.
62
How do AI systems treat requirements?
As truth, without reliably inferring missing intent.
63
What shapes AI output more than clever prompting?
Clear constraints and well-defined acceptance criteria.
64
What is the purpose of writing vague and precise versions of the same requirement in the lab?
To observe how ambiguity changes AI-generated outcomes.
65
What should students pay attention to when comparing AI outputs?
Not just correctness, but the confidence of incorrect results.
66
What habit is this chapter trying to build?
Making intent explicit.
67
What is the relationship between clarity and execution?
Clear requirements reduce ambiguity, which leads to predictable execution.
68
Why are requirements not considered busywork?
Because they provide control over outcomes.
69
What confusion do new developers often face about architecture?
They understand architecture matters but do not know what shape their system should take when starting.
70
What is the key practical question architecture must answer?
What shape should this system take when I start building it?
71
How is architecture defined in this course?
The choice of a system shape that makes certain behaviors easy, others hard, and some impossible.
72
What is architecture not?
It is not the code, the framework, or a diagram drawn after the fact.
73
What does architecture consist of?
Structural decisions that constrain what the system can become over time.
74
Why does architecture continue to matter after original designers leave?
Because later developers experience its constraints as reality, not design choices.
75
Why is abstraction alone insufficient for learning architecture?
Because vocabulary without concrete examples does not create practical capability.
76
What is a modular monolith?
A single deployable system with internal modules and intentional boundaries.
77
Why do teams choose a modular monolith?
To move quickly, minimize operational complexity, and maintain consistency in evolving domains.
78
What enforces boundaries in a modular monolith?
Mostly social contracts, conventions, folder structure, and discipline.
79
What is the common failure mode of a modular monolith?
Developers bypass boundaries “just once,” leading to gradual structural erosion.
80
What is layered architecture?
A system organized into horizontal layers like UI, application services, domain logic, and data access with one-way dependencies.
81
What is the key contract in layered architecture?
Dependencies must flow in one direction, from higher layers to lower layers.
82
What is a common failure mode of layered architecture?
Everything becomes thin services, and domain logic loses substance.
83
What is hexagonal architecture?
A design where the domain sits at the center and infrastructure adapts to interfaces defined by the domain.
84
What is the key contract in hexagonal architecture?
The domain does not depend on infrastructure; infrastructure depends on the domain.
85
What is the main benefit of hexagonal architecture?
Protecting slow-changing core logic from fast-changing infrastructure.
86
What is the main risk of hexagonal architecture?
Overengineering with unnecessary abstractions.
87
What defines service-oriented or microservices architecture?
Multiple independently deployed services communicating over the network.
88
What are the key contracts in microservices architecture?
API schemas, versioning, backward compatibility, and failure semantics.
89
What is a distributed monolith?
A system with multiple services that remain tightly coupled and require coordinated changes.
90
What characterizes event-driven architecture?
Components communicate by emitting events rather than making direct requests.
91
What are critical contracts in event-driven systems?
Stable event schemas, clear delivery guarantees, idempotent consumers, and explicit ordering assumptions.
92
What is a common failure mode of event-driven architecture?
Loss of clarity and difficult debugging due to opaque causality.
93
What do all architectural shapes have in common?
They are defined by contracts governing dependencies, data flow, failures, and change boundaries.
94
What does choosing an architecture really mean?
Choosing which contracts you want to make unavoidable.
95
Why are architectural decisions difficult?
Because they are made with the least information and last the longest.
96
What makes architecture good under uncertainty?
Making assumptions explicit and survivable rather than assuming certainty.
97
What is expected when choosing architecture in the course project?
To articulate the system shape, its contracts, and the tradeoffs intentionally accepted.
98
Why is architecture without intent dangerous?
Because it becomes accidental structure rather than deliberate design.
99
What is the core idea about architecture and scale?
Architecture is not about designing for hypothetical scale but for inevitable change.
100
How should system shape relate to reality?
Its contracts should match the real constraints and changes the system will face.
Study all 100 cards for free