Tuesday, December 25, 2012

When I'm working on a problem I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong.

~ R. Buckminster Fuller

Friday, December 21, 2012

Once you understand that all other technical goals in software are secondary to managing complexity, many design considerations become straightforward.

~ Steve McConnell

Tuesday, December 18, 2012

There are two ways of constructing a software design: one way is to make it so simple that there obviously no deficiencies, and the other is to make it so complicated that there are no obvious deficiencies.
~ C. A. R. Hoare

Monday, December 10, 2012

A developer who lacks the ability to give good names to concepts and data in their code is like a mute translator. It doesn’t matter if you can understand something, if you can’t adequately explain it, the moment it leaves your head it is gone.

Friday, November 30, 2012

OOP discussions would be much more pleasant had Alan Kay written "the big idea is massaging" instead

~ Pat Maddox

Wednesday, November 14, 2012

Asking for efficiency and adaptability in the same program is like asking for a beautiful and modest wife. Although beauty and modesty have been known to occur in the same woman, we'll probably have to settle for one or the other. At least that's better than neither.
~ Gerald Weinberg

Friday, November 9, 2012

“Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves.”
~ Sir Alan Kay

Sunday, November 4, 2012

If your organization doesn't like truth and honesty, it probably won't like agile
~ Henrik Kniberg

Friday, October 26, 2012

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.
Brian W. Kernighan

Wednesday, October 3, 2012

A language that discourages decomposition is a language that cripples a programmer's most valuable way of thinking.

~ Bret Victor

Friday, September 28, 2012

Give someone a program, you frustrate them for a day; teach them how to program, you frustrate them for a lifetime.

~ David Leinweber

Wednesday, September 26, 2012

Every time you write new code, you should do so reluctantly, under duress, because you completely exhausted all your other options. Code is only our enemy because there are so many of us programmers writing so damn much of it.

~ Jeff Atwood

Wednesday, September 19, 2012

The fundamental nature of coding is that our task, as programmers, is to recognize that every decision we make is a trade-off.

~ Jeff Atwood

Thursday, September 13, 2012


When your hammer is C++, everything begins to look like a thumb.

~ Steve Haflich

Wednesday, September 12, 2012

As a software developer, you are your own worst enemy. The sooner you realize that, the better off you'll be.

~ Jeff Atwood

Wednesday, September 5, 2012




"Bad programmers worry about the code. Good programmers worry about data structures and their relationships."
~ Linus Torvalds

Monday, August 27, 2012

The tests are a victim of the design of your code
~ Sandi Metz

Thursday, August 23, 2012

"More good code has been written in languages denounced as bad than in languages proclaimed wonderful - much more."
~ Bjarne Stroustrup

Wednesday, July 25, 2012


Make all the important information visible in one place and then decide what to do together. 
~ Henrik Kniberg

Friday, July 20, 2012


Extracting patterns from today's programming practices ennobles them in a way they don't deserve

~ Alan Kay

Tuesday, July 17, 2012


The Internet was done so well that most people think of it as a natural resource like the Pacific Ocean, rather than something that was man-made. When was the last time a technology with a scale like that was so error-free? The Web, in comparison, is a joke. The Web was done by amateurs.
~ Alan Kay

Wednesday, July 11, 2012

Any improvement to the software delivery process should speed up the rate with which we deliver value, not the rate with which we burn effort. For as long as we only track inputs – effort, story points, number of tasks – we’re essentially tracking time.
~ Gojko Adzic

Tuesday, July 3, 2012

If you know what you're doing, three layers is enough; if you don't, even seventeen levels won't help

~ Michael Padlipsky, The Elements of Networking Style

Friday, June 29, 2012

OO languages make abstraction easy — perhaps too easy. They encourage architectures with thick glue and elaborate layers. This can be good when the problem domain is truly complex and demands a lot of abstraction, but it can backfire badly if coders end up doing simple things in complex ways just because they can.
~ Eric Steven Raymond

Tuesday, June 26, 2012

In XP we turn all the dials up to 10, not up to Reasonable.
~ RonJeffries

Tuesday, June 12, 2012

TDD is about incremental change and improvement. It is great for finding local maxima but the best solution might require a radical rethink. The opportunity cost in this case is that we get trapped in this local maximum and miss a bigger win.

Wednesday, April 18, 2012

Given all the hundreds of books we’ve seen on how to get started on test-driven development, I wish there’d be just one or two that’d focus on how to tame the beast.
~ DHH

Friday, April 13, 2012

Don't give in to the false authority of a method. People may walk into meetings with an acre of class diagrams and 150 use cases, but all that paper is still just their fallible interpretation of requirements and design.

~ Dave Thomas & Andrew Hunt

Wednesday, April 11, 2012

A computational process is indeed much like a sorcerer's idea of a spirit. It cannot be seen or touched. It is not composed of matter at all. However, it is very real. It can perform intellectual work. It can answer questions. It can affect the world by disbursing money at a bank or by controlling a robot arm in a factory. The programs we use to conjure processes are like a sorcerer's spells. They are carefully composed from symbolic expressions in arcane and esoteric programming languages that prescribe the tasks we want our processes to perform.
~ SICP

Tuesday, April 10, 2012

Now imagine you meet millions of carpenters using this toolbox who tell you “well hey what’s the problem with these tools? They’re all I’ve ever used and they work fine!” And the carpenters show you the houses they’ve built, where every room is a pentagon and the roof is upside-down. And you knock on the front door and it just collapses inwards and they all yell at you for breaking their door.

That’s what’s wrong with PHP.



Thursday, April 5, 2012

Languages need hype to survive; I just wish people didn't have to be blinded by it.
~ Steve Yegge

Monday, April 2, 2012

Never become a slave to a methodology: circles and arrows make poor masters.
~ Andrew Hunt & Dave Thomas

Thursday, March 29, 2012

A good architecture allows major decisions to be deferred! A good architecture maximizes the number of decisions not made!
~ Bob Martin

Wednesday, March 28, 2012

Gosling even said, a few years ago, that if he had to do it all over again, he wouldn't have used interfaces.

(...)


if the language designer suggests innocently that the language might not have been designed perfectly, it's time to shoot the language designer full of horse tranquilizers and shut down the conference

~ Steve Yegge

Tuesday, March 27, 2012

You know what architecture is? The art of drawing lines. With the interesting rule: once you have drawn the lines, all the dependencies that cross that line go in the same direction. Once you have that, you've got a gem, you've got a component, you've got a plugin

~ Bob Martin

Friday, March 23, 2012

There's always a "best" tool for any job, but if programmers don't know how to use it, they'll choose an inferior tool because they think their schedule doesn't permit a learning curve. In the long run they're hurting their schedules, but it's hard to see that when you're down in the trenches.
 ~ Steve Yegge

Wednesday, March 21, 2012

Anything you need to quantify can be measured in some way that is superior to not measuring it at all.
 ~ Tom Gilb

Friday, March 16, 2012

Unit testing does not improve quality just by catching errors at the unit level. And, integration testing does not improve quality just by catching errors at the integration level. The truth is more subtle than that. Quality is a function of thought and reflection - precise thought and reflection. That’s the magic. Techniques which reinforce that discipline invariably increase quality.
~ Michael Feathers

Thursday, March 15, 2012

If you find yourself concentrating on the technology rather than the sociology, you're like the vaudeville character who loses his keys on a dark street and looks for them on the adjacent street because, as he explains, "The light is better here".

Tuesday, March 13, 2012

"It ended up being trickier than I expected" is much more common in programming than "It ended up being easier than I expected"
~ Gregory Moeck

Wednesday, March 7, 2012

The complexity created by a programmer is in inverse proportion to their ability to handle complexity
 ~ Kent Beck

Thursday, February 23, 2012

As the power of available machines grew by a factor of more than a thousand, society's ambition to apply these machines grew in proportion, and it was the poor programmer who found his job in this exploded field of tension between ends and means. The increased power of the hardware, together with the perhaps even more dramatic increase in its reliability, made solutions feasible that the programmer had not dared to dream about a few years before. And now, a few years later, he had to dream about them and, even worse, he had to transform such dreams into reality! Is it a wonder that we found ourselves in a software crisis?

Friday, February 17, 2012

I try hard to make my work more interesting than Twitter. Here's a tip: You can "subscribe" to interesting people at work by being valuable to interesting people at work. Its how we networked before networks.
~ Ward Cunningham

Tuesday, February 14, 2012

There's no sense in being precise when you don't even know what you're talking about
~ John von Neumann

Friday, February 10, 2012

It's more planning what you want to learn, not what it [the product] will be in the end
~ Ward Cunningham

Wednesday, February 8, 2012

If I were to define a failed project, one of my criteria would certainly be "a project on which no one came up with any better ideas than what was on the initial list of requirements."

~ Mike Cohn

Tuesday, January 31, 2012

The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence.

Monday, January 30, 2012

A project that does healthy refactoring will be steadily deleting bad code. If nothing's deleted then it's almos certainly a sign that there isn't enough refactoring going on - which will lead to design degradation.

Wednesday, January 25, 2012

And what about “nonrational”? That borders on insulting. Many programmers  would rather be accused of murder than be accused of being anything less than completely rational.

~ Andy Hunt

Tuesday, January 24, 2012

It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
In the good old days physicists repeated each other's experiments, just to be sure. Today they stick to FORTRAN, so that they can share each other's programs, bugs included.

Tuesday, January 17, 2012

By claiming that they can contribute to software engineering, the soft scientists make themselves even more ridiculous. (Not less dangerous, alas!) In spite of its name, software engineering requires (cruelly) hard science for its support.

Tuesday, January 10, 2012

Wednesday, January 4, 2012

Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer. 

Tuesday, January 3, 2012

The use of anthropomorphic terminology when dealing with computer systems is a sign of professional immaturity
~ Dijkstra