15 серпня 2015 р.

Какие уловки и хитрости вы узнали самостоятельно за годы кодинга

Повторяйте. Последовательное усовершенствование — это то, как мы доберёмся до великого кода и великих результатов.

Проще, как правило, лучше. Посмотрите «Простое делается легко» Рича Хикки и почитайте "Правила простоты экстремального программирования" Кента Бека.

Не умничайте. Не пытайтесь написать сложный код, чтобы показать, насколько вы умны. Пишите простые, ясные, многоразовые коды. Думайте про простоту, ясность, общность. Прочитайте "Практику программирования" Брайана Кернигана и Роба Пайка. Если зашла речь о Брайане Кернигане, прочитайте также «Язык программирования С» Брайана Кернигана и Денниса Ритчи.

SRP (single responsibility principle — единый принцип ответственности) и DRY (don't repeat yourself — не повторяйте себя). Эти принципы проходят долгий путь на пути к чистому коду. Прочитайте «Чистый код»Дядюшки Боба Мартина (Роберт С. Мартин).

Вам не понадобится нуждаться в этом (YAGNI — you ain't gonna need it). Этот принцип применяется в большинстве случаев. В общем, просто проектируйте по современным требованиям, чтобы предотвратить нерациональное проектное решение. Необходимо сказать, что иногда проектирование необходимо для будущего роста. Существует баланс — и его поиск зависит от вас.

Код, в котором очевидно нет ошибок, безмерно лучше кода, в котором нет очевидных ошибок.

Способность рассуждать о своём коде имеет первостепенное значение для высокого качества.

Требования редко бывают высечены на камне. Как на инженере/программисте, на вас лежит ответственность прояснять вещи, которые кажутся неясными и вызывают сомнения и вопросы. Иногда, когда людям не нравятся вопросы, вам нужно задавать вопросы более пристально, хотя, возможно, с большей осторожностью. (Взято у Брайана Келли)

Начните с того, почему. Посмотрите лекцию Саймона Синека "Как великие лидеры вдохновляют на действия".

Клиенты не знают, чего они хотят, и сюда же относится ваш менеджер. Ваша работа выявить их истинные потребности.

Несмотря на тот процесс, который вы выполняете, начальное проектирование всё же потребуется, оно должно быть пропорционально сложности. Прочитайте «Проблемно-ориентированное проектирование» Эрика Эванса.

Шаблоны проектирования используются не так много, как вы думаете. Важно признавать общие закономерности. Не обращайтесь с образцами как молоток, который ищет гвоздь. Прочитайте «Рефракторинг с использованием шаблонов» Джошуа Кериевски. Прочитайте ответ Стивена Гримма на вопрос, какие наиболее важные шаблоны проектирования нужно знать разработчикам программного обеспечения, чтобы работать в Google, Amazon и Facebook?.

Принципы SOLID (Single Responsibility Principle, Open/Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, Dependency Inversion Principle) намного важнее, чем шаблоны проектирования: принцип единственной ответственности, принцип открытости/закрытости, принцип постановки Лисков, принцип разделения интерфейса, принцип инверсии зависимостей. Прочитайте статью Дядюшки Боба«Принципы объективно ориентированного дизайна».

Остерегайтесь догм. Обычно существует больше одного способа делать что-либо. Термином «наилучшая практика» злоупотребляют. Есть несколько хороших практик в разработке программного обеспечения, но будьте осторожны, когда вам говорят, что какой-то способ «лучше».

Никто не может знать всё. Некоторые знают чуть больше, чем другие. Всегда старайтесь быть худшим членом команды. Прочитайте «Программиста-фанатика» Чада Фаулера.

Посмотрите доклад Барбары Лисков «Сила абстракции».

Нет такого понятия, как идеальный. Вы всегда можете быть лучше. «Лучшее — враг хорошего» (Вольтер).

Если вы проектируете не для масштабируемости, ваш код не будет масштабироваться. Если вы проектируете не безопасности, ваш код не будет безопасным. то же самое относится ко всем -ость.

Вы не ваш код. Критика вашего кода не есть критика вас.

Не замыкайтесь. Охотно делитесь незаконченной работой с другими. Прочитайте «Динамику разработки программного обеспечения» Джима Маккартни.

Проверяйте свою работу. Попробуйте сначала написать тестовую работу, а потом код. Попробуйте разработку через тестирование. Попробуйте введение в программирование через поведение. Прочитайте «Эффективную работу с унаследованным кодом» Майкла Фиверса.

Изучайте различные парадигмы. Объектно-ориентированное программирование (ОПП), функциональное и т.д. Ваш объектно-ориентированный код станет лучше после изучения такие функциональных языков, как Haskell и Lisp.

Посмотрите «Основную идею OOPSLA 97» Алана Кея, «Компьютерная революция, которая ещё не произошла».

Никогда не переставайте учиться. Читайте так много книг, как вы можете, но не только техническую литературу. Прочитайте «Дзен и искусство ухода за мотоциклом» Роберта М. Пирсига.

Прочитайте «Программиста-прагматик» Энди Ханта и Дэйва Томаса.

Прочитайте «Совершенный код 2» Стива Макконнелла.

Прочитайте SICP (Структура и интерпретация компьютерных программ) Гарольда Абельсона, Джеральда Джея Сассмана и Джули Сассман. Читайте это не просто от корки до корки. Следуйте вместе со схемой окружающей среды (например, ракетки) и на самом деле пишите код.

Не спрашивайте разрешения, чтобы переделывать, тестировать, документировать и т.д. Это всё часть "программирования". Не спрашивайте разрешения, чтобы делать вашу работу.

Заботьтесь о своей работе. Заботьтесь о своих клиентах. Код, который мы пишем, позволяет пользователям нашего кода получить их ерунду в готовом виде, без нашего программного обеспечения всё становится на свои места.

Постоянно задавайте себе вопрос, «в чём заключается проблема, которую я пытаюсь решить?»

В общем, старайтесь одновременно решать одну проблему. Если вы заметили другие проблемы, запишите их и вернитесь к ним позже.

Будьте там, где вы находитесь. Это урок жизни, который относится к разработке программного обеспечения. Когда вы подписываетесь на какую-то работу, сосредоточьтесь на ней. Когда вы моете посуду, сосредоточьтесь на мытье посуды, — забудьте обо всех тех вещах, которые напрягали вас весь день. Если вы проводите время со своей семьёй, будьте там, — выключите телефон, забудьте о той сложной проблеме, с которой вы боролись. Когда вы на какой-то встрече или принимаете участие в чём-либо — сосредоточьтесь на разговоре и забудьте о работе, которую на вас свалили. Прочитайте «Сознание дзен, сознание начинающего» Сюнрю Судзуки.

Протокол парольной аутентификации (SRP) имеет более широкое применение, чем просто написание кода.

«Преждевременная оптимизация есть корень всех зол» Дональд Кнут. Начните с грубого вынужденного алгоритма, пока вы не найдёте повод, чтобы изменить это.

Задайте вопрос «какая самая простая вещь может быть эффективной?» Прочитайте «Экстремальное программирование» Кента Бека. По общему мнению, первая версия экстремальнее второй.

Будьте в согласии с самим собой. Вы никогда не будете знать всё — это невозможно. Продолжайте учиться, но не застревайте на том, что вы не знаете. Посмотрите доклад Кента Бека «Простота в работе».

Будьте скромны. Все находятся на разных этапах обучения и карьерного роста. Помогайте другим на их пути. Обращайтесь за помощью, когда она вам нужна. Отдавайте обществу. Посмотрите доклад Леона Герсинга «Правда, миф и реальность в разработке программного обеспечения».

Нормально находиться на среднем уровне — Прочитайте статью «В честь разработчика среднего уровня — почему миф о программистах 10х столь разрушителен» Мэтта Асэя. Мэтт Асэй ссылается на основную мысль Якоба Каплана-Мосса на PyCon 2015.

Многозадачность — это иллюзия. Компьютерам она удаётся, потому что они способны на очень быстрое переключение контекста (большую часть времени). Переключение контекста для нас, простых смертных, имеет высокую цену. Делайте одно дело за раз и делайте его хорошо.

9 женщин не могут родить ребёнка за месяц. Прочитайте «Мифический человеко-месяц» Фреда Брукса.


Перевод: Анна Кучерявая

     6108       Автор - Джером Террі

Залиште коментар


Коментарі

 Barnypok          01.04.2017 3:11:23

e5zUsQ http://www.LnAJ7K8QSpkiStk3sLL0hQP6MO2wQ8gO.com

 gordon          31.01.2017 21:50:21

4wRaYc http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

 matt          29.01.2017 19:53:20

ewknG8 http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

 chaba          29.01.2017 19:47:50

lV8nQg http://www.y7YwKx7Pm6OnyJvolbcwrWdoEnRF29pb.com

 Barnypok          04.01.2017 7:15:17

iLXIue http://www.FyLitCl7Pf7ojQdDUOLQOuaxTXbj5iNG.com

Copyright © 2014-2017 <b&r Corp/>