Monday, June 27, 2011

Simplicity is the economy of mind

Finance is the economy of money.
Productivity is the economy of time.
Simplicity is the economy of mind.

Your intelligence won't grow, accept the limits of brain, and save your mind as much as you can save money or time.

Making things simpler to understand is what the greatest scientists do.

"Do not worry about your difficulties in Mathematics. I can assure you mine are still greater."
Einstein

And that's what Richard Feynman did when he kicked helium specialist's ass without being an expert with the Theory of Liquid Helium.

"If you can't explain something to a first year student, then you haven't really understood it."
Richard Feynman

Saturday, June 11, 2011

How to explain sofware development to your grand mother ?

When I tell people I'm a software developer, they don't really feel what I'm doing everyday.
And I was struggling to explain them :
  • I automate things... ok, but what ?
  • I make things simple... ok, that's cool but how ?
  • I give to computer what human can do... ok, so you're the guy why I lost my job ?
So now, I have a simple description about software development.

A software designer is like a teacher, he is giving name to things and actions for someone else.
Ok so what is the difference between a software designer and a teacher ?

The software designer does not know what he is talking about at first.
The teacher already knows his lesson.

The difference is significant,

The software designer must develop skill to search for information : Finding the right person, the right website, the right book.
The teacher must develop skill to improve information retention of the students.
The difference between information retention and memory is also significant.
The teacher is not limited to train students to memorize a text perfectly.
His goal is not to improve memory, his goal is to print his lesson into the students' brain.

Between the software designer and teacher, the output is also different :

In one case you are a bunch of students knowing more,
In the other case you are ready to translate the knowledge to your computer.

The next step after software design is programming : the software designer become a programmer.
But since the programmer do not really know all the domain he has just learnt (and which can sometime take several year to acquire), he will repeat this cycle periodically.
From programmer to software designer to programmer.

Programmer and Software designer was used to be two different jobs, for two different activities...
But let's be honest, do you think it's a good idea to let a teacher teaching when he knows nothing about what he is talking about ?

So my job is software developer I'm both a software designer and a programmer. But not at the same time.

Wednesday, June 8, 2011

Move the complexity, don't try to hide it

One way to have less complexity is to remove features.
But what if features are fixed ?

Do not hide it or you will get a leaky abstraction, just move the right complexity to the right person so that the wrong person will not have to see it.

In terms of code it means :
  • For the coder : do not put Database code near the View code. (Most of the time, a UI designer is not the same person as the DBA or database designer)
  • For the architect : do not put the Accounting code near the Home Automation code.
In terms of interface design it means :
  • Do not show any information the user do not need,
  • Do not create big color contrast where the user should not look,
  • Do not show advanced options, if your user is not an advanced user
In terms of enterpreneurship it means :
  • do not ask to your lawyer how to save your money,
  • do not talk about accounting with your banker,
  • do not talk about your decision process to your contractor.

Maybe it sounds obvious said like this, but having the right person seeing the right thing and nothing more is exactly what managing complexity is about.

Tuesday, June 7, 2011

Getting stuff done

Who, during his first internship was not afraid to make mistakes ?
Waiting patiently for orders, to get things done.
No order, means more freedom so more facebook browsing after all !

Wrong, from the time you have signed your contract, you are selling your time.

You can browse facebook, but :

  • you can't get up in the morning at 10am because you want to.
  • You can't tell how much you hate your boss when you want to, because thanks of him you pay the bills.
  • You can't work from home, or in front of a cup of coffee at Starbuck,
  • You can't choose with the people you want to work with,
  • You can't choose what you want to learn during work's hour,
  • You can't appreciate how you can have better relation with people, when your mouth is not shut by fear

So stop browsing during work's hour, your time is precious, and become indispensable.

Take initiatives when you don't have anything to do.
Ask forgiveness if things go wrong, it's faster and easier than asking permission.

Becoming indispensable is not a gift for your boss, it's a gift for yourself, a gift with time/money/flexibility/freedom packed in.

Friday, June 3, 2011

The why matter more than the fact

When people says "It has to be done like that" but are not able to tell you why, challenge the status quo and do another way.

It's far more valuable to get wrong and knowing why than it is to get right without knowing why.

If things go wrong, just apologize proud of learning something.
Never accept the status quo until you know why it exists.