Holy Bible: ESV Bible
Quotes from the Book
The heart of software is its ability to solve domain-related problems for its user.
A model is a selectively simplified and consciously structured form of knowledge.
In the old waterfall method, the business experts talk to the analysts, and analysts digest and abstract and pass the result along to the programmers, who code the software. This approach fails because it completely lacks feedback.
To communicate effectively, the code must be based on the same language used to write the requirements—the same language that the developers speak with each other and with domain experts.
Every software program relates to some activity or interest of its user.
Success comes in an emerging set of abstract concepts that makes sense of all the detail. This distillation is a rigorous expression of the particular knowledge that has been found most relevant.
Knowledge trickles in one direction, but does not accumulate.
That shallowness of knowledge produces software that does a basic job but lacks a deep connection to the domain expert’s way of thinking.
Diagrams are a means of communication and explanation, and they facilitate brainstorming. They serve these ends best if they are minimal.
They show design constraints, but they are not design specifications in every detail. They represent the skeletons of ideas.
the model is not the diagram.
The behavior of running code is unambiguous.
documenting exclusively through code has some of the same basic problems as using comprehensive UML diagrams.
A document shouldn’t try to do what the code already does well.
Written documents should complement the code and the talking.
you may hear the UBIQUITOUS LANGUAGE changing naturally while a document is being left behind.
It takes fastidiousness to write code that doesn’t just do the right thing but also says the right thing.
There is no need for explanatory models to be object models, and it is generally best if they are not.
The astrolabe was a mechanical implementation of an object-oriented model of the sky.
If the design, or some central part of it, does not map to the domain model, that model is of little value, and the correctness of the software is suspect.
The heart of software is its ability to solve domain-related problems for its user. All other features, vital though they may be, support this basic purpose. When the domain is complex, this is a difficult task, calling for the concentrated effort of talented and skilled people. Developers have to steep themselves in the domain to build up knowledge of the business. They must hone their modeling skills and master domain design. Yet these are not the priorities on most software projects. Most talented developers do not have much interest in learning about the specific domain in which they are working, much less making a major commitment to expand their domain-modeling skills. Technical people enjoy quantifiable problems that exercise their technical skills. Domain work is messy and demands a lot of complicated new knowledge that doesn’t seem to add to a computer scientist’s capabilities. Instead, the technical talent goes to work on elaborate frameworks, trying to solve domain problems with technology. Learning about and modeling the domain is left to others. Complexity in the heart of software has to be tackled head-on. To do otherwise is to risk irrelevance.
When we set out to write software, we never know enough.
The vital detail about the design is captured in the code. A well-written implementation should be transparent, revealing the model underlying it.
there should be some learning when a domain model is discussed.
The domain experts had learned more and had clarified the goal of the application.
Most talented developers do not have much interest in learning about the specific domain in which they are working, much less making a major commitment to expand their domain-modeling skills. Technical people enjoy quantifiable problems that exercise their technical skills.
Any technical person contributing to the model must spend some time touching the code, whatever primary role he or she plays on the project. Anyone responsible for changing code must learn to express a model through the code. Every developer must be involved in some level of discussion about the model and have contact with domain experts. Those who contribute in different ways must consciously engage those who touch the code in a dynamic exchange of model ideas through the UBIQUITOUS LANGUAGE
The kind of knowledge captured in a model such as the PCB example goes beyond “find the nouns.
About Unknown
More by Unknown
Holy Bible: ESV Bible
Holy Bible, NKJV
The New Oxford Annotated Bible: New Revised Standard Version
Hagakure: The Book of the Samurai
Book details
- Author
- Unknown
- Genre
- Nonfiction
- Goodreads rating
- 4.15 (6k ratings) →
Keep reading
The Pragmatic Programmer: From Journeyman to Master
Code Complete
Software Engineering at Google: Lessons Learned from Programming Over Time
Structure and Interpretation of Computer Programs (MIT Electrical Engineering and Computer Science)
Pragmatic Thinking and Learning: Refactor Your Wetware
The Design of Everyday Things
Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability
Continuous delivery
Thinking In Systems: A Primer
Hackers & Painters: Big Ideas from the Computer Age
Managing Humans: Biting and Humorous Tales of a Software Engineering Manager
Making Ideas Happen: Overcoming the Obstacles Between Vision and Reality
Getting Real: The Smarter, Faster, Easier Way to Build a Web Application
Accelerate: Building and Scaling High Performing Technology Organizations
Peopleware: Productive Projects and Teams
Range: Why Generalists Triumph in a Specialized World
In the Beginning...Was the Command Line
Effective Java Programming Language Guide
Made to Stick: Why Some Ideas Survive and Others Die
Algorithms to Live By: The Computer Science of Human Decisions
How to Take Smart Notes
Where Good Ideas Come From: The Natural History of Innovation
Co-Intelligence: Living and Working with AI
JavaScript: The Good Parts
The Goal: A Process of Ongoing Improvement
The Fifth Discipline: The Art & Practice of The Learning Organization
The Innovators: How a Group of Hackers, Geniuses and Geeks Created the Digital Revolution
Gödel, Escher, Bach: An Eternal Golden Braid
The Soul of a New Machine
Lean Analytics: Use Data to Build a Better Startup Faster
From Bacteria to Bach and Back: The Evolution of Minds
Please Understand Me II: Temperament, Character, Intelligence
Running Lean: Iterate from Plan A to a Plan That Works
Emotional Design: Why We Love (or Hate) Everyday Things
Right Kind of Wrong: The Science of Failing Well
Math with Bad Drawings
Story Engineering: Character Development, Story Concept, Scene Construction
A Whole New Mind: Why Right-Brainers Will Rule the Future
The Information: A History, a Theory, a Flood
Peak: Secrets from the New Science of Expertise
The PARA Method: Simplify, Organize, and Master Your Digital Life
Philosophical Investigations
Humble Pi: A Comedy of Maths Errors
The Effective Executive: The Definitive Guide to Getting the Right Things Done
A World Without Email: Reimagining Work in an Age of Communication Overload
Rework
The Most Human Human: What Talking with Computers Teaches Us About What It Means to Be Alive
Black Box Thinking: Why Some People Never Learn from Their Mistakes - But Some Do
My Ishmael
Founders at Work: Stories of Startups' Early Days
Because Internet: Understanding the New Rules of Language
Chaos: Making a New Science
You Are Not a Gadget
How the Mind Works
The Stuff of Thought: Language as a Window into Human Nature
Imagine: How Creativity Works
The Sense of Style: The Thinking Person's Guide to Writing in the 21st Century
Creativity, Inc.: Overcoming the Unseen Forces That Stand in the Way of True Inspiration
Drive: The Surprising Truth About What Motivates Us

