Чтение онлайн

ЖАНРЫ

Первые 20 часов. Как быстро научиться… чему угодно
Шрифт:

Помните, я говорил, что до конца не понимаю, для чего нужен git? Оказывается, вот для чего: если вы редактируете файлы и программа вылетает, то найти причину бывает не так просто. В такой ситуации спасением становится возможность отката к предыдущей, рабочей версии. В противном случае есть опасность запаниковать.

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

Именно тогда я осознал ценность git branch и git merge: они позволяют создавать экспериментальные копии своей программы, а затем вносить изменения. Если копия заработала,

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

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

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

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

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

Что же я приобрел, потратив столько сил? Очень много. Я узнал, что такое программирование, как оно выглядит и какая от него польза. Я научился с нуля создавать интернет-приложения на языке Ruby, а затем размещать их на рабочих серверах. Я познакомился с Sinatra, Heroku, Jekyll, DataMapper, Rake и другими универсальными инструментами, с помощью которых могу разрабатывать новые приложения. Я научился находить ошибки в программе и устранять их.

Применение метода

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

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

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

Я разбил эти проекты на более мелкие этапы, а затем выделил из них самые значимые.

Я убедился, что у меня есть все необходимые для работы инструменты (например, последняя версия Ruby) и что я смогу найти любые дополнительные инструменты, которые мне потребуются.

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

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

Я использовал примеры из справочных пособий, чтобы приступить к делу и

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

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

Сделав ошибку, я пробовал несколько способов ее исправления. Если я не мог решить проблему самостоятельно, то обращался за помощью.

Я продолжал придерживаться подхода «кодирование/тестирование/отладка» до тех пор, пока программы не были окончательно готовы.

Общее время составило около 20 часов. 10 часов заняли исследования, а оставшиеся 10 — создание двух приложений, которые в данный момент закончены и используются.

Планы на будущее

Завершив эти два начальных проекта, я продолжил писать интернет-приложения, сосредоточившись на программах, которые могли облегчить мне ведение бизнеса.

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

Сколько времени у меня ушло на создание всех этих программ? Приблизительно 90 часов, включая те 20, которые подробно описаны в этой главе.

А вот еще дополнительное преимущество: когда я сталкиваюсь с каким-то повторяющимся или скучным аспектом своего бизнеса, то начинаю думать в терминах программирования. Как будет работать программа, решающая эту проблему? В большинстве случаев это помогает систематизировать процесс, что значительно облегчает мне жизнь.

Кроме того, я научился некоторым новым трюкам, например настраивать свой компьютер, чтобы ускорить процесс программирования. Я запомнил комбинации «горячих клавиш» текстового редактора, позволяющие сэкономить время, а также обновил программу Terminal до iTerm2 и Z-Shell, чтобы немного облегчить программирование.

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

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

Я сражался с компьютером и победил.

6

Печать слепым методом

Урок: старые привычки не обязательно живучи

Хорошее дело стоит того, чтобы сначала помучиться.

Рей Конгдон

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

А что происходит, когда вы осваиваете новый навык, а ваш мозг восстает против этого?

Можно привести поистине драматические примеры переучивания. Известно, что знаменитый гольфист Тайгер Вудс трижды менял свой свинг (удар), уже достаточно эффективный [1]. Иногда стоит научиться делать нечто важное по-новому, еще лучше — даже если это приведет к кратковременной неэффективности и раздражению.

Поделиться с друзьями: