Select Page

The Oracle of the Programmer

6,99

The Oracle of the Programmer is a practical book to find solutions to problems of coding and technical design. It presents a new image of the programmer as an artisan and offers thinking paths a coder can explore when he or she hits a seemingly insurmountable issue.

The book was written about 20 years ago to help young programmers with writer’s block. In those days, our colleagues were more or less self-taught and very young.

Even if programming education has evolved a lot since then, and there are a lot more tools available to assist coders and support staff, the community still suffers from many of the same issues of the early days. Coding is no longer an exclusive skill for programmers, but it’s a competence picked up by designers, scientists, high school students and their teachers. Many technicians of all kind had to learn to code in order to work with ever more evolved and self-thinking machines.

This book aims to offer a helping hand to our growing community and provide inspiration, reason and warmth when there is a lacking thereof.

Consult the Oracle for free!

Categories: ,
Home » Catalogue » The Oracle of the Programmer

The Oracle of the Programmer

You have the right to be lazy

Guillermo Cerceau

The Oracle of the Programmer is a practical book to find solutions to problems of coding and technical design. It presents a new image of the programmer as an artisan and offers thinking paths a coder can explore when he or she hits a seemingly insurmountable issue.

The book was written about 20 years ago to help young programmers with writer’s block. In those days, our colleagues were more or less self-taught and very young.

Even if programming education has evolved a lot since then, and there are a lot more tools available to assist coders and support staff, the community still suffers from many of the same issues of the early days. Coding is no longer an exclusive skill for programmers, but it’s a competence picked up by designers, scientists, high school students and their teachers. Many technicians of all kind had to learn to code in order to work with ever more evolved and self-thinking machines.

This book aims to offer a helping hand to our growing community and provide inspiration, reason and warmth when there is a lacking thereof.

1

1

0

1

0

(refresh page for a new consultation)

0 0 0 0 0 Understanding

One never understands things, one just gets used to them.

0 0 0 0 1 New Tools

Don’t change tools (or versions), unless the new features are beneficial to your project. In any case, don’t cultivate false hope.

0 0 0 1 0 When does it end?

A program is never finished.

0 0 0 1 1 Deadline

Every deadline was calculated, underestimating the complexity of the problem. It is necessary to negotiate new dates with the client.

0 0 1 0 0 Magic

No one forces you to do magic all the time. Do it only in your free time and only to feed your spirit.

The story of The Golem stands as an example of how things we accomplish through magic sooner or later turn against us, just like happens to Mickey Mouse when he enchants the broom. As it has always been the case for artisans, you are at the service of a community of users. You must realize your work, and they must benefit from it.

0 0 1 0 1 It's not a machine

Do not always expect from your device, your operating system, your compiler or the application that you’re building, the same ‘fidelity’ of a machine: its predictable behavior, its operational transparency, its nudity of an artifact made of parts. The strange behavior of your hardware or your software aren’t anomalies that could be avoided or incomprehensible errors: they are part of its essence.

0 0 1 1 0 The User

The user will never be satisfied with the result of your work.

0 0 1 1 1 Where to look for help?

Look for help where it makes sense to look for it: where you can find it.

0 1 0 0 0 Bugs

‘Every non-trivial system has at least one error.’ says a traditional computer aphorism.

0 1 0 0 1 Between the client and the user

Don’t get caught in the dilemmas of the conflict between the user and the client.

0 1 0 1 0 Reinvent the wheel

Don’t despair when you feel you’re reinventing the wheel: if you check your conscience, you will find that, except when you’re in a hurry, you enjoy it. Many times it’s easier to reinvent your wheel than trying to use someone else’s.

0 1 0 1 1 Style and programming

Get acquainted with the canon of programming norms very well; the manuals generally establishes guidelines for the name of variables and procedures, indentation mode, and other stylistic aspects. Memorize them and then work to forget them.

0 1 1 0 0 Follow the diagram

Follow the instructions of the analyst, captured in the diagram (flow, structure, objects) and let your imagination fill in what is missing. No diagram can ever capture the intention of a man.

0 1 1 0 1 You have the right to be lazy

Orderly work has two faces: it works when our mind is clear. When it is full of confusing thoughts; discard them and do nothing: you have the right to be lazy.

0 1 1 1 0 The temporary and the definitive

Nothing is more definitive than the temporary. Think very carefully when you decide to place a fragment of temporary code, because it may end up being an unexpected and happy solution, or a problematic source of future problems.

0 1 1 1 1 Discipline

Discipline is a coercive force that is only morally acceptable when it arises from one’s convictions and intense voluntary work based on our internal springs. Only strict discipline can guide the programmer in his arduous task and lead him to the conclusion of his Work. Concretely, discipline means a rigorous schedule of work, with carefully distributed moments of rest and generous distraction.

1 0 0 0 0 Start over

To start over is always hard because it represents a failure, a false beginning, an incomplete or incorrect initial understanding that took us into a dead end. But there are situations where it’s the only way out. Delete the file and start over.

1 0 0 0 1 Distractions

The devil visits the monks to distract them from their meditations. Your mind is a swarm of ideas and ghosts that you must learn to tame.

1 0 0 1 0 You're each time further away

The fact that the program is finished from the point of view of the client doesn’t mean that it is finished from your point of view.

1 0 0 1 1 Your world doesn't belong to you

Each program is a small world of which you are the creating god, the demiurge. In that world you are almighty: you possess all its secrets, you know all its ways. Remember that for every world created by a god, there is a devil that messes it all around. Take care of your world, the garden where you lodged your favorite creatures, do not lose sight of the small or the big. Your world doesn’t belong to you, but you are responsible for it.

1 0 1 0 0 Irresponsibility

Do not confuse your right to laziness and the natural obstacles of your trade with a license to forget the discipline which defines you as a programmer.

1 0 1 0 1 Inexpressible

Not all ideas or feelings are expressable in words. Not all the needs of the client or user can be automated according to their particular vision. For the ideas that can’t be put into words, we have gestures, music, or silence. For the functions that can’t be programmed, we should recommend a change of platform, language, or simply an efficient way to perform these tasks manually.

1 0 1 1 0 Yesterday it worked fine

Programs stop working, the same way people get sick or plants wither.

1 0 1 1 1 The program keeps on running in your head

Your brain, in a very limited and metaphoric way, continues executing the program when you turn off the computer.

1 1 0 0 0 The blind spot

There’s something within your program that you can not see: it is right between your eyes, at that point where the gaze fails, called ‘the blind spot’. Just by changing the position in your mind, you might be able to see it.

1 1 0 0 1 Worlds within worlds

Your program is an imperfect, incomplete, and deformed reflection of a portion of the world. Each routine of your program is an imperfect, incomplete, and deformed reflection of your program — each routine within a routine.

1 1 0 1 0 Objects without objects

Don’t be afraid to cut out entire portions of your code if you discover they don’t do anything.

1 1 0 1 1 Close your eyes and try to see

Inner vision many times shows us the world with greater clarity and sharpness than our eyes.

1 1 1 0 0 False solutions

Don’t fall in love with your creations to the point where they close the road for you to reach your goals (don’t be afraid to lose them: they will always come back to you because they came out of your spirit).

1 1 1 0 1 The simplest solution

Everything should be made as simple as possible, but not simpler. (Albert Einstein)

1 1 1 1 0 Don't do anything

Stay silent, watch your screen flicker, or simply close your eyes. Watch your thoughts go by as if they were clouds but do not stop on any of them.

1 1 1 1 1 The Masterpiece

Aspire to perfection, but accept that perfection does not exclude error, but rather presupposes it.

Buy the complete Oracle on:

e-book:

paperback:

This book is also available in Spanish!