You and your friend are trying to decide whether or not to jump across a chasm. You want to jump across to the other side where you will be rewarded with delicious berries. You friend wants to stay put and eat the so-so berries here. So you decide to compromise: you each jump halfway across the chasm and die.
Not all situations are chasms, but the really important ones usually are. Compromise can kill you; go for consensus if you can. If you can’t, go alone.
Twitter is pretty cool for news updates, or status updates from your friends (@papashaft I’m eating soup!!!). But I’m not into all that. I’m more into saying ridiculous things at ridiculous times. Rather than go to the trouble of writing them down I’ll just unleash them into the world. It’s like a little baby sketch comedy egg.
I found out about this book in a seemingly unlikely place, Mark Rosewater’s design column Making Magic. Not that unlikely for me though because Mark Rosewater is one of my heroes. I enjoy reading almost every one of his columns. His writing on elegance and the many other aspects of design is applicable to all matters of thought engineering.
What’s all this gassing on about some trading card game designer, isn’t this an internet programming blog? This brings me to my point:
That’s Not My Area
Some of the biggest breakthroughs come from the cross-pollination of ideas: what does orange farming have in common with a web application? What does biology have in common with computation?
The Right Answer
Nothing is more dangerous than an idea when it is the only one we have.
Believing that there is only one right answer can be incredibly stiffling to creativity. Settling for the first answer that works will get you part way there as a programmer, but how often is the first answer the best answer?
Follow the Rules
Sacred Cows make great steaks. — Richard Nicolosi, Businessman
Just because an idea was absolutely right in the past doesn’t mean that it is guaranteed to be right today. The qwerty keyboard layout was designed to prevent typewriter jams by slowing down the typist. When was the last time you experienced a jam on your keyboard? How about repetitive stress injury? Problems change with the times.
To Err is Wrong
A man’s errors are his portals of discovery. — James Joyce
Software development is about making errors… constantly. If know a developer who isn’t making any errors then he isn’t writing any programs. How many things do you learn when everything appears to work? It often takes 50 errors to get to the first right answer and 5000 more to get to one of the best answers.
Roger von Oech’s A Whack on the Side of the Head has a list of ten mental locks that can prevent creativity. There’s a whole lot more in the book than just that though. So go ahead, read it.
Code Complete, 2nd Edition, by Steve McConnell
Code Complete is an enlightening book. Half of it is pure gold, and coming in at around 900 pages that means 450 pages of gold. It covers, in great detail, every part of the software construction process. I found out about it by looking at this list of top 100 best software engineering books. Coming in at #1 it seemed worth a read.
The most important point: “The primary goal of software engineering is to reduce complexity.” Things such as variable names, comments, live time of variables, cohesion of classes and methods, and coding conventions are all discussed. I don’t agree with all of the specific recommendations, but that’s the point: to consider what matters and decide what is best for the current situation of you and your team.
I also enjoyed what was said about programming in high level languages: “You save time when you don’t need to have an awards ceremony every time a C statement does what it’s supposed to do.”