Светлана Шаповалова, коммерческий автор и переводчик, адаптировала статью Andy B — бывшего международного журналиста, ставшего увлеченным разработчиком, с советами для тех, кто решил стать программистом.
Ботан — это не про вас. В детстве вы не получали по математике сплошные пятерки, а в 14 лет не схватились за паяльник, скрываясь за пайкой микросхем от ненавистной школьной жизни. Скорее всего, всё это время вы занимались чем-то совершенно иным и считали, что неплохо устроились. Ровно до того момента, пока выбор профессии не стал казаться бессмысленным: и неважно, сами вы так решили, или общество на вас надавило.
По крайней мере, так произошло со мной. Я журналист-международник с 15-летним опытом. Много путешествовал, шесть лет провел в Европе, возглавляя новостные отделы в Брюсселе и Париже. Новости, кстати, часто глупы и не нужны. А российские в особенности. Но мы сегодня не о них, а о программировании.
Чарльз Буковски хорошо сказал: «Если это не исходит само по себе из вашей души и из вашего разума, если этого не требует ваш внутренний голос — не делайте этого».
Эта фраза произнесена в контексте писательства aka литературы. Я бы не кидался в начинающих кодеров подобными фразами. Тем не менее, пришло время признать, что девиз программистских курсов ушел в противоположную крайность: «Кодить может каждый».
Технически это верно: условные конструкции можно объяснить подросткам, а студенты легко освоят принципы ООП (объектно-ориентированного программирования).
Однако это совершенно не значит, что кодить надо всем подряд. Более того, это также не значит, что код, написанный «всеми подряд» вообще кому-либо когда-либо понадобится.
Лично мой путь в программировании начался два года назад с курса «Python» в одной из онлайн-платформ, и книги Learn Python the Hard Way. Мое же посвящение в Ruby/Rails произошло в чудном лагере программирования в Париже.
После сотен часов, проведенных в попытках разобраться с заданиями и наконец-то начать кодить что-то свое, я понял вот что…
HTML и CSS — это не языки программирования
Сорри, гайз. Это действительно так. Аббревиатура «ML», стоящая сразу за «HT», означает буквально «язык разметки», а буква «S» посредине «CSS» расшифровывается как «стиль» и относится к внешнему виду. Они практически ничего общего не имеют с логикой приложений.
Начиная свое обучение с них, вы тратите время. Скорее всего вам никогда не понадобится чистый HTML. Лично я в основном использую ERB (ERB — разновидность реализации eRuby, языка разметки на языке Ruby, прим. переводчика). CSS без использования пре-процессоров — сущая пытка. Вы всему научитесь в свое время, никаких сложностей здесь нет.
Не пугайтесь С
Да, язык программирования С появился более 40 лет назад. Уже один этот факт выносит мозг и заставляет задуматься, а надо ли лезть в такие дебри? В тоже время, один из самых известных Гарвардских курсов по программированию для новичков, CS50, почти весь на С — и он великолепен. Книга K&R, также известная как «Язык программирования Си» — это Хемингуэй среди технической литературы (англ. The C Programming Language — книга Брайана Кернигана и Денниса Ритчи, классический учебник по языку). Читать её — сплошное удовольствие.
С научит вас мыслить как программист еще до того, как вы напишете свой первый код.
И хотя на чистом С сложно написать что-то толковое, вы научитесь понимать саму суть процесса. Изучение указателей — ключ к пониманию вопросов вроде «в чем разница между передачей параметров по значению и передачей параметров по ссылке». В самом начале карьеры это сохранит вам кучу времени и убережет от разочарований во время отладки. Да, кодить на С непросто, но очень полезно.
Одна и та же программа, которая возвращает заданную строку с использованием указателей С (слева) и реализованная на Python (справа).
JavaScript — удовольствие для извращенца (не путать с Java)
Весело ли было строить Вавилонскую башню? Если считаете, что да, то JavaScript вам определенно понравится. В нем никак не получается прийти к однозначной трактовке без инструмента, который угадайте как называется? Babel.
Вокруг вас время время будут возникать взаимно исключающие комментарии экспертов: начиная с создания объекта и заканчивая правильным использованием скобок. Здесь нет общего гида по стилю, а JS-сообщество готово спорить по любому вопросу. Строка «Знаю JavaScript» в резюме может означать что угодно: от знакомства с парочкой методов jQuery до умения создать полноценную серверную часть на NodeJS.
JavaScript вездесущ и многолик. От него не скрыться: JS — единственный язык, на котором работают все популярные браузеры.
Придется учиться получать от него удовольствие, и советую начинать прямо сейчас. К тому же, если вы еще не успели пройти пару уроков С, синтаксис JavaScript не покажется вам таким уж нестройным, каким мог бы.
JavaScript: Лучшее и всё остальное
Счастье — в Python и Ruby
Ruby создан на радость программистам — как вам такое?
«Одна из главных жизненных целей, как по мне, — это наслаждение. Многие программисты чувствуют удовлетворение, концентрируясь на творческой стороне своей работы, поэтому Ruby создан, чтобы делать разработчиков счастливее» Юкихиро Мацумото.
Чем слабее типизация, тем проще начинающему программисту писать код, и тем интуитивнее осваивается объектно-ориентированная природа обоих языков. Есть массив (в Python — «список») значений. Надо их как-то возвратить. Можно ли обозвать это действие Array.reverse? Обалдеть, сработало. И Ruby, и Python часто напоминают упрощенный английский. Дайте волю интуиции и просто тестируете любую пришедшую в голову идею.
Создатель Ruby Юкихиро Мацумото и создатель Rails Давид Хейнемейер Ханссон, он же DHH, вместе радуются жизни
Будьте любознательны. Курите мануал, б**дь!
С сегодняшнего дня ваши лучшие друзья — Google и StackOverflow.
Программирование, оно больше о решении проблем, чем о зазубривании кода. Если знаете примерный вид решения — считайте, половина работы готова. Однако прежде чем напрямую расспрашивать людей, убедитесь, что изучили всю доступную документацию. Документация — ваша личная Библия. А если вдруг вас пошлют курить мануал или учить матчасть, то вы уже знаете, что это значит.
Научитесь правильно использовать git и GitHub
Git может сбить с толку. Мы используем «check out» и для создания ветки, и для отмены последних изменений в файле. Тем не менее, ни одна разработка не обходится без контроля версий, поэтому Github — это программистский Twitter, Facebook и Instagram в одном флаконе.
Совместная работа над проектами — это демонстрация либо ваших способностей, либо их отсутствия.
Существует куча качественных туториалов — изучите для начала хотя бы несколько команд. Главное, не забывайте использовать «git add. && git commit -m» всякий раз, когда довольны результатом.
Приготовьтесь чувствовать себя дураком
Застрять над кодом — это как испытать писательский блок.
Новички частенько подолгу сидят над простыми программами: часы, а иногда и дни. Сложно не ощутить себя умственно отсталым, когда кто-то легко решает твою проблему в паре строк кода, да еще и с чувством собственного превосходства вместо ободрения. Ничего, это норма для носителей высокого IQ. Смиритесь. Не должно быть никаких эмоций в коде — примите этот факт.
Научитесь переносить отказы
HR не пишут код.
Но HR неплохо разбираются в числах: если вы начали кодить всего пару лет назад, скажу честно — вы мало кому интересны. У меня целая коллекция писем с отказами. Обычно их отправляют хорошенькие девочки с формулировкой «К сожалению, нам требуется более опытный специалист». Некоторые из них даже добавляют сожалеющий смайлик, хотя от этого не легче.
Код — это текст. Делайте его читабельным
Вы же не будете писать любовное или деловое письмо как попало: с кучей строк на весь экран и без единого отступа. Компьютерные языки созданы для людей, а не машин — машинам и с двоичным кодом неплохо.
Создавая читабельный код, вы облегчите жизнь себе и окружающим. Это такая форма уважительного отношения.
Но важнее всего то, что все эти усилия понадобятся вам же самому в будущем.
Понять, как именно работает собственный код, написанный несколькими неделями ранее — задача сложнее, чем кажется. Python в этом плане чудесен: он просто не заработает без правильных отступов. С-кодеры, напротив, будут запутывать код и писать поэмы, лишь бы впечатлить друг друга. Не надо повторять за ними, особенно если не столь уверены в себе.
И наконец У вас все получится!
То чувство, когда только что написанная строка кода работает — бесценно
У всех свои маленькие радости в программировании. Моя — в преодолении препятствий. Когда в голову приходит совершенно безумная мысль, но вы её тестируете, и о чудо! все работает. На это интеллектуальное удовольствие подсаживаешься.
К тому же, таких приятных моментов больше при использовании интерпретируемых языков программирования вроде Ruby и Python: когда можно просто открыть REPL в новом терминале и быстро проверить любую догадку.
Здесь я, пожалуй, закончу. Вам и так достаточно информации к размышлению.
Действуйте! И не пугайтесь, если скоро вам начнет сниться код 🙂