-
Notifications
You must be signed in to change notification settings - Fork 0
/
quotes.txt
1445 lines (1160 loc) · 58.2 KB
/
quotes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# catwell's favorite quotes
CREDIT:
Many of those come from http://quotes.cat-v.org/programming/. Others
come from books I have read. I found the rest of them in various places
on the Internet.
We don’t get a chance to do that many things, and every one should be really
excellent. Because this is our life. And we’ve all chosen to do this with our
lives. So it better be damn good. It better be worth it.
-- Steve Jobs
People think focus means saying yes to the thing you’ve got to focus on. But
that’s not what it means at all. It means saying no to the hundred other good
ideas that there are. You have to pick carefully.
-- Steve Jobs
If there is no solution, then there is no problem.
-- Les Shadoks
There is no scientific method.
-- Lee Smolin, theoretical physicist
I made a discovery today. I found a computer.
Wait a second, this is cool. It does what I want it to.
If it makes a mistake, it's because I screwed it up.
Not because it doesn't like me...
Or feels threatened by me...
Or thinks I'm a smart ass...
Or doesn't like teaching and shouldn't be here...
Damn kid. All he does is play games. They're all alike.
-- Mentor, January 8, 1986
It is better to be technically elegant with a higher learning curve, than to
be easy to use, and technically crap. Layers of abstraction that serve to hide
internals are never a good thing. Instead, the internals should be designed in
a way such that they NEED no hiding.
-- Aaron Griffin, Arch Linux Overlord
When in doubt, use brute force.
-- Ken Thompson
Simplicity is prerequisite for reliability.
-- Dijkstra
Beauty is more important in computing than anywhere else in technology because
software is so complicated. Beauty is the ultimate defence against complexity.
-- David Gelernter, CS teacher at Yale
Programming is not a zero-sum game. Teaching something to a fellow programmer
doesn't take it away from you. I'm happy to share what I can, because I'm in it
for the love of programming.
-- John Carmack
In everything uniformity is undesirable. Leaving something incomplete
makes it interesting, and gives one the feeling that there is room for
growth.
-- In Idleness (japanese essay from the 14th century)
In my opinion, perfection is not reached when there is nothing left to
add but when there is nothing left to remove. That means the perfection
of a thing and its essence are a single reality. But here is the real
challenge: how do you get to the essence of things?
-- Antoine de Saint-Exupéry
The so-called "desktop metaphor" of today's workstation is instead an
"airplane-seat" metaphor. Anyone who has shuffled a lap full of papers
while seated between two portly passengers will recognize the
difference--one can see only a very few things at once.
-- Frederick Brooks, "No Silver Bullet"
The building metaphor has outlived its usefulness. [...] Let us turn
nature and study complexity in living things. [...] The secret is that
it is grown, not built.
-- Frederick Brooks, "No Silver Bullet"
You can be productive or safe, not both.
-- Rob Pike
Eventually it all comes to this: expect nothing, get involved!
-- JL Mélenchon (Grand Journal)
Nine people can't make a baby in a month.
-- Frederick Brooks, "The Mythical Man-Month"
The best way to predict the future is to invent it.
-- Alan Kay
Lua is the C of dynamic languages: lean, fast - and real men write their
own libraries.
-- Steve Donovan, on lua-l
Artists work best alone. Work alone.
-- Steve Wozniak
Predicting the future of the Internet is easy: anything it hasn’t yet
dramatically transformed, it will. People, companies, investors and
even countries can’t stop this transformation. The only choice you have
is whether you join the side of innovation and progress or you don’t.
-- Chris Dixon, VC & entrepreneur
The worst features [of a language] are the attractive nuisances, the
features that are both useful and dangerous.
-- Douglas Crockford (JSLint, JSON...)
The problem with being a beginner is that you get a lot of practice
staying a beginner.
-- Alan Kay
You can be an engineer and become a manager and get rich, or you can be
an engineer and stay an engineer and get rich.
-- Allen Baum, to Steve Wozniak
A true friend will stab you in the front.
-- Oscar Wilde
Bottomless wonders come from simple rules repeated without end.
-- Benoit Mandelbrot
Bad programmers worry about the code. Good programmers worry about data
structures and their relationships.
-- Linus Torvalds
Nobody should start to undertake a large project. You start with a small
trivial project, and you should never expect it to get large. If you do,
you'll just overdesign.
-- Linus Torvalds
Some specious value of "correctness" is often irrelevant because it
doesn't matter. While performance almost always matters.
-- Linus Torvalds
There really are only two acceptable models of development: "think and
analyze" or "years and years of testing on thousands of machines". Those
two really do work.
-- Linus Torvalds
There is one quality that cannot be purchased in this way, and that is
reliability. The price of reliability is the pursuit of the utmost
simplicity. It is a price which the very rich find most hard to pay.
-- Tony Hoare (QuickSort, CSP)
Debugging time increases as a square of the program's size.
-- Chris Wenham
Code never lies, comments sometimes do.
-- Ron Jeffries (XP, Agile Manifesto)
Software sucks because users demand it to.
-- Nathan Myhrvold, former Microsoft CTO
The only sin is to make a choice without knowing you are making one.
-- Jonathan Shewchuk, CS teacher at Berkeley
One of the big lessons of a big project is you don't want people that
aren't really programmers programming, you'll suffer for it!
-- John Carmack
Everything should be built top-down, except the first time.
-- Alan Jay Perlis (CS)
Optimization hinders evolution.
-- Alan Jay Perlis
Everyone can be taught to sculpt: Michelangelo would have had to be
taught how not to. So it is with the great programmers.
-- Alan Jay Perlis
Fools ignore complexity. Pragmatists suffer it. Some can avoid it.
Geniuses remove it.
-- Alan Jay Perlis
A year spent in artificial intelligence is enough to make one believe in
God.
-- Alan Jay Perlis
When someone says "I want a programming language in which I need only
say what I wish done," give him a lollipop.
-- Alan Jay Perlis
Dealing with failure is easy: Work hard to improve. Success is also easy
to handle: You've solved the wrong problem. Work hard to improve.
-- Alan Jay Perlis
It goes against the grain of modern education to teach children to
program. What fun is there in making plans, acquiring discipline in
organizing thoughts, devoting attention to detail and learning to be
self-critical?
-- Alan Jay Perlis
In seeking the unattainable, simplicity only gets in the way.
-- Alan Jay Perlis
Premature optimization is the root of all evil.
-- Don Knuth
Premature generalization is the other root of all evil.
-- Keith Rarick
Written by a C++ developer with Stockholm Syndrome: "Complex programming
problems require complex languages."
-- @agentdero
The good thing about reinventing the wheel is that you can get a round
one.
-- Douglas Crockford, to Dave Winer, about JSON vs. XML
Probably my job description would be just to find something to make life
better. Or have some new idea of new stuff that replaces old stuff. Try
to make it better. Whatever it is that's wrong, that takes time, that
causes bugs.
-- Ken Thompson (at Google)
[C++] does a lot of things half well and it's just a garbage heap of
ideas that are mutually exclusive.
-- Ken Thompson
I have determined that the complexity class of most C++ programs is
NP-Fucked.
-- Joël Perras (@jperras)
Give a man a fish, feed him for a day. Teach a man to fish, and you'll
have to answer fucking fish questions the rest of your life.
-- Steve Harris (Terracotta)
It's funny, but I used to get really pissed off at Larry Wall for
calling Java programmers "babies". It turns out the situation is a
little more complicated than that... but only a little.
-- Steve Yegge
I am very interested in obsoleting GNU bloatware: it's crap. From a
purely technical perspective, the FSF _sucks_at_writing_code_. They're
horrible, and their stuff should die. That's why I got into BusyBox in
the first place: I want GNU-less Linux.
-- Rob Landley
Sometimes, the elegant implementation is just a function. Not a method.
Not a class. Not a framework. Just a function.
-- John Carmack
Java is like a variant of the game of Tetris in which none of the pieces
can fill gaps created by the other pieces, so all you can do is pile
them up endlessly.
-- Steve Yegge
I have discovered that there are two types of command interfaces in the
world of computing: good interfaces and user interfaces. The essence of
user interfaces is parsing: converting an unstructured sequence of
commands, in a format usually determined more by psychology than by
solid engineering, into structured data. [...] This situation is a
recipe for disaster.
-- Dan Bernstein
The Internet isn't really a technology, it's a belief system - a
philosophy. [...] The belief system of the Internet is that everyone
should have the freedom to connect, the freedom to innovate and the
freedom to hack without asking permission. No one can know the whole of
it; it cannot be centrally controlled and the innovation happens in
small groups on the "edges" of the network.
-- Joi Ito (MIT Media Lab)
It is now usually cheaper to just try something than to sit around and
try to figure out whether to try something. [...] The compass has
replaced the map and the idea of "rough consensus running code" has
spread from the ideology behind network architecture to a fundamental
philosophy for startup companies and the "lean startup" movement.
-- Joi Ito (MIT Media Lab)
Hobbyists are the ones who invent new stuff, almost exclusively. [...] A
thousand professional physicists picked at random probably wouldn't
fundamentally change physics the way Albert Einstein did as a hobby
while working as a patent clerk. [...] Hobbyists are artists as much as
engineers. They get writer's block. They have portfolio pieces showing
cool things they've done, which are generally more interesting than
their resume listing experience and training. Hobbyists go off on
tangents ALL THE TIME, that's how they come up with new stuff nobody's
ever done before, with sturgeon's law in full force: 90% of that new
stuff is crap, but a tiny fraction of it is spectacular. [...] A
hobbyist generally responds to "What's it good for?" with "Let's find
out!".
-- Rob Landley
In the physical world, an engineer’s job is to build a project to spec.
But in the world of software, sometimes it’s the case that you start
building a bridge, then halfway through realize what you really need is
a boat. As developers, we can make that switch because software is,
well, soft.
-- Adam Wiggins (CTO, Heroku)
It's too easy to fall out of touch with the code when you're managing a
product from a higher level. When you don't understand the code, you
won't understand why a change takes as long as it does, or how to
increase the speed of change. The code affects long term flexibility
too. If the code is hard to change, a feature will be hard to change.
That's a product level issue.
-- Ryan Singer (37signals)
People who don’t take risks generally make about two big mistakes a
year. People who do take risks generally make about two big mistakes a
year.
-- Peter Drucker, quoted by Chad Dickerson (Etsy)
It is nice to know the dictionary definition for the adjective "elegant"
in the meaning "simple and surprisingly effective".
-- Edsger W. Dijkstra
Simplicity is a great virtue but it requires hard work to achieve it and
education to appreciate it. And to make matters worse: complexity sells
better. The computing industry is not the only one that has discovered
that sore truth: so has the academic world. If you deliver a lecture
that is crystal clear from the beginning to end, your audience feels
cheated and mutters while leaving the lecture hall "That was all rather
trivial, wasn't it?". One of our learned journals has rejected a
beautiful paper of mine because the solution it presented was too simple
to be of academic interest and I am waiting for the rejection of a paper
on the grounds that it is too short.
-- Edsger W. Dijkstra
He is someone extraordinarily gifted, able to tackle any mathematical or
even scientific problem, and most people with these qualities tend not
to focus. Gérard Berry, schockingly, kept focused on his research topic
(synchronous systems) from the day he knew that was it. It was not easy
at first, nobody took him seriously.
-- Jean Vuillemin
The art of programming is the skill of controlling complexity.
-- Marijn Haverbeke (Eloquent JavaScript)
Everyone has a plan 'till they get punched in the mouth.
-- Mike Tyson, quoted by Adam Wiggins
The plan was (a) to make a crappy initial version of Arc, (b) use that
for a while in real applications, then (c) go back and write a complete,
cleaned up language spec, and (d) use that as the basis of a fairly good
implementation.
-- Paul Graham
I dislike "flag" arguments that are intended to change the behavior of a
method in some big way. [...] The call would be more readable if the API
had separate methods: one for each flag value.
-- Guido van Rossum
Entreprise-friendly is usually when the really smart people lose
interest and the people of more mediocre skills have to somehow fend for
themselves.
-- Guido van Rossum
There is no contemporary problems requiring millions of lines of code.
Instead there are careless programmers, bad managers, or impossible
requirements for compatibility.
-- Chuck Moore
[When asked: "How do you define success in terms of your work?"]
An elegant solution.
-- Chuck Moore
I'm amazed that software written in the 1970s hasn't/can't be rewritten.
One reason might be that in those days software was exciting; things
being done for the first time; programmers working 18-hour days for the
joy of it. Now programming is a 9-5 job as part of a team working to a
schedule; not much fun.
-- Chuck Moore
Lisp did not address I/O. In fact, C did not address I/O and because it
didn't, it needed an operating system. Forth addressed I/O from the very
beginning.
-- Chuck Moore
The critical skill grad students have to master is noticing something so
obvious that no one else has noticed it before.
-- Matt Might
I think the root of your mistake is saying that macros don't scale to
larger groups. The real truth is that macros don't scale to stupider
groups.
-- Paul Graham
Two ranchers, a Canadian and an American, meet at a Cattle Convention.
The American boasts “My ranch is so big, I can git’ in my truck and
drive for a day in any direction, and I’m still on ma’ propuh-ty.”
The Canadian nods in sympathy. “I used to have a truck just like that.”
-- Raganwald
Avoid OO whenever possible. Contrary to common belief, most problems are
better solved in non-OO ways.
-- Anselm R. Garbe
Some people, when confronted with a reliability problem, think, “I know,
I’ll build a distributed system.” Now they have n² problems.
-- Keith Rarick
Simplicity is often in tension with convenience. Convenience often wins
in the short term, but simplicity always wins in the long term. The real
trick is finding a way to get both simplicity and convenience. That is
the secret sauce and it’s SO worth the effort.
-- Keith Rarick
Python is not a functional language dfor a very good reason: Python is
very pragmatic. It lets you mess around with state, fiddle with the
OS... All kinds of things that you can very easily do in Python, but
somehow are incredibly hard in a beautiful language like Haskell.
-- Guido Van Rossum
My opinion is that OOP is one of the great frauds perpetrated on the
community.
-- Peter Weinberger
I'd say Kernighan emphasized ease of learning; Weinberger, soundness of
implementation; and I, utility.
-- Alfred Aho (on AWK)
It's not much of an exaggeration to say that as a programmer either I am
trying to decide what to do next, or I am debugging. Everything else
takes hardly any time.
-- Peter Weinberger
The best path to high-quality software is talented experts who share a
pretty clear sense of what they want to produce. I have no idea how to
produce good software without talented programmers.
-- Peter Weinberger
I usually consider that if something needs comments, it is not well
written. For me, a comment is almost a note like "I should try to
rewrite this code later." I think clear code is much more readable than
commented code.
-- Roberto Ierusalimschy
Design for minimal resources, and you may be pleasantly surprised to see
your tool used in many contexts that you did not have as a primary goal
and some that you did not even know existed. When we discuss the
inclusion of a feature in Lua, we ask ourselves: "OK, but will it run in
a microwave oven?"
-- Luiz Henrique de Figueiredo
The effect of individual differences will far outweigh any effect of the
programming language [on productivity].
-- Tom Love
If I revisited [Objective-C] today, I might even go as far as to remove
[inheritance]. Inheritance just isn't all that important. Encapsulation
is OOP's lasting contribution.
-- Brad Cox
I'm focused on SOA and JBI today. They support encapsulation as much as
traditional OOP. Even better; they encapsulate not just data +
procedures, but even the entire thread of control that powers them.
-- Brad Cox
The big change was ubiquitous networking, which opened up new levels of
integration larger than the Unix process space. In SOA for example, the
Internet is like the cabling between the components of a HiFi system,
with services on disparate servers functioning like the components
themselves.
-- Brad Cox
[We had] exactly the problem gate-level designers face when designing
big chips. Their solution? Encapsulate a bunch of gates inside a chip.
I'll handle chip design. You solder them together. Objective-C was
precisely that notion. Of course [...] languages are tools, things to be
picked up or laid aside according to the problem at hand.
-- Brad Cox
It's all about doing more with less. It's not about doing more with more
with a simple layer on top.
-- Anders Hejlsberg
Unfortunately, RUP became understood as a prescriptive methodology like
cooking food. None of us who have developed software would even dream
that you really do it step by step, following a checklist.
-- Ivar Jacobson
The industry is very immature. It's a little more mature than it was 20
years ago, but we build much more complex systems today.
-- Ivar Jacobson
Unfortunately, a lot of people who were jealous of our initial success
got involved in the second version. They felt they could have done just
as well as we did. As things turned out, they couldn't. [...] So UML 2.0
became a bloated monstruosity. [...] It shows the limitations of trying
to do creative activity by commitee.
-- James Rumbaugh
The sad thing is that most of the problems [Brooks] cites in [The
Mythical Man-Month] are still happening today. [...] Maybe this is a
good way to state the main problem facing the computing field: most of
its practitioners have no understanding of computing history and so
[...] they are condemned to repeat the same mistakes.
-- James Rumbaugh
I think [using UML to generate implementation code] is a terrible idea.
[...] If you can generate code from a model, then it is a programming
language. And UML is not a well-designed programming language.
-- James Rumbaugh
Don't believe the nonsense about inventing a better mousetrap: it takes
serious marketing to get something adopted.
-- James Rumbaugh (about concurrent programming languages)
Perl 5 made much the same mistake that languages like Ruby are currently
making with monkey typing (sic), [...] which results in spookey
action-at-a-distance.
-- Larry Wall
[Computers] really don't understand when they should ask for feedback.
That's because they don't understand when they should be unsure.
-- Larry Wall
When OOP came onto the scene and most people said it is what comes after
structured methods, to me that made no sense. It was part of structured
methods right from the beginning. Structured programming was for
programming-in-the-small aspects, and OOP was for
programming-in-the-large, but there was no gap between the two. Having
read Dahl's and Hoare's text, I knew this was the right way to program.
-- Bertrand Meyer
I have never seen a breakthrough product in software that was built by
more than 10 people, and usually it is somewhere between 2 and 5.
-- Bertrand Meyer
Nowadays, most of the code written has an inheritance structure, which
is encouraged in the hope that it will bring clarity to the code.
However [...] this is not beautiful code; it is bad code with a
convoluted design. If you cannot tell what the code does by glancing at
the naming conventions and several code lines, then the code is too
complicated.
-- Adam Kolawa
Bill Gosper once said: "Data is just a dumb kind of programming." The
corollary, of course, is that code is just a smart kind of data, data
designed to trigger processors into performing certain useful or amusing
acts.
-- Charles Petzold
Is the lack of [runtime type checking] good enough to be called
"beautiful code"? After working with it for over five years, yes, I
think it is. It keeps easy hacks from springing up within the kernel and
forces everyone to be very exact in their logic, never falling back on
any checks for types that might prevent bugs from happening later.
-- Greg Kroah-Hartman
Any problem in computer science can be solved with another layer of
indirection, but that usually will create another problem.
-- David Wheeler
[Unix is] an operating system designed primarily for technical users
[that] know better than OS designers what their own needs are.
-- Eric S. Raymond
The Unix philosophy is bottom-up, not top down. It is pragmatic and
grounded in experience. It is not to be found in official methods and
standards, but rather in the implicit hard-reflexive knowledge, the
expertise that the Unix culture transmits.
-- Eric S. Raymond
Controlling complexity is the essence of computer programming.
-- Brian Kernighan
The only way to write complex software that won't fall on its face is to
hold its global complexity down, to build it out of simple parts
connected by well-defined interfaces, so that most problems are local
and you can have some hope of upgrading a part without breaking the
whole.
-- Eric S. Raymond
Hardwiring policy and mechanism together has two bad effects: it makes
policy rigid and harder to change in response to user requirements, and
it means that trying to change policy has a strong tendency to
destabilize the mechanisms.
-- Eric S. Raymond
The original HTML documents recommend "be generous in what you accept",
and it has bedeviled us ever since because each browser accepts a
different superset of the specifications. It is the specifications that
should be generous, not their interpretation.
-- Doug McIlroy
Make it run, then make it right, then make it fast.
-- Kent Beck
Rushing to optimize before the bottlenecks are known may be the only
error to have ruined more designs than feature creep.
-- Eric S. Raymond
I remember one development manager at Bellcore who fought against the
"requirements" culture years before anybody talked about "rapid
prototyping" or "agile development". He wouldn't issue long
specifications; he'd lash together some combination of shell scripts and
awk code that did roughly what was needed, [have] the customers [...]
tell him whether or not they liked it. If they did, he would say "you
can have it industrial strength so-many-months from now at such-and-such
cost". His estimates tended to be accurate, but he lost out in the
culture to managers who believed that requirements writers should be in
control of everything.
-- Mike Lesk
The Unix tradition includes a healthy distrust of "one true way"
approaches to software design or implementation. It embraces multiple
languages, open extensible systems, and customization hooks everywhere.
-- Eric S. Raymond
When you see the right thing, do it. This may look like more work in the
short term, but it's the path of least effort in the long run. If you
don't know what the right thing is, do the minimum necessary to get the
job done, at least until you figure out what the right thing is.
-- Eric S. Raymond
Later, [PDP-10 hackers] became the founding cadre of the IETF and
originated the tradition of standardization through RFCs. Socially, they
were young, exceptionally bright, almost entirely male, dedicated to the
point of addiction, and tended to have streaks of stubborn
nonconformism. [They] had a vision of computers as community-building
devices.
-- Eric S. Raymond
The pipe was technically trivial, but profound in its effect. However,
it would not have been trivial without the fundamental unifying notion
of the process as an autonomous unit of computation, with process
control being programmable.
-- Doug McIlroy
The day Linux gives the Mac diagnostic that you can't open a file
because you don't have the application is the day Linux becones
non-Unix.
-- Doug McIlroy
There are two ways of constructing a software design. One is to make it
so simple that there are obviously no deficiencies; the other is to make
it so complicated that there are no obvious deficiencies. The first
method is far more difficult.
-- C.A.R. Hoare
Doug McIlroy's advice to "do one thing well" is usually interpreted as
being about simplicity. But it is also, implicitly and at least as
importantly, about orthogonality.
-- Eric S. Raymond
One single bug-prone glue layer is not the worst fate that can befall a
design. A designer who is aware that the glue layer exists, and tries to
organize it into a middle layer around its own set of data structures or
objects, can end up with *two* levels of glue: one above the midlayer
and one below.
-- Eric S. Raymond
All OO languages show some tendency to suck programmers into the trap of
excessive layering.
-- Eric S. Raymond
There is more vocal criticism of OO in the Unix world than orthodoxy
permits elsewhere; Unix programmers know when *not* to use OO; and when
they do use OO languages, they spend more effort trying to keep their
object designs uncluttered.
-- Eric S. Raymond
Commercial Unix distributions that have [suppressed] the BUGS section or
[euphemized it] have invariably fallen into decline.
-- Eric S. Raymond
Using the Unix file system as a database is a tactic other applications
with simple database requirements might do well to emulate. Good reasons
not to do it are more likely to have to do with the database keys not
naturally looking like filenames than they are with any performance
problems.
-- Eric S. Raymond
If you want transparent code, the most effective route is simply not to
layer too much abstraction over what you are manipulating with the code.
-- Eric S. Raymond
If we believe in data structures, we must believe in independent (hence
simultaneous) processing. For why else would we collect items within a
structure? Why do we tolerate languages that give us the one without the
other?
-- Eric S. Raymond
Threading is a performance hack. [They] do not reduce global complexity
but rather increase it, and should therefore be avoided save under dire
necessity.
-- Eric S. Raymond
If you can use limited shared memory and semaphores, asynchronous I/O
using SIGIO or poll/select rather than threading, do it that way.
-- Eric S. Raymond
[The Unix tradition of program interface design] has an inner logic to
it which is worth learning and understanding. It reflects heuristics
accumulated over Unix's long history about ways to do effective
communication both with human beings and with other programs.
-- Eric S. Raymond
Consider your tradeoffs carefully, and consider them from the user's
point of view. The bias implied by the Rule of Least Surprise is a good
one to hold consciously, mainly because interface designers have an
unconscious tendency to be too clever for the user's good.
-- Eric S. Raymond
The design of consumer software [since 1984 has] become heavily skewed
toward GUIs. While this is a good choice for novice and casual users
that constitute most of the market, it also exacts hidden costs on more
expert users.
-- Eric S. Raymond
Programs should request confirmation only when there is good reason to
suspect that the answer might be "no no no!"
-- Eric S. Raymond
Reading profiler results is something of an art. There are a couple
(sic) of recurring problems: one is instrumentation noise, another is
the effect of imposed external latencies, and a third is overweighting
of upper nodes in the call graph.
-- Eric S. Raymond
The MIT and New Jersey philosophies have analogs within the Unix design
tradition itself. One strain of Unix thinking emphasizes small sharp
tools, starting designs from zero and interfaces that are simple and
consistent. This point of view has been most famously championed by Doug
McIlroy. Another strain emphasizes doing simple implementations that
work and that ship quickly, even if the methods are brute-force and some
edge cases have been punted. Ken Thompson's code and his maxims about
programming have often seemed to lean in this direction. The tension
between these approaches arises precisely because one can sometimes get
a simpler interface if one is willing to pay implementation complexity
for it, or vice versa.
-- Eric S. Raymond
You can cut accidental complexity by noticing that there is a simpler
way to do things. You can cut optional complexity by making
context-dependent judgements about what features are worthwhile. You can
only cut essential complexity by having an epiphany, fundamentally
redefining the problem you are addressing.
-- Eric S. Raymond
The reason that vi and emacs never caught on among old-school Unix
programmers is that they are *ugly*. This complaint may be "old Unix"
speaking, but had it not been for the singular taste of old Unix, "new
Unix" would not exist.
-- Doug McIlroy
My ideal for the future is to develop a filesystem remote interface (a
la Plan 9) and then have it implemented across the Internet as the
standard rather than HTML. The would be ultimate cool.
-- Ken Thompson
This is why you spent all that time learning to program: you can fix
things. You can make new and amazing things. Don't take that ability
lightly.
-- James Hague
In many ways, the end result is unimportant – it’s really just the
excuse for the whole experience. It’s why I started Linux to begin with
– sure, I kind of needed an OS, but I needed a *project* to work on more
than I needed the OS. [...] My model is kind of a reverse “end result
justifies the means”. Hell no, that’s the stupidest saying in the
history of man. [...] It’s simply not the end that matters at all. It’s
the means – the journey. The end result is almost meaningless.
-- Linus Torvalds
I've never found the idea of depending on a huge C++ library
particularly attractive for my projects. Admittedly, I _do_ have an
aversion to 'enterprise-level' programming.
-- Mike Pall
I do not fear computers. I fear the lack of them.
-- Isaac Asimov
A complex system that works is invariably found to have evolved from a
simple system that worked.
-- John Gall
I think I've been able to reach my goals on the internet better than
most people. The fact that I'm very clear about my opinions is probably
part of it. I hate that whole "victim philosophy". The truth shouldn't
be sugarcoated.
-- Linus Torvalds
For those of you who think we have been engaged in steady progress, in
some form of Darwinian process that are making things better for us,
it's actually quite the opposite.
-- Alan Kay
Technology happens, it's not good, it's not bad. Is steel good or bad?
-- Andrew Grove
Startup advice overheard: you have too many hipsters, you won't scale
like that. Hire some fat guys who know C++.
-- Jay Kreps (LinkedIn)
We should have some ways of coupling programs like garden hose--screw in
another segment when it becomes necessary to massage data in another
way. This is the way of IO also.
-- Doug McIlroy
Perhaps I'm a philistine about types but I've never found that model
particularly expressive.
-- Rob Pike
The following data structures are a complete list for almost all
practical programs: array, linked list, hash table, binary tree.
-- Rob Pike
Data dominates. If you've chosen the right data structures and organized
things well, the algorithms will almost always be self-evident. Data
structures, not algorithms, are central to programming.
-- Rob Pike
Algorithms, or details of algorithms, can often be encoded compactly,
efficiently and expressively as data. [...] Code and data are the same,
or at least they can be. How else can you explain how a compiler works?
-- Rob Pike
I think you have to open the objects and open your methods. I think that
this idea of hiding in layers of abstraction everything about the
details has, in fact, pretty much run its course now. I think the idea
that we can make these sorts of black box devices that we only know
about the shell of and have no knowledge of the internal workings of is
in fact a deep mistake. Because it turns out that in order to be able to
reason about how the system is actually working, we have to have
knowledge about what is inside the black box.
-- Richard Cook (on resilience of complex systems)
Well, I'm an old-fashioned guy. And I also happen to believe in history.
The lack of interest, the disdain for history is what makes computing
not-quite-a-field.
-- Alan Kay
The Internet was done so well that most people think of it as a natural
resource like the Pacific Ocean, rather than something that was
man-made. When was the last time a technology with a scale like that was
so error-free? The Web, in comparison, is a joke. The Web was done by
amateurs.
-- Alan Kay
Tell everyone your startup idea. [...] The idea thief has no passion.
-- Rob Walling
People like Leibniz and Babbage and Lovelace and Turing and von Neumann
understood from the beginning that a computer wouldn't just be another
steam engine or toaster -- that, because of the property of universality
(whether or not they called it that), it's difficult even to talk about
computers without also talking about ourselves.
-- Scott Aaronson
When your hammer is C++, everything begins to look like a thumb.
-- Steve Haflich
Beginner: "Threads are hard." Intermediate: "Don't fear multithreading."
Expert: "Threads are hard."
-- Damien Katz
The only reason to have unit tests is to make sure that code that
already works doesn’t break. Writing tests first, or writing code to the
tests is ridiculous. If you write to the tests before the code, you
won’t even know what the edge cases are.
-- Chad Okere
What children do well and adults forget about: constantly testing
boundaries.
-- Subbu Allamaraju
Only ugly languages become popular. Python is the one exception.
-- Knuth
If you believe "pragmatism" and "theory" are in opposition, you
understand neither.
-- Paul Snively
Simplifying code is like diet and exercise: the result is healthy and
runs faster. Loop unrolling is plastic surgery: the result does not age
well and winds up making things _worse_ after a while. Don't optimize.
Simplify.
-- Rob Landley
A way to handle design vs. implementation is to see the work as
components. Design is the boundaries, implementation is the contents.
-- Ryan Singer
When I was a young Erik, when I was a fundamentalist functional
programmer, I would say: "Of course, you're using mutable state, you
should not do that! Use Haskell or a real language and this won't
happen." But OTOH, now that I write code for a living, I kind of like
imperative programming. You can get stuff done, you know... The Real
World is imperative, so I think we need to embrace side effects.
-- Erik Meijer
Functional "programming" is a tool for thought. Imperative programming
is a tool for hackers.
-- Erik Meijer
Don't ever let anyone tell you that fork(2) is bad. Thirty years from
now, there will still be a fork(2) and a pipe(2) and a exec(2) and smart
people will still be using them to solve hard problems reliably and
predictably, just like they were thirty years ago.
-- Ryan Tomayko
These days I write code because (and when) I enjoy it and I think it'll
be useful to me or to my fellow hackers; if I decide I'd enjoy something
else more, I'll do that instead. The new users can go and fuck
themselves.
-- Daniel Barlow
First you learn the value of abstraction, then you learn the cost of
abstraction, then you're ready to engineer.
-- Kent Beck
Our job is not just making things. Believe it or not, that's the easy
part. Our job is to figure out whether something should be made, how
it's made and convice someone, whether that's a client, a co-worker, a
manager or a VC, that we've made the right choice. That's design.
-- Mike Monteiro
Dependency hygiene trumps code reuse.
-- Rob Pike
Erlang is the culmination of twenty-five years of correct design
decisions in the language and platform. Whenever I've wondered about how
something in Erlang works, I have never disappointed in the answer. I
almost always leave with the impression that the designers did the
“right thing.” I suppose this is in contrast to Java, which does the
pedantic thing, Perl, which does the kludgy thing, Ruby, which has two
independent implementations of the wrong thing, and C, which doesn't do
anything.
-- Evan Miller
It's pretty easy to spot that something is not flexible enough. Spotting
that it is too flexible can take years.
-- Martin Sustrik
0.01: The factor of human beings who can program
0.001: The factor of human beings who can program concurrently
0.0001: The factor of human beings who can program distributively
-- Jesper Louis Andersen
Sometimes correctness trumps speed. Sometimes it is the other way around.
-- Jesper Louis Andersen
Idempotence is your key to network programming.
Protocol design is your key to network programming.
Sun RPC is usually not the solution. Corollary: HTTP requests neither.
-- Jesper Louis Andersen
In a distributed system, the important part is the messages. What
happens inside a given node is uninteresting. Especially what
programming language it is written in.
-- Jesper Louis Andersen
There is something very American about Feynman breaking into safes
during the Manhattan Project. It's hard to imagine the authorities
having a sense of humor about such things over in Germany at that time.
Maybe it's not a coincidence.
Hackers are unruly. That is the essence of hacking. And it is also the
essence of Americanness. It is no accident that Silicon Valley is in
America, and not France, or Germany, or England, or Japan. In those
countries, people color inside the lines.
-- Paul Graham
We reject kings, presidents and voting. We believe in rough consensus
and running code.
-- David Clark, IETF
I'd like to stand for simplicity in Programming Languages. The key thing
to remember is that a PL is a tool, and that the users of that tool need
to master it. So the average programmer using a language should know and
understand the entire language.
-- David MacQueen, Milner Symposium 2012
Make new developers do code reviews.
-- Alex Gaynor
The key in making great and growable systems is much more to design how
its modules communicate rather than what their internal properties and
behaviors should be.
-- Alan Kay
A wise person knows when to ignore his duties and improvise. Rules and
incentives may make things better in the short run, but they create a
downwards spiral that makes them worse in the long run.
-- Barry Schwartz
Who is the CEO? The one bringing vision and culture.
-- Le Camping
The world moves forward on those who are dissidents. Because without
dissent there is no creativity.
-- Steve Blank
- How long to develop this feature?
- How long does it take to catch a fish?
-- @freekl, Twitter
Google has found that the most innovative workers — also the “happiest,”
by its definition — are those who have a strong sense of mission about
their work and who also feel that they have much personal autonomy.
-- Steve Lohr (New York Times)
We are defined by what we make time to do, not by what we do when we
have time.
-- Kate Matsudaira
What I cannot create, I do not understand.