Showing posts with label design. Show all posts
Showing posts with label design. Show all posts

Friday, July 12, 2013

"The important point is that the cost of adding a feature isn't just the time it takes to code it. The cost also includes the addition of an obstacle to future expansion. Sure, any given feature list can be implemented, given enough coding time. But in addition to coming out late, you will usually wind up with a codebase that is so fragile that new ideas that should be dead-simple wind up taking longer and longer to work into the tangled existing web. The trick is to pick the features that don't fight each other."
John Carmack

Tuesday, March 19, 2013

When the hierarchy is correct, anyone can successfully create a new subclass.
~ Sandi Metz 

Thursday, January 3, 2013

Encapsulation picks up where abstraction leaves off. Abstraction says, "You're allowed to look at an object at high level of detail." Encapsulation says, "Furthermore, you aren't allowed to look at an object at any other level of detail."

~ 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

Wednesday, September 5, 2012




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

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

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

Wednesday, December 7, 2011

Always design a thing by considering it in its next larger context - a chair in a room, a room in a house, a house in an environment, an environment in a city plan
~ Eliel Saarinen

Sunday, November 6, 2011

OO is about Messaging

The big idea is "messaging" -- that is what the kernal of Smalltalk/Squeak is
all about (and it's something that was never quite completed in our Xerox PARC phase).
The Japanese have a small word -- ma -- for "that which is in between" -- perhaps
the nearest English equivalent is "interstitial".

The key in making great and growable systems is much more to design
how its modules communicate rather than what their internal properties
and behaviors should be.
Think of the internet -- to live, it (a) has to allow many different
kinds of ideas and realizations that are beyond any single standard
and (b) to allow varying degrees of safe interoperability between these ideas.



Tuesday, November 1, 2011

The constant battle

"Software design is a constant battle with complexity. We must make distinctions so that special handling is applied only where necessary."

~ Eric Evans

Wednesday, October 5, 2011

The fear of making the wrong choices


We think we want a lot of choices, but really we want freedom. There’s a difference, and the overwhelming number of choices in our lives these days leads to confusion, paralysis, and unhappiness. 
Scarcity choices can be seen as a bad thing, but I see it as liberating. I’m not saying we should have no choices, but fewer is better. 
Try narrowing down your choices, in as many ways as you dare. Watch fewer TV shows by picking just three you watch every week. Pick just one book and read that until you’re done. Have a to-do list that’s only three items long each day. Make a weekly menu that only has two or three meals you cook in big batches, and eat those all week. You might worry that you’re making the wrong choices — you’re not.
There are no wrong choices, there’s only the fear of making the wrong choices. 
I find limiting my choices to be an opportunity to let go of the worries about making the wrong choices, and to focus on enjoying the choices I do make. 
Leo Babauta @ http://zenhabits.net/scarce/#more-8603

Monday, September 12, 2011

All the great code

So you can write Java code that's object-oriented but C-like using arrays, vectors, linked lists, hashtables, and a minimal sprinkling of classes. Or you can spend years creating mountains of class hierarchies and volumes of UML in a heroic effort to tell people stories about all the great code you're going to write someday.

Perl, Python and Ruby fail to attract many Java and C++ programmers because, well, they force you to get stuff done. It's not very easy to drag your heels and dicker with class modeling in dynamic languages, although I suppose some people still manage. By and large these languages force you to face the computation head-on.


-- Steve Yegge

Friday, September 2, 2011

The most horrible invention in the last 20 years

"Here is what I think: The web was probably the most horrible invention in the last 20 years. Just exactly the wrong thing to do.

Now, it happened by accident, and it evolved, and I think that's very interesting. But if you take about 5 steps back and look at this thing we call web and you realize "we're jumping through 85 hoops a day just to get anything done".

How many languages do you have to know to get a freaking a website up?"

-- Bob Martin @ Pragmatic Podcast 29

Friday, June 24, 2011

About design and refactoring

"The harder it is to see the design in the code, the harder it is to preserve it, and the more rapidly it decays. Regular refactoring helps code retain its shape."