Эндрю Хант, Дэвид Томас «Программист-прагматик» (подсказки)

«Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.»

Сделаю, наконец, то, что уже давно почему-то откладывал.

Книжку эту открыл для себя абсолютно случайно и неожиданно. Так часто случается с реально классными вещами. Имеют они такое свойство появляться в жизни вдруг, и это приятно.

Не скажу, что все в этой книге мне было понятно, ибо опыта в некоторых сферах практически не имею. Тем не менее, читал запоем и был в восторге. Главное же замечательное свойство этой и подобных книг - это чувство вдохновения, способность пробудить желание творить и быть лучше.

В этом посте хочу привести 70 пунктов, которые полезно знать людям, так или иначе связавшим свою жизнь с программированием. Хотя, если присмотреться внимательно, то многие из них отлично применимы и в других профессиональных областях. Если вы хотите делать свое дело хорошо, то ознакомиться не помешает, это точно. Планирую посвятить этой книге еще один-два поста, в которых будут уже менее упорядоченные вытащенные из текста умности, полезности и прочее.

Специально для тех, кто до конца точно не дочитает, а до сюда все-таки дошел, помещаю эту информацию здесь и рекомендую посетить следующие две ссылки:

  • The Pragmatic Programmer Quick Reference Guide - по этому адресу вы найдете те же подсказки, но на оригинальном (английском) языке, причем с комментариями; а после этого еще некоторые вещи, аналоги некоторых из которых вы найдете в следующих постах об этой книге.
  • The Programmer's Bill of Rights - несомненно один из достойнейших постов Джеффа Этвуда с любомого мной http://www.codinghorror.com/. И да, я действительно считаю, что этот биль о правах должен соблюдаться.:)
Подсказки:
  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. Ставьте вашу подпись под работой.
Надеюсь, вам понравилось. :) Если это действительно так, рекомендуйте этот блог друзьям и знакомым - не исключено, что им тоже понравится. Подписывайтесь на обновления через rss, читайте книги, улыбайтесь, не только чтобы раздражать.

Интерпретация опубликованных в данном блоге материалов как всегда доверяется внимательным читателям.

0 comments:

Post a Comment