1/90
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No study sessions yet.
Software Crisis
Dijkstra's statement from 1972
Software Engineering
the process of developing, testing, and maintaining software applications and systems.
Design Patterns
reusable, generalized solutions to commonly occurring problems in software design
cruft
outdated, unnecessary, or poorly written code or leftover files in a software system
push
(In Git) transfer files from the master to the origin.
predicate
a function that takes one or more arguments and returns a Boolean value
lambda
a function definition not bound to a name.
pull
(in Git) transfer files from the origin to your local computer - to get updates.
commit
(in Git) save changes to the local copy of the repo.
Precision
the level of detail in an estimate.
clone
(in Git) transfer files from the origin to your local computer for the first time.
pull request
equesting the maintainer of a repository to git pull in some changes.
Accuracy
closeness of an estimate to the actual value.
Chesterton’s Fence
principle that reminds us to look before we leap. To understand before we act.
Program Product
is software that requires much more testing, maintenance, and documnetation. People will really use it.
Woes of The Craft
Reliance on others
Useless by the time you are done
Debugging is tedious
Must be perfect
Often told what you have to work on
Brooks’ Law
"Adding manpower to a late software project makes it later."
optimistic
assuming everything will go well and underestimating the time needed for testing and debugging.
Program maintenance
changes made to a program or product after it has been delivered to the customer.
Conceptual integrity
he consistency and clarity of a system's design, which is often easier to achieve in later versions after initial learning.
Communication
What caused the tower of babel to fail
senior architect
should be paired with a second system project manager
second system
An architect’s most dangerous system to build because they are tempted to include everything left out of the previous system.
status review
one of the meeting types that supervisors should clarify meetings as
hustle
Something programming teams need, “energy to go above and beyond“
PERT
Laying out the network, identifying the dependencies, and estimating the legs all force a great deal of very specific planning very early in a project.
conform
Software often has to _______________ to arbitrary external interfaces, such as human institutions, laws, or existing systems, rather than allowing the engineer to define the interfaces based on unifying principles.
accidental
High-level languages, Time-Sharing, and Unified Programming Environments are all past breakthroughs that solved _________________ difficulties.
order of magnitude
there is no single development in technology or management technique which, by itself, promises even one ______________ ____________ _____________ improvement in productivity.
change
Software is constantly subjected to and must respond to pressures for _______________ from its environment (users, hardware, regulations, etc.)
essential
All software construction involves two types of tasks, the _______________ and the accidental.
optimization
improving performance or resource usage without changing functionality.
construction
the best metaphor to help conceptualize software development?
Scalability
the ability of a system to grow to meet future demands.
Incremental Development
building software piece by piece
Latewave
provide numerous programming language choices, comprehensive error checking for code written in those languages, powerful debugging tools, and automatic, reliable performance optimization.
Structured programming
Writing programs with clear, hierarchical control structures.
Information Hiding
concealing design decisions to limit change impact.
Sequential Cohesion
the output of one task is the input of the next.
Temporal Cohesion
Tasks grouped by timing requirements
Error Handling
managing problems that arise during execution.
Exceptions
a specific means by which code can pass along errors or exceptional events to the code that called it.
Completeness
Addressing all required functionality.
Accuracy
The degree to which a system, as built, is free from error, especially with respect to quantitative outputs.
Robustness
The ability of software to handle errors gracefully.
Efficiency
The extent to which software minimizes resource use.
Flexibility
The extent to which you can modify a system for uses or environments other than those for which it was specifically designed.
Regression Test
the execution and verification of previously executed test cases with software that has previously passed those test cases.
Component tests
the execution and verification of a class, package or other element involving multiple programmers or other teams.
white-box
When the tester can see the inner workings of the code being tested.
unit tests
Executing an individual component or function and verifying its validity.
breaks
A successful test does this to the software
Integration testing
the combined execution of two or more classes, packages, or subsystems to verify their validity.
binary
a search technique that can be used to systematically remove parts of the program and see if the errors still occur.
distance
The ease with which two items can be differentiated.
20
Studies of experienced programmers have found roughly a _____-to-1 difference in the time it takes experienced programmers to find the same set of defects found by inexperienced programmers.
set
A psychological _________ is seeing what you expect to see.
Duplicate
______________ code sets you up to make parallel modifications; whenever you make changes in one place, you have to make parallel changes in another place.
modularity
The number of well-defined, well-named routines that do one thing and do it well.
Design ahead
“___________ __________” code is code that programmers have written because they believe that it may be used at some point in the future.
public
belonging to the team rather than private property.
measured
People tend to focus on what gets ____________ and ignore what isn’t.
Configuration management
the practice of identifying project artifacts and handling changes systematically so that a system can maintain its integrity over time. Another name for it is “change control.”
Integration
combining separate software components into a single system.
logical
indentation can be used to show the _____ structure of the code.
Consistent
____________________ structuring of code is more important than the details of how it is structured.
summary comment
distills a few lines of code into one or two sentences.
higher
Comments give you a ___________ level of abstraction than the code itself.
intent comments
operate more at the level of the problem than at the level of the solution.
internal
___________ documentation is also the kind of documentation most likely to remain correct as the code is modified.
The Three Ways
The foundational principles of DevOps: Flow, Feedback, and Continuous Learning.
Single Point of Failure
A part of the system whose failure can bring down the entire service.
Chief Information Officer
Senior executive responsible for IT strategy and systems.
Continuous Integration
The practice of frequently merging code into a shared repository.
Theory of Constraints
A management philosophy that focuses on identifying and managing bottlenecks.
Kanban Board
A visual tool to manage workflow and limit work in progress.
Product Management
The role responsible for defining the features and requirements of a product, acting as the "CEO" of the product team.
Scrum
An iterative agile development methodology where work is divided into "sprints" (2–4 week cycles) to build software incrementally.
deterministic
A characteristic of LLMs, meaning that if you ask the same question multiple times, you might not get the exact same answer each time.
Generative
______AI is artificial intelligence that is capable of creating new content.
Generic Attribute Profile (GATT)
a profile in BLE that defines how two Bluetooth Low Energy devices transfer data back and forth using Services and Characteristics.
Peripheral
he device that a central (client) connects to, such as a smartwatch connecting to a phone.
Pull Request
when a developer proposes changes to a codebase, which are reviewed and discussed before being merged into the main project.
Linting
automatically checking source code for programmatic and stylistic errors to enforce coding standards.
Behavioral Interview
An interview format that uses questions about past experiences ("Tell me about a time when...")
Phone Screen
An early-stage, often informal interview (usually over the phone) designed to quickly assess whether a candidate should move forward in the interview process. It focuses on surface-level fit and potential.
Product Owner
The voice of the business on a Scrum team.
entity relationship
Use ___________ ______________ diagrams when designing a new database schema, planning database migrations, or documenting existing database structures.
Terraform
An open-source Infrastructure as Code (IaC) tool that lets you define, provision, and manage cloud infrastructure using configuration files.
Go
Terraform code is written in the _________ language.
providers
(in Terraform) define resources, data types, etc. and how to deploy them.