The Zen of Python
- Beautiful is better than ugly.
- Explicit is better than implicit.
- Simple is better than complex.
- Complex is better than complicated.
- Flat is better than nested.
- Sparse is better than dense.
- Readability counts.
- Special cases aren't special enough to break the rules.
- Although practicality beats purity.
- Errors should never pass silently.
- Unless explicitly silenced.
- In the face of ambiguity, refuse the temptation to guess.
- There should be one-- and preferably only one --obvious way to do it.
- Although that way may not be obvious at first unless you're Dutch.
- Now is better than never.
- Although never is often better than right now.
- If the implementation is hard to explain, it's a bad idea.
- If the implementation is easy to explain, it may be a good idea.
- Namespaces are one honking great idea -- let's do more of those!
According to Sahlins, ethnographic data indicated that hunter-gatherers worked far fewer hours and enjoyed more leisure than typical members of industrial society, and they still ate well
Advanced Linux user write program for three hours which will do job for 5 seconds, but common user will do the same for one hour.
Even big companies are nothing more than an accumulation of individuals.
Inheritance is a powerful way to achieve code reuse, but it is not always the best tool for the job. Used inappropriately, it leads to fragile software.
If you are clever, you can get more done with less material or less action.
Deliver yesterday, code today, think tomorrow
Whatever the advantages of planning, they're often outweighed by the advantages of being able to keep a program in your head.
Leadership is the reduction of uncertainty.
If the programmatic interface didn’t intrinsically match that concept, we’d surely need to write lots of brittle glue code to compensate.
A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away.
You don't have to have lots of money to be evil, but it sure helps.
Part of the inhumanity of the computer is that, once it is competently programmed and working smoothly, it is completely honest.
Nevertheless I believe that at the end of the century the use of words and educated opinion will have altered so much that we will be able to speak of machines thinking without expecting to be contradicted.
When I use a word, Humpty Dumpty said in a rather a scornful tone, it means just what I choose it to mean — neither more nor less.
…the creator of Rails in his flagship products could not keep them running for longer than 4 minutes on average.
All the troubles in this world come from the fact that things are not called by their names.
When you gaze long into an abyss the abyss also gazes into you.
Obsessed by the idea of producing beautiful code or none at all, but yet unsuccessful in achieving this lifetime goal.
Scientific American is a low-tech version of Slashdot, and it even does not have comments
When I start seeing patterns in my code, it's time to refactor it.
Too big security is wrecking.
Life is not only trip to work and back home. Also its shopping, traveling out of city, just traveling, at the end.
Programmer should have logical and abstraction thinking as first class mathematic. In addition must have Edison's talent to build anything from zero and one. Also he must be combined careful as accountant in conjunction with scout shrewdness, and fantasy as novel writer with an economist practicality.
First: «I have one rule on process: it isn't a substitute for talent.» Second: «I have one rule on talent: it isn't a substitute for process.»
Learning a language is more about culture than syntax.
A great programmer adds function by deleting code.
Instead of building computers which were genuinely capable of understanding the world, his colleagues had simply redefined understanding and knowledge until they were things of which computers were, in principle, capable.
Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it 😉 >
Premature optimisation is the root of all evil in programming.
As much as it pains me to say this, Java is the programming tool of choice for discriminating hackers».
Like designers, if you give a programmer a problem with parameters, they’ll apply every bit of genius they have to solve it in the best possible way. If you tell them how to do it, you’ll suffer the wrath of an angry God.
Society management system based on injection in public consciousness different myths is even worse than clean totalitarianism
The key to performance is elegance, not battalions of special cases.
If you can't change your organization, change your organization.
A very senior Microsoft developer who moved to Google told me that Google works and thinks at a higher level of abstraction than Microsoft. “Google uses Bayesian filtering the way Microsoft uses the if statement,” he said.
This is the same phenomenon you see with defense contractors or fashion brands. The dumber the customers, the more effort you expend on the process of selling things to them rather than making the things you sell
The complexity of software is an essential property, not an accidental one. Hence, descriptions of a software entity that abstract away its complexity often abstract away its essence.
…flowchart is a very poor abstraction of software structure.
…the most important function that the software builder performs for the client is the iterative extraction and refinement of the product requirements. For the truth is, the client does not know what he wants.
it is really impossible for a client, even working with a software engineer, to specify completely, precisely, and correctly the exact requirements of a modern software product before trying some versions of the product.
A little retrospection shows that although many fine, useful software systems have been designed by committees and built as part of multipart projects, those software systems that have excited passionate fans are those that are the products of one or a few designing minds, great designers.
The only limiting factor of the Linux operating system, is his user.
Intelligence is the ability to avoid doing work, yet getting the work done.
…if you need to ask a lawyer whether what you do is «right» or not, you are morally corrupt. Let's not go there. We don't base our morality on law.
95 percent of all software developers believe they are in the top 5 percent, when it comes to knowledge and skills.
Software is like sex; it's better when it's free.
If you need more than 3 levels of indentation, you're screwed anyway, and should fix your program.
Portability is for people who cannot write new programs.
Talk is cheap. Show me the code.
Those that can, do. Those that can't, complain.
He who can, does. He who cannot, teaches.
…the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code».
In the consortium projects, there's always the handshake with one hand and a dagger in the other.
if you are on same wave with a redneck, maybe you have many similarities with them than you're willing to admit it.
For a successful technology, reality must take precedence over public relations, for Nature cannot be fooled.
In short, nobody violates the Busybox license (or indeed any Free Software license) for a smart reason.
Russian management is brutal and unmerciful.
There are Christian, Pagan and Jewish screws. Christian's has cross at middle for Phillips screwdriver. Pagan's has slit, for old flat screwdriver. But Jewish has pit the six-pointed. They are artful. Means for Jewish screwdriver.
Marketing is multistage system which takes off responsibility form all members of process on all stages of killing thoughts.
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.
...because of writing becomes main way to earn money, quality of works is falling. There is no main activity, which gives a touch with world, new impressions which might be written in a book. Man is sitting in a tower of ivory and making up many new stories from the thin air, and they all become more dull and boring.
When a distinguished but elderly scientist states that something is possible, he is almost certainly right. When he states that something is impossible, heis probably wrong.
The only way of discovering the limits of the possible is to venture a little way past them into the impossible.
Any sufficiently advanced technology is indistinguishable from magic.
USSR deserve what happened to it, only because of topographic maps was secret.
Worst thing that can happen to a code base is size
The most dangerous way to lose time is not to spend it having fun, but to spend it doing fake work.
When worker doing nothing this is impossible to hide. This is much easier for scientist or sysadmin. For marketologist backwards, he must work hardly to somebody thought he is not working.
Many readers are not aware that the the brain will automatically ignore a second instance of the word «the» when it starts a new line.
I'm always delighted by the light touch and stillness of early programming languages. Not much text; a lit gets done. Old programs read like quiet conversations between a well-spoken research worker and a well-studied mechanical colleague, not as a debate with a compiler. Who'd have guessed sophistication bought such noise.
…the recent resurgence of evangelical Christianity in the US is partly a reaction to drugs.
Old programmers never die. They just decompile
HR is the most massive problem in the IT sector today.
First they ignore you, then they laugh at you, then they fight you, then you win.
Choose a job you love, and you will never have to work a day in your life.
To be good man is advantageous.
In business, innovation can be easily distinguished from invention. Invention is the conversion of cash into ideas. Innovation is the conversion of ideas into cash. This is best described by comparing Thomas Edison with Nikola Tesla. Thomas Edison was as innovator because he made money from his ideas. Nikola Tesla was an inventor. Tesla spent money to create his inventions but was unable to monetize them.
Make everything as simple as possible, but not simpler.
If you only have a hammer, every problem starts looking like a nail.
The amount of noise generated by a change is inversely proportional to the complexity of the change.
It’s easier to change your environment than to change your mind.
Rara avis in terris nigroque simillima cygno
I take my courage where I can, but I take my weapons from science
I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone.
Walking on water and developing software from a specification are easy if both are frozen.
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.
If you have an apple and I have an apple and we exchange these apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
Jack of all trades, master of none, though often better than a master of one.
Specialization is for insects.
The graveyards are full of indispensable men.
If you're typing, you're not working.
In contrast to «normal» people, engineers have rational objectives for social interactions: (1) Get it over with as soon as possible; (2) Avoid getting invited to something unpleasant; *(3) Demonstrate mental superiority and mastery of all subjects.
Being a creator of software systems is like being a god. Only without the omnipotence, omnipresence or omniscience.
If I owe you a pound, I have a problem; but if I owe you a million, the problem is yours
Les bons artistes copient, les grands artistes volent
Woman programmer is like guinea pig. She is not from Guinea and is not a pig.
Freedom is the freedom to say that two plus two make four.
…products are intimately constrained by what is technically and algorithmically feasible. In my experience, having a technical understanding of the range of related problems can inspire product ideas that might not occur to someone without this understanding
OOP will die and be replaced by a "usable programming paradigm"
We have persistent objects, they're called files.
The whole problem with the world is that fools and fanatics are always so certain of themselves, but wiser people so full of doubts.
Computers do not solve problems, they execute solutions.
[...], it is also sad to me that so many "programmers" and "software engineers" today don't treat our science like other sciences. Can you imagine a physicist who wouldn't study the works of Newton, Bohr, or Rutherford because they were "born before his time". In software today it seems like people just want to get into it fast, learn the latest 'in' language and start making money. Perhaps that is why there is so much bad software out there.
If a company chooses to write its software in a comparatively esoteric language, they'll be able to hire better programmers, because they'll attract only those who cared enough to learn it.
If a programming language doesn't teach you a new way to think about problems, it's not worth learning.
things that don't have state can't be broken - they just exist.
The scientists from Franklin to Morse were clear thinkers and did not produce erroneous theories. The scientists of today think deeply instead of clearly. One must be sane to think clearly, but one can think deeply and be quite insane.
Simplicity is power. The power to do less of what doesn't matter and more of what does.
To simplify complications is the first essential of success.
Simplicity plays a central role in all timeless designs. We appreciate solutions that - all other things being equal - solve problems in a clear, economical, fashion. The most powerful designs are always the result of a continuous process of simplification and refinement.
Making the simple complicated is commonplace; making the complicated simple, awesomely simple, that's creativity.
Simplicity is the outward sign and symbol of depth of thought.
Simplicity is not an end in art, but we usually arrive at simplicity as we approach the true sense of things.
The ability to simplify means to eliminate the unnecessary so that the necessary may speak.
Keep it simple and good things will happen.
Simplicity is the ultimate sophistication.
The "Fundamental Theorem of Software Engineering": All problems can be solved by introducing an extra level of indirection.
Testing can only prove the presence of bugs, not their absence.
If debugging is the process of removing bugs, then programming must be the process of putting them in.
Writing it is easy, understanding it is hard.
There is no programming language, no matter how structured, that will prevent programmers from making bad programs.
Collected by mikhailian