Hackers & Painters: Big Ideas from the Computer Age
Rate it:
Open Preview
69%
Flag icon
if languages vary, he suddenly has to solve two simultaneous equations, trying to find an optimal balance between two things he knows nothing about:
69%
Flag icon
Within the hacker subculture, there is another language called Perl that is considered a lot cooler than Java.
69%
Flag icon
Each one is progressively more like Lisp.
70%
Flag icon
the short explanation of why this 1950s language is not obsolete is that it was not technology but math, and math doesn’t get stale.
71%
Flag icon
As a rule, the more demanding the application, the more leverage you get from using a powerful language.
71%
Flag icon
These guys entered a market already dominated by two big, entrenched competitors, Travelocity and Expedia, and seem to have just humiliated them technologically.
71%
Flag icon
The core of ITA’s application is a 200,000-line Common Lisp program that searches many orders of magnitude more possibilities than their competitors, who apparently are still using mainframe-era programming techniques.
72%
Flag icon
But if you control the whole system and have the source code of all the parts, as ITA presumably does, you can use whatever languages you want. If any incompatibility arises, you can fix it yourself.
72%
Flag icon
In server-based applications you can get away with using the most advanced technologies, and I think this is the main cause of what Jonathan Erickson calls the “programming language renaissance.”
72%
Flag icon
If a company considers it self to be in the software business, and they’re writing an application that will be one of their products, then it will probably involve several hackers and take at least six months to write. In a project of that size, powerful languages probably start to outweigh the convenience of pre-existing libraries.
72%
Flag icon
The third worry of the pointy-haired boss, the difficulty of hiring programmers, I think is a red herring. How many hackers do you need to hire, after all? Surely by now we all know that software is best developed by teams of less than ten people. And you shouldn’t have trouble hiring hackers on that scale for any language anyone has ever heard of. If you can’t find ten Lisp hackers, then your company is probably based in the wrong city for developing software. In fact, choosing a more powerful language probably decreases the size of the team you need, because (a) if you use a more powerful ...more
72%
Flag icon
You can’t let the suits make technical decisions for you.
72%
Flag icon
What seemed like an anomaly to them was in fact cause and effect.
72%
Flag icon
If you start a startup, don’t design your product to please VCs or potential acquirers.
72%
Flag icon
Code size is important, because the time it takes to write a program depends mostly on its length. If your program would be three times as long in another language, it will take three times as long to write — and you can’t get around this by hiring more people, because beyond a certain size new hires are actually a net lose. Fred Brooks described this phenomenon in his famous book The Mythical Man-Month, and everything I’ve seen has tended to confirm what he said.
73%
Flag icon
As one data point on the curve, at any rate, if you were to compete with ITA and chose to write your software in C, they would be able to develop software twenty times faster than you. If you spent a year on a new feature, they’d be able to duplicate it in less than three weeks. Whereas if they spent just three months developing something new, it would be five years before you had it too.
73%
Flag icon
when it comes down to it, the pointy-haired boss doesn’t mind if his company gets their ass kicked, so long as no one can prove it’s his fault.
73%
Flag icon
Within large organizations, the phrase used to describe this approach is “industry best practice.” Its purpose is to shield the pointy-haired boss from responsibility:
73%
Flag icon
I believe this term was originally used to describe accounting methods and so on. What it means, roughly, is don’t do anything weird.
73%
Flag icon
what “industry best practice” actually gets you is not the best, but merely the average.
73%
Flag icon
Number 1, languages vary in power. Number 2, most managers deliberately ignore this. Between them, these two facts are literally a recipe for making money.
73%
Flag icon
If you want to win in a software business, just take on the hardest problem you can find, use the most powerful language you can get, and wait for your competitors’ pointy-haired bosses to revert to the mean.
77%
Flag icon
A hacker would consider being asked to write add x to y giving z instead of z = x + y as something between an insult to his intelligence and a sin against God.
77%
Flag icon
Good programmers often want to do dangerous and unsavory things.
77%
Flag icon
A good programming language should have features that make the kind of people who use the phrase “software engineering” shake their heads disapprovingly.
79%
Flag icon
Inventors of wonderful new things are often surprised to discover this, but you need time to get any message through to people.
79%
Flag icon
Early adopters are sophisticated and demanding, and quickly flush out whatever flaws remain in your technology.
80%
Flag icon
There are two ways new technology gets introduced: the organic growth method, and the big bang method.
80%
Flag icon
Generally, the garage guys envy the big bang guys.
80%
Flag icon
Organic growth seems to yield better technology and richer founders than the big bang method.
80%
Flag icon
The most important part of design is redesign.
80%
Flag icon
You have to be able to think how hard can it be? with one half of your brain while thinking it will never work with the other.
80%
Flag icon
You want to be optimistic and skeptical about two different things. You have to be optimistic about the possibility of solving the problem, but skeptical about the value of whatever solution you’ve got so far.
80%
Flag icon
People who do good work often think that whatever they’re working on is no good. Others see what they’ve done and think it’s wonderful, but the creator sees nothing but flaws.
80%
Flag icon
If you can keep hope and worry balanced, they will drive a project forward the same way your two legs drive a bicycle forward.
80%
Flag icon
It’s tricky to keep the two forces balanced. In young hackers, optimism predominates. They produce something, are convinced it’s great, and never improve it. In old hackers, skepticism predominates, and they won’t even dare to take on ambitious projects.
80%
Flag icon
choose your users carefully, and be slow to grow their number.
80%
Flag icon
Having users is like optimization: the wise course is to delay it.
80%
Flag icon
Introducing change is like pulling off a bandage: the pain is a memory almost...
This highlight has been truncated due to consecutive passage length restrictions.
80%
Flag icon
It’s so much work to introduce changes that no one wants to bother.
81%
Flag icon
The difference between design and research seems to be a question of new versus good. Design doesn’t have to be new, but it has to be good. Research doesn’t have to be good, but it has to be new.
81%
Flag icon
Notice I said “what they need,” not “what they want.”
82%
Flag icon
I don’t think you can even talk about good or bad design except with reference to some intended user.
82%
Flag icon
One of the reasons Jane Austen’s novels are so good is that she read them out loud to her family.
83%
Flag icon
Morale is key in design.
83%
Flag icon
Building something by gradually refining a prototype is good for morale because it keeps you engaged.
83%
Flag icon
always have working code.
1 4 6 Next »