This repository contains a curated list of phrases, proverbs, and sayings that are particularly useful in the practice of engineering. Each term is accompanied by a brief description to help you understand its specific meaning and relevance.
A distraction or misleading clue that diverts attention away from the real issue.
A statement or conclusion that does not logically follow from the previous argument or statement.
The principle that reforms should not be made until the reasoning behind the existing state of affairs is understood.
The value of a telecommunications network is proportional to the square of the number of connected users of the system.
Adding unnecessary features to a project, increasing complexity and cost without proportional benefits.
A complex system that works is invariably found to have evolved from a simple system that worked.
A software bug that seems to disappear or change behavior when one attempts to study it.
The implied cost of additional rework caused by choosing an easier solution now instead of using a better approach that would take longer.
The adage that anything that can go wrong will go wrong, emphasizing the importance of risk management.
The sequence of stages determining the minimum time needed to complete a project, crucial for project management.
Engaging in seemingly pointless activities that are actually necessary to solve a larger problem.
Attempting to solve a problem by taking on too much at once, rather than breaking it down into manageable parts.
The practice of using one's own products or services to test and validate them before releasing to customers.
The tendency to spend discussion time on trivial details while important matters are inadequately attended to.
A part of a system that, if it fails, will stop the entire system from working, highlighting the need for redundancy.
An unpredictable or unforeseen event, typically one with extreme consequences, often used in risk assessment.
A product with the minimum set of features required to gather validated learning about customers with the least effort.
An obvious problem or risk that no one wants to discuss, often due to discomfort or taboo.
A method of problem solving used to identify the underlying reasons for faults or problems.
Refers to a product or technology so new that it has a high risk of being unreliable and may cause problems.
A process conducted after project completion to analyze what went wrong and what can be improved for future projects.
The ritual inclusion of code or program structures that serve no real purpose, based on blind faith that it's necessary.
A dilemma or difficult circumstance from which there is no escape because of mutually conflicting conditions.
"Keep It Simple, Stupid" - A design principle that states simplicity should be a key goal, avoiding unnecessary complexity.
A principle stating that a component of a system should behave in a way that most users will find least surprising.
A model of the constraints of project management: scope, time, and cost, where changes to one constraint affect the others.
"If all you have is a hammer, everything looks like a nail." - The tendency to rely on a familiar tool or approach.
The idea that visible signs of disorder and misbehavior in an environment encourage further disorder and misbehavior.
When a measure becomes a target, it ceases to be a reliable measure ("story points", anyone?).
The adage that "work expands to fill the time available for its completion," often used to highlight inefficiencies in time management.
The adage that adding more people to a late software project delays it even further.
The principle that organizations design systems that mirror their own communication structure.
A cognitive bias where people with limited knowledge in a domain overestimate their competence in that area.
The practice of explaining code line by line to an inanimate object to find errors.
The problem-solving principle that the simplest explanation tends to be the correct one.
Optimizing a system or code before it's necessary, often increasing complexity without significant benefits.
A point of congestion in a system that occurs when workloads arrive too quickly for the production process to handle.
The concept that people in a hierarchy tend to rise to their level of incompetence.
The tendency to continue an endeavor due to past investments, despite new evidence suggesting it's no longer viable.
It always takes longer than you expect, even when you take into account Hofstadter's Law.
A design principle for separating a program into distinct sections, each addressing a separate concern.
"Don't Repeat Yourself" - A principle aimed at reducing repetition of software patterns.
The ongoing expansion or addition of new features in a product, especially in software development.
The state of over-analyzing a situation so that a decision or action is never taken.
The observation that roughly 80% of consequences come from 20% of causes.
The minimum number of team members that have to disappear before a project stalls due to lack of knowledge.
The idea that sometimes a simpler, less perfect solution is preferable to a more complex, theoretically better one.
The logical error of focusing on things that survived a selection process, overlooking those that did not.
Be conservative in what you do, be liberal in what you accept from others.
A cryptographic system should be secure even if everything about the system, except the key, is public knowledge.
Getting lost in the details of a problem while losing sight of the main objective.
The easiest or most obvious tasks or solutions that can be tackled first.
Unnecessarily re-engineering a solution that already exists.
Changing the criteria of a process or decision when the original goals are met.
Discarding something valuable along with something undesirable.
Skipping important steps to save time or effort, often leading to problems later.
Becoming so focused on details that one loses sight of the overall situation.
Postponing dealing with a problem, hoping it will resolve itself or become someone else's responsibility.
Starting a process that will cause many unforeseen problems.
Failing due to an accumulation of small issues rather than one major problem.
A situation where it's unclear which of two interrelated events should happen first.
A fundamental weakness or vulnerability in an otherwise strong system or project.
A success that inflicts such a devastating toll that it carries the implication of defeat.
A simple and seemingly magical solution to a complicated problem.
The tendency to avoid using or buying existing products or solutions because of their external origins.
The practice of splitting up a task, and devoting undivided attention to each, thereby completing the task.
Feel free to contribute to this list by submitting a pull request or opening an issue.