...

понедельник, 17 февраля 2014 г.

[Перевод] Ты не хочешь думать как программист

От переводчика:




Я технический руководитель Букмейта. Самое важное для меня — собрать таких парней, с которыми мне не придется выступать постоянными переводчиком с бизнеса на программистский. Жизнь слишком коротка для этого.

Эту статью скинул мне Леша Гусев — человек, у которого я многому научился и продолжаю учится каждый рабочий день. Спасибо тебе, Леша!

Он скинул ссылку в скайп со словами «ого, чувак написал мой манифест».

И я с ним совершенно согласен.

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


Ведь на самом деле вы не хотите думать как программист.


Всё начинается с малого, когда вы учитесь первым good coding practices. Никогда не используй глобальные переменные — упаковывай все данные в объекты. Пиши геттеры и сеттеры для того, чтобы скрыть внутреннее представление данных. Используй const, где это только возможно. Только одно объявление класса на файл, пожалуйста. Форматируй исходный текст так, чтобы его было удобно читать и понимать другим. Удели время на расстановку знаков равенства так, чтобы получились красивыe, аккуратные столбцы.


Со временем это перерастает в мышление в паттернах программирования и цитировании «Совершенного кода». Все эти ничего не понимающие люди хотят, чтобы вы добавили фичи, которые трудно впилить в вашу прекрасную архитектуру. Они что, не понимают, что сложность — это враг? Вы приходите к осознанию, что каждый раз, когда полезная программа написана на Перле или PHP — это позор для всей computer science. Лисп — вот правильный путь, и его стоит использовать, даже если у вас нет доступа к большинству библиотек, делающих Питон таким необходимым инструментом. Однажды вы начинаете доказывать, что статическая типизация лучше динамической, и проповедовать TDD, — вот тогда все пропало.


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


Я часто вижу, как люди пытаются научиться делать что-то (сайты, компьютерные игры или, например, писать песни), просто успешно завершая проект за проектом каждый день/неделю/месяц. Я обожаю этот способ! Он абсолютно прямой, захватывающий и вдохновляющий. Это прекрасный путь обучения! Первые проекты — они все про получение чего-то (чего угодно) рабочего. Далее следует переработка знакомых вещей. Написать змейку, например. Или тетрис.


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


И неожиданно вы поймете, как кодить.


P.S. Перевод под редакцией Владимира Харитонова


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий