quotes

Jul 05
Permalink
The gentleman explained the differences between extraordinary people and those who are not so extraordinary. One major distinction lay in their to-do list. Your to-do list is where you place your focus. Whatever you focus on expands. Extraordinary people focus on results. Those who are not, focus on activities. Sometimes, when we focus on activities, we think we will get the same results but that is often not the case. Sometimes, our to do list serve to keep us busy and stagnant, must like a person in on a treadmill. Your are still running, but are you getting anywhere?
Mar 14
Permalink
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.
Mar 06
Permalink
Хочу сразу заметить, что читателю не следует рассчитывать на то, что алгоритмы можно читать, как роман. Такое чтение приведет к тому, что вам будет трудно понять, что же на самом деле происходит при выполнении алгоритма. Чтобы проверить алгоритм, в нем нужно разобраться, и лучший способ понять, как он работает — испытать его. Поэтому я предлагаю вам взять карандаш и бумагу и проработать каждый алгоритм от начала до конца сразу же, как только он встретится в тексте. Это самый простой и доступный способ разобраться в алгоритме, в то время как все остальные подходы оказываются неэффективными.
— Дональд Кнут
Mar 05
Permalink
Как-то у одного фермера осел упал в колодец. Вытащить его не получалось, и он решил прямо там его закопать. Фермер позвал соседей, и начали они всем миром кидать в колодец комья грязи. Но погрести животное никак не удавалось: осел стряхивал с себя землю, которая ложилась ему под копыта, позволяя подниматься все выше и выше. Вскоре грязи было уже достаточно для того, чтобы осел, стоя на ней, перешагнул через край колодца.
— Книга
Feb 26
Permalink
Starting a business from scratch in a market that doesn’t exist is like solving an equation with Newton’s method, and you’re starting with a really, really bad guess.
Feb 10
Permalink
During development, the first thing we do is run our own programmer’s
“acceptance test.” We code, compile, and run. And when we run, we test. The
“test” may just be clicking a button to see if it brings up the expected menu. But,
still, every day, we code, we compile, we run…and we test.
— JUnit in Action
Feb 08
Permalink

People often say that one’s design should be modular. Sadly, many people take this as meaning «use modules.» Having modules in a program does not mean that the program is modular. This is generally the point where I whip out the strong coupling and zero-dependency diagrams and beat your brain into submission, but my law school exams have been going pretty well so I’ll try a nicer approach today.

You know what’s modular in the real world? Condoms. They can be used as a contraceptive, they can be used to prevent STDs, they can be used as a barrel plug on paintball guns, they can be used to protect a live gun barrel from moisture when wading through rivers, they can be used to smuggle liquids or powders, and so on. And what makes condoms so modular in the first place?

* Easy to set up. Rip the pack open, unfold, perform task. You should nt have to go through a dozen hoops and fill ten forms to get a working object.

* Simple and general concept. It’s an elastic, impermeable, transparent pocket. Although its primary use (the one it’s optimized for) is prevention of insemination, it is not restricted to doing only that. In the same way, when you design a portion of your game, determine if the code you are writing is not overly restrictive. Perhaps it could be used to do other similar things in other places?

* High availabiliy. Condoms are extremely cheap and easy to get your hands on, which proves they have not been designed by your average software engineer. I can see it now:

«The user will only need one condom to get his thing on, right?
— Right. Singleton?
— Deal.»

The fundamental point to condoms is that you can get as many as you need. If you design your objects in terms of “you only need one” then by design you are restricting reuse.

* Standalone. It doesn’t require other things to work. You don’t have to plug it in. You don’t have to use an Adapter pattern to fill it with distilled vodka. You don’t have to set up a render-target window and you don’t have to run a network thread in the background. Have your objects work on their own, like a condom: a condom needs itself, and an object to be placed around. Your modules should need themselves, and a target task to be placed around.

Jan 17
Permalink
A good rule of thumb is to use a pattern whenever pieces of code tend to be replaced or changed often.
Permalink

…that you could get smarter programmers to work on a Python project than you could to work on a Java project.

I didn’t mean by this that Java programmers are dumb. I meant that Python programmers are smart. It’s a lot of work to learn a new programming language. And people don’t learn Python because it will get them a job; they learn it because they genuinely like to program and aren’t satisfied with the languages they already know.

Which makes them exactly the kind of programmers companies should want to hire. Hence what, for lack of a better name, I’ll call the Python paradox: 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.

— Пол Грехем
Jan 12
Permalink
Reading, after a certain age, diverts the mind too much from its creative pursuits. Any man who reads too much and uses his own brain too little falls into lazy habits of thinking.
— Albert Einstein