More on this book
Community
Kindle Notes & Highlights
We who cut mere stones must always be envisioning cathedrals.
“Kaizen” is a Japanese term that captures the concept of continuously making many small improvements.
The greatest of all weaknesses is the fear of appearing weak.
Responsibility is something you actively agree to.
One broken window, left unrepaired for any substantial length of time, instills in the inhabitants of the building a sense of abandonment—a sense that the powers that be don’t care about the building. So another window gets broken. People start littering. Graffiti appears. Serious structural damage begins. In a relatively short span of time, the building becomes damaged beyond the owner’s desire to fix it, and the sense of abandonment becomes reality.
Take some action to prevent further damage and to show that you’re on top of the situation.
if you take a frog and drop it into boiling water, it will jump straight back out again. However, if you place the frog in a pan of cold water, then gradually heat it, the frog won’t notice the slow increase in temperature and will stay put until cooked.
As the value of your knowledge declines, so does your value to your company or client.
If you can’t find the answer yourself, find out who can.
Don’t just wait for questions: ask for them.
What you’re trying to do is foster an environment where it’s easier to find and reuse existing stuff than to write it yourself. If it isn’t easy, people won’t do it.
In a well-designed system, the database code will be orthogonal to the user interface: you can change the interface without affecting the database, and swap databases without changing the interface.
There is an easy test for orthogonal design. Once you have your components mapped out, ask yourself: If I dramatically change the requirements behind a particular function, how many modules are affected?
With every critical decision, the project team commits to a smaller target—a narrower version of reality that has fewer options.
Instead of carving decisions in stone, think of them more as being written in the sand at the beach. A big wave can come along and wipe them out at any time.
Prototyping is a learning experience. Its value lies not in the code produced, but in the lessons learned. That’s really the point of prototyping.
The limits of language are the limits of one’s world.
don’t spend more effort than you save.
Human-readable forms of data, and self-describing data, will outlive all other forms of data and the applications that created them. Period. As long as the data survives, you will have a chance to be able to use it—potentially long after the original application that wrote it is defunct.
You must brutally test both boundary conditions and realistic end-user usage patterns.