От переводчика:
Я технический руководитель Букмейта. Самое важное для меня — собрать таких парней, с которыми мне не придется выступать постоянными переводчиком с бизнеса на программистский. Жизнь слишком коротка для этого.
Эту статью скинул мне Леша Гусев — человек, у которого я многому научился и продолжаю учится каждый рабочий день. Спасибо тебе, Леша!
Он скинул ссылку в скайп со словами «ого, чувак написал мой манифест».
И я с ним совершенно согласен.
Научить вас думать как программиста — часто вводные книги и курсы по программированию так обозначают свою цель. Конечно, это лучше, чем чересчур узкое «научить Java». Не стоит понимать это буквально. Более честной и точной формулировкой было бы «научить аналитически декомпозировать задачи». Но пусть эта начальная, кривая последовательность слов — «думать как программист» — послужит нам предостережением и напоминанием.
Ведь на самом деле вы не хотите думать как программист.
Всё начинается с малого, когда вы учитесь первым good coding practices. Никогда не используй глобальные переменные — упаковывай все данные в объекты. Пиши геттеры и сеттеры для того, чтобы скрыть внутреннее представление данных. Используй const, где это только возможно. Только одно объявление класса на файл, пожалуйста. Форматируй исходный текст так, чтобы его было удобно читать и понимать другим. Удели время на расстановку знаков равенства так, чтобы получились красивыe, аккуратные столбцы.
Со временем это перерастает в
Всё это не так уж плохо само по себе, но всё вместе это захватывает ваш разум. Вы должны быть без ума от предметной области, в которой работаете — как сделать игру без этих скучный тьюториалов, какой самый выразительный набор инструментов для фотоприложения, — а не от этих бесконечных «программистских» мыслей.
Я часто вижу, как люди пытаются научиться делать что-то (сайты, компьютерные игры или, например, писать песни), просто успешно завершая проект за проектом каждый день/неделю/месяц. Я обожаю этот способ! Он абсолютно прямой, захватывающий и вдохновляющий. Это прекрасный путь обучения! Первые проекты — они все про получение чего-то (чего угодно) рабочего. Далее следует переработка знакомых вещей. Написать змейку, например. Или тетрис.
Если вы уже отправились в подобное путешествие, то лучшим первым шагом будет исследование своих собственных идей. Не копируйте то, что было скопировано вашими предшественниками с тех, кто были до них. Экспериментируйте. Делайте безумные вещи. Реализуя лишь то, что было придумано раньше, вы делаете себя реализатором, инженером чужих идей, программистом. Используйте возможность заработать репутацию создателя нового.
И неожиданно вы поймете, как кодить.
P.S. Перевод под редакцией Владимира Харитонова
Автор: samat