You do not need permission to do the right thing. No one can give you permission to do the wrong thing.
I just ran across this great bit of advice I got back in 1995 from Larry Wall, creator of Perl:
Don’t get brainwashed by your education into thinking that all the answers have to come from teachers.
If you’re not asking the right question, then there is no correct answer.
Merlin Mann in Back To Work #41
“I was young and crazy… I didn’t know what is possible and what’s not, so I did impossible things.” – Mart Laar, Prime Minister of Estonia 1992-1994 and 1999-2002
This is a great video from Steven Johnson about where good ideas come from.
There are more things in Heaven and Earth, Horatio, than are dreamt of in your philosophies. – Shakespeare
I said before that generalization, patterns, and abstraction are powerful ideas, but they have their limits. It is useful to reduce a thing to its core principles, but beware! Taking reductionism too far you can lose the essence of the thing.
Poetry is far more than words and meter; man far more than mammal; and reality far more than relativity or quantum mechanics. There’s nothing wrong with thinking about music in terms of the temporal and harmonic relationships between sounds, but if you think of it as only that, you’ll never understand why some music moves you.
εν αρχη ην ο λογος – John 1:1
Our world behaves in consistent, predictable ways. If it were not so, biology, chemistry, physics, mathematics, philosophy, economics, engineering, medicine, and countless other disciplines would simply not work. Every discipline studies a range of specific phenomena and aims to distill the detailed observations into general principles or patterns of behavior. It is this ability to generalize that allows us really to know anything at all.
In software engineering, certain problems come up repeatedly. How to sort a collection of numbers, how to manage allocation of system memory, and how to maintain good application performance as the number of users increases are just a few examples. Some very smart people have been working on these problems for a long time, and their documented best practices for solving these problems are called Design Patterns (or sometimes just Patterns). Other disciplines have similar patterns—in mathematics, for example, someone might work out an elegant method for using matrix arithmetic to solve systems of differential equations. Similarly in medicine, physicians follow best practices for diagnosis and treatment.
We’ve seen how each discipline develops patterns to understand and solve problems within its own domain—and many of these, like General Relativity, are truly powerful in their own right. But what has been fascinating me lately is abstraction—taking an already powerful idea and stripping away the domain-specific parts, until you’ve liberated the core idea, the pattern-behind-the-pattern. Then you begin to see how that core pattern applies across wildly divergent disciplines. In the beginning was the Logos—the organizing principle on which everything else rests.
I’ll go into more detail in future posts, but just take redundancy as one quick example: we find redundancy at work correcting errors in computer hard drives and on networks, improving readability in the English language, correcting mutations in DNA, functionally replacing damaged neurons, stabilizing financial markets, and in many other places.