Оттачиваем мастерство программирования | SmartMe University

Оттачиваем мастерство программирования | SmartMe University

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

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

Ниже приводятся советы о том, как эффективные программисты извлекают максимум из своих драгоценных 3e9 секунд на планете.

 

Время

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

По одной проблеме за раз . Мы так зациклены на эффективности, что уменьшаем количество циклов обратной связи в попытках сократить расходы. Это приводит к возникновению сложных ситуаций отладки, стоимость которых превышает затраты на циклы.

Сделайте так, чтобы все заработало, сделайте правильно, сделайте быстро . (Пример сочетания пунктов «По одной проблеме за раз», «Нарезки» и «Простых изменений»)

Простые изменения . Если вы сталкиваетесь с трудно реализуемым изменением, то вначале упростите его (предупреждаю сразу: сделать это не всегда просто!), а затем вносите простые изменения (например, по аналогии с «Нарезкой», «По одной проблеме за раз», «Концентрацией», «Изолированием»). Этот подпункт – пример «Нарезки».

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

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

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

 

Обучение

Назовите цель . До того, как запустить код, озвучьте вслух, что должно произойти.

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

Удаляйте лишнюю информацию . Если у вас выскакивает сообщение об ошибке, то найдите самый короткий путь воспроизведения некорректного поведения. Если вам нужно изолировать ошибку, то выберите наикратчайший тестовый пример. Если вы перешли на новый API, то начните с самого базового примера. Запомните главное правило на случай, если что-то не работает: «Все в программе не может быть одинаково важным».

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

 

Превосходная логика

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

Эстетичность . Красота – важный и труднодостижимый ингредиент в продукте. Но это еще и спорная составляющая, которой часто пренебрегают (например, добавляют множество функций в недоработанную и непонятную кашу).

Ритм . Ожидание подходящего момента помогает сохранять энергию и избегать хаоса. Когда приходит нужное время, всегда действуйте энергично.

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

 

Риск

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

Прикармливайте идеи . Идеи – они как маленькие испуганные птички. Стоит их напугать, и они улетят безвозвратно. Когда у вас появляется идея, то чуть-чуть прикормите ее. Как можно скорее освобождайтесь от своих идей, но делайте это от избытка данных, а не от недостатка самоуважения.

80/15/5 . Тратьте 80% своего времени на работу с низким уровнем риска и разумной отдачей. Тратьте 15% времени на работу, связанную с высоким риском и высокой отдачей. Тратьте 5% времени на интересные вам вещи, вне зависимости от процента их отдачи. Учите следующее поколение выполнять 80% вашей работы. К тому времени, как вам на смену придет кто-то другой, один из ваших 15% проектов (хотя иной раз это все-таки кто-то из 5%) окупится сполна и станет вашим новым 80%. Затем снова повторите.

 

Вывод

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