Интервьюеры любят их слушать

В прошлое воскресенье (5 декабря) был день рождения дяди Боба, отца движения за чистый код и Agile Manifesto.

Размышляя о его вкладе, я почувствовал себя обязанным воздать должное всем носителям мудрости мира программирования. Я не мог придумать это достаточно быстро, потому что собрать преобразующие мысли за 6–7 десятилетий работы было непростой задачей.

Некоторые из них также помогли мне пройти собеседования со старшими разработчиками, поскольку они раскрывают вековые, проверенные временем знания в области программирования. Я указал их ниже звездочкой (*).

Дизайн

#1:(*) Functions should do something, or answer something, but not both - Robert C. Martin (aka Uncle Bob, Creator of Clean Code & Agile Manifesto)

#2: (*) Context is worth 80 IQ points - Alan Kay (OOP pioneer)

#3: Master programmers think of systems as stories to be told rather than programs to be written - Robert C. Martin
#4: (*) In order to make sure our functions are doing ‘one thing’, we need to make sure that the statements within the function are all at the same level of abstraction - Robert C. Martin

Алгоритмы и сложность

#5: Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it - Alan Perlis (Creator, ALGOL)
#6: Space is time (compact data is faster to traverse than scattered data) - Bjarne Stroustrup (Creator, C++)
#7: (*) An algorithm must be seen to be believed - Donald Knuth
//Personal Favorite (a recent one)
#8: Alternative Big O notation:
O(1) = O(yeah)
O(log n) = O(nice)
O(n) = O(ok)
O(n²) = O(my)
O(2ⁿ) = O(no)
O(n!) = O(mg!)
- Josh Carroll

Важность чистой работы

#9: The most damaging phrase in the language is..it’s always been done this way - Grace Hopper (Pioneer Computer Scientist, Inventor of Linkers)
#10: It is easier to change the specification to fit the program than vice versa - Alan Perlis (Creator, ALGOL)
#11: Programs must be written for people to read, and only incidentally for machines to execute - Hal Abelson (Founder, Free Software Foundation)
#12: The first rule of functions is that they should be small- Robert C. Martin
#13: Later equals never - LeBlanc’s Law
#14: (*) Any fool can write code that a computer can understand. Good programmers write code that humans can understand - Martin Fowler (Author, Programmer, Speaker)
#15: (*) Testing leads to failure, and failure leads to understanding - Burt Rutan (Designer, Voyager —the first non-stop Aircraft to fly around the world)
#16: Quality is free, but only to those who are willing to pay heavily for it - Tom Demarco, Tim Lister (Authors, Peopleware: Productive Projects and Teams)
#17: All software sucks - Alan Cox (Contributing developer, Linux)

Языки программирования

#18: (*) Programming isn’t about what you know; it’s about what you can figure out - Chris Pine (Author, Learn to program)
#19: Actually I made up the term “object-oriented”, and I can tell you I did not have C++ in mind - Alan Kay (OOP pioneer)
#20: The fact that ‘goto’ can do anything is exactly why we don’t use it - Bjarne Stroustrup (Creator, C++)
#21: The only way to learn a new programming language is by writing programs in it - Dennis Ritchie (Creator, C)
#22: It makes my head explode when there are people who think you can do everything in HTML - James Gosling (Creator, Java)
#23: Haskell is faster than C++, more concise than Perl, more regular than Python, more flexible than Ruby, more typeful than C#, more robust than Java, and has absolutely nothing in common with PHP - Audrey Tang (Free Software Programmer, Haskell & Perl Community Leader)
#24: SQL, Lisp, and Haskell are the only programming languages that I’ve seen where one spends more time thinking than typing - Philip Greenspun (Creator, Photo.net)
#25: Programming languages are like girlfriends: The new one is better because *you* are better - Derek Sivers (Entreprenuer, Musician, TED Speaker, Programmer)

Оптимизация и производительность

#26: Often designers do complicated things that improve the capacity on a particular hardware platform when it might actually be cheaper to buy more hardware - Martin Fowler (Author, Programmer, Speaker)
#27: It’s hardware that makes a machine fast. It’s software that makes a fast machine slow - Craig Bruce
#28: To optimize old code, first get rid of the fancy stuff - Bjarne Stroustrup (Creator, C++)
#29: (*) If you optimize everything, you will always be unhappy - Donald Knuth (Father of Analysis of Algorithms)

Юзабилити и дизайн

#30: If we want users to like our software, we should design it to behave like a likeable person - Alan Cooper (Creator, Visual Basic)
#32: The most common user action on a Website is to flee - Edward Tufte, (Researcher, Information Design)
#33: A brilliant solution to the wrong problem can be worse than no solution at all: solve the correct problem. - Donald A. Norman (Researcher & Author, User Centered Design)
#34: The purpose of computing is insight, not numbers - Richard Hamming
#35: That’s not what we think design is. … It’s not just what it looks like and feels like. Design is how it works - Steve Jobs, Apple
#36: The best error message is the one that never shows up - Thomas Fuchs
#37: Applications programming is a race between software engineers, who strive to produce idiot-proof programs, and the universe which strives to produce bigger idiots. So far, the Universe is winning - Rick Cook (Fantasy Author)

Производительность и программное обеспечение как бизнес:

#38: Talk is cheap. Show me the code - Linus Torvalds (Creator, Linux)
#39: 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 - Alan Kay (OOP pioneer)
#40: Secret to productivity is not finding more time to do more stuff, but finding the strength to do less of the stuff that doesn't need doing - David Heinemeier Hansson (Creator, Ruby on Rails)
#41: (*) Adding manpower to a late software project makes it later - Fred Brooks (Developer, IBM/360)

Наконец, я нашел кое-что, когда гуглил ключевое слово Agile:

#42:Don’t let your tools become your process ― Anonymous

Заключение

Секрет выбора 42 цитат для многих не такой уж непредсказуемый:

The Answer to the Ultimate Question of Life, The Universe, and Everything is 42 - Douglas Adams, The Hitchhiker’s Guide to the Galaxy

Дуглас разочаровал всех, кому было интересно, что же такого особенного в 42: это было просто шуткой.

Однако для энтузиастов программного обеспечения число 42 занимает особое место в истории. Это единственное число, на решение которого у них ушли десятилетия суперкомпьютеров:

Find x, y & z, where x3 + y3 + z3 = d, and d = 42

Задача была легко решена для многих других значений d, кроме 42.

Но опять же, как сказал Бьерн Страуструп, в отношении программирования:

Абсолютная уверенность — ужасная вещь.