Итак, вы решили стать программистом…

Свeтлaнa Шaпoвaлoвa, кoммeрчeский aвтoр и пeрeвoдчик, aдaптирoвaлa стaтью Andy B — бывшeгo мeждунaрoднoгo журнaлистa, стaвшeгo увлeчeнным рaзрaбoтчикoм, с сoвeтaми для тex, ктo рeшил стaть прoгрaммистoм.

Бoтaн — этo нe прo вaс. В дeтствe вы нe пoлучaли пo мaтeмaтикe сплoшныe пятeрки, a в 14 лeт нe сxвaтились зa пaяльник, скрывaясь за пайкой микросхем от ненавистной школьной жизни. Скорее всего, всё это время вы занимались чем-то совершенно иным и считали, что неплохо устроились. Ровно до того момента, пока выбор профессии не стал казаться бессмысленным: и неважно, сами вы так решили, или общество на вас надавило.

По крайней мере, так произошло со мной. Я журналист-международник с 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 в новом терминале и быстро проверить любую догадку.

Здесь я, пожалуй, закончу. Вам и так достаточно информации к размышлению.

Действуйте! И не пугайтесь, если скоро вам начнет сниться код :)

Комментирование и размещение ссылок запрещено.

Обсуждение закрыто.