Именно тогда я осознал ценность git branch и git merge: они позволяют создавать экспериментальные копии своей программы, а затем вносить изменения. Если копия заработала, вы можете сохранить изменения в оригинале. В случае ошибки вы просто удаляете экспериментальную ветвь, не теряя всей предыдущей работы.
Программирование — сложный процесс, и существует миллион возможностей сделать ошибку. Компьютер ничего не прощает и не выполняет неправильно сформулированные команды. Точно так же легко пропустить какие-нибудь мелочи, что приведет к непредсказуемым результатам. Я долго бился над ошибкой во фрагменте, связанном с сохранением пустых записей в базе данных, которые появлялись в списке страниц.
При каждом просмотре возникали фиктивные страницы, и я никак не мог понять, откуда они берутся. В конечном итоге выявилась ошибка в маршруте «показать все»: я использовал некорректную команду для извлечения записей из базы данных.
Каждая моя ошибка меня чему-нибудь учила. В этом заключается одно из скрытых преимуществ программирования. Компьютер — самый быстрый из всех возможных типов обратной связи. Когда вы что-то делаете неправильно, то мгновенно узнаете об этом. А когда правильно, то мгновенно видите результат. Если вам удастся побороть желание швырнуть компьютер в стену, то мгновенная обратная связь может превратить программирование в весьма увлекательное занятие.
В начале этого эксперимента я совсем не умел писать программы. Теперь умею. Потребовалось потратить определенное время, чтобы сделать коды послушными, а также проявить упорство или выполнить кое-какие исследования, если я заходил в тупик.
Что же я приобрел, потратив столько сил? Очень много. Я узнал, что такое программирование, как оно выглядит и какая от него польза. Я научился с нуля создавать интернет-приложения на языке Ruby, а затем размещать их на рабочих серверах. Я познакомился с Sinatra, Heroku, Jekyll, DataMapper, Rake и другими универсальными инструментами, с помощью которых могу разрабатывать новые приложения. Я научился находить ошибки в программе и устранять их.
Применение метода
Давайте кратко опишем суть метода, который я использовал для обучения программированию.
● Я потратил время на получение общих представлений о программировании и интернет-приложениях, затем разбил эти навыки на более простые элементы, которые проще понять и которым легче научиться.
● Я определил целевой уровень мастерства, выбрав два конкретных проекта, а затем описал, как будет выглядеть конечный результат в каждом из них.
● Я разбил эти проекты на более мелкие этапы, а затем выделил из них самые значимые.
● Я убедился, что у меня есть все необходимые для работы инструменты (например, последняя версия Ruby) и что я смогу найти любые дополнительные инструменты, которые мне потребуются.
● Я нашел несколько надежных источников информации о программировании, но не стал читать заранее приобретенные учебные пособия, а решил сразу приступить к решению реальной задачи.
● Сначала я работал над самыми важными элементами, например выяснил, как протестировать программу на своем компьютере, как разместить готовое приложение на рабочем сервере и тому подобное.
● Я использовал примеры из справочных пособий, чтобы приступить к делу и приобрести некоторую уверенность, затем пробовал разные подходы, выясняя, как запрограммировать нужные мне функции.
● Если я что-то делал неправильно, программа прекращала работу, выдавая мне сообщение об ошибке, что обеспечивало быструю обратную связь.
● Сделав ошибку, я пробовал несколько способов ее исправления. Если я не мог решить проблему самостоятельно, то обращался за помощью.
● Я продолжал придерживаться подхода «кодирование/тестирование/отладка» до тех пор, пока программы не были окончательно готовы.
Общее время составило около 20 часов. 10 часов заняли исследования, а оставшиеся 10 — создание двух приложений, которые в данный момент закончены и используются.
Планы на будущее
Завершив эти два начальных проекта, я продолжил писать интернет-приложения, сосредоточившись на программах, которые могли облегчить мне ведение бизнеса.
Теперь я с гордостью могу заявить: весь мой бизнес использует программное обеспечение, созданное мной самим. Мои приложения способны принимать оплату с кредитных карт, оформлять подписку, отправлять письма по электронной почте и управлять доступом клиентов к интернет-сайту. Научившись программировать, я стал владельцем собственной маленькой армии роботов, выполняющих мои приказы.
Сколько времени у меня ушло на создание всех этих программ? Приблизительно 90 часов, включая те 20, которые подробно описаны в этой главе.
А вот еще дополнительное преимущество: когда я сталкиваюсь с каким-то повторяющимся или скучным аспектом своего бизнеса, то начинаю думать в терминах программирования. Как будет работать программа, решающая эту проблему? В большинстве случаев это помогает систематизировать процесс, что значительно облегчает мне жизнь.
Борис Александрович Тураев , Борис Георгиевич Деревенский , Елена Качур , Мария Павловна Згурская , Энтони Холмс
Культурология / Зарубежная образовательная литература, зарубежная прикладная, научно-популярная литература / История / Детская познавательная и развивающая литература / Словари, справочники / Образование и наука / Словари и Энциклопедии