Как стать автором
Обновить

Как на самом деле стать программистом

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров6.8K

По многочисленным просьбам. Скорее всего описанное ниже не обрадует, поскольку сильно отличается от популярной картинки «успешного успеха» и «вкатывания в ИТ за пару месяцев». Зато это правда и следуя таким рекомендациям у вас действительно получится стать программистом. Если выживете.

Вводная

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

Весь «обслуживающий персонал» в виде менеджеров, аналитиков и тестировщиков с девопсами сегодня идут мимо. Со всем уважением к их сложным профессиям — дело делают не они.

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

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

«No pain, no gain» (ц) Джейсон Стетхем.

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

Еще описанное основано на личном опыте, как-то так я и учился.

Необходимые жертвы

Начнем с самого сложного и жестокого:

Вам нужен минимум один год чистого времени, без каких-либо отвлечений. Вообще и совсем.

Все прекрасно понимаю: «дом‑жена‑дети‑служба‑учеба‑ипотека», все это слышал, неоднократно. Но оно вот так и по‑другому не бывает — у всего есть цена.

Не можете себе позволить?

Не готовы?

Тогда дальше можете не читать, дальше будет еще жесче:

помимо траты самого драгоценного ресурса — вашего времени, еще нужно получить две самых редких вещи в современном мире: тишину и покой.

Нужно сделать так, чтобы вас целый год никто не отрывал от процесса обучения. И сделать это в 21 веке будет невероятно тяжело.

Нет, места заключения не подойдут — там компьютеры запрещены.

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

Под полным запретом на весь год:

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

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

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

У вас должны сформироваться нейронные связи в мозгу, отвечающие за «связное изложение мысли в виде кода».

Да да, именно так это и просходит: программисты действительно не просто «чего‑то там пишут в редакторе», а выражают мысли с помощью кода.

Чем вы должны заниматься:

вы не читаете новости, не сидите на форумах, не участвуете в интернет-дискуссиях, не делитесь прогрессом обучения, не смотрите сериалы и котиков — вы пишите код, учитесь писать код, скачиваете примеры кода и гуглите решения проблем со сборкой этого кода.

Интернет должен быть либо медленный и плохой либо вообще отключенный — самый идеальный вариант.

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

Не рассуждает о том как он пишет код, не смотрит видео, где кто‑то другой пишет код, не учит других писать код и не ставит задачи как писать код.

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

Что будет если вы например попробуете постоять рядом с художником и указывать ему как рисовать? — Получите по лицу мольбертом, как минимум.

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

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

Что и как учить

Считаю самый разумный выбор в качестве первого языка это Java.

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

Объясняю почему.

C# и .NET привяжет вас к Windows и надолго, еще и неотвратимо повредит мозг особенностями разработки под эту платформу: «недокументированные» функции, хаки, костыли и подпорки, а также реалии большого коммерческого софта. Сразу и с самого начала это точно не надо, успеете потом насладиться на работе.

Node.js, Javascript/Typescript и все веб‑технологии вообще — отдалят понимание внутренних процессов и принципов разработки. Не сможете мыслить как инженер, потому что нельзя изучать асинхронное программирование без основ многопоточности, а многопоточность — без основ самого программирования.

Python — в настоящее время этот язык стал слишком узкоспециализированным и чаще всего применяется для работы с нейросетями, Big Data, AI и подобными научными вещами. Начнете с него — утонете в прикладной информатике, причем без особых перспектив, поскольку одного года на нейросети не хватит никак.

Так что нужна именно Java.

Единственное что Java от вас скроет это работа с памятью, но для современной разработки это не очень важно. Второй хороший вариант это C++ (по тем же причинам), но будет чуть сложнее и дольше в изучении.

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

Процесс обучения

Самое главное:

вы должны непрерывно и постоянно писать код, не отвлекаясь.

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

Вы надо делать два типа задач:

  • Примеры из книг и упражения

  • Тестовые доработки открытого ПО

И делать это надо непрерывно.

Примеры из книг и упражения

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

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

Так что «прочитать от корки до корки» — не про техническую литературу.

Если только это не божественный SICP, который я все же настоятельно рекомендую читать целиком и с молитвой.

Если владеете английским — ищите сразу оригинал на английском, не тратьте время на перевод.

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

Найти их можно вот таким запросом в поисковых системах:

github "название книги" code samples

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

Тестовые доработки открытого ПО

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

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

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

Для примера можно взять:

Apache Netbeans — универсальная среда разработки на Java,

Eclipse Jetty — сервлет‑контейнер,

JBoss Wildfly — сервер приложений.

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

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

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

Ковыряние всех этих проектов, плюс примеры из книг — по 10 часов в день в течение года дадут нужный кумулятивный эффект и начальное понимание профессии.

Менторство, ютуб и онлайн-курсы

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

Большинство конечно все равно где‑то когда‑то учились, кто‑то заканчивал и получал диплом о высшем образовании, кто‑то бросал. У некоторых не было даже законченного ПТУ, а у пары особо ярких деятелей — лишь 8 классов школы и коридор.

И все это никак не мешало им хорошо работать.

У самого автора достаточно редкая ситуация для тех лет — профильное высшее образование, в дипломе от 2005го года так и написано: инженер-программист.

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

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

Резюмируя, есть важная особенность профессии программиста:

необходимость учиться самостоятельно и постоянно.

Напрямую связанная с тем самым навыком «изложения мысли в виде кода», который я описал выше.

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

Практические знания?

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

Закрепление и результат

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

самое главное что должен выработаться навык выражения мысли с помощью кода — ключевой для любого программиста.

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

Это нормально, поскольку программирование действительно не для всех.

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

А дисциплина (если вы вдруг не знали) — царица любых достижений и побед.

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

P.S.

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

Теги:
Хабы:
Всего голосов 30: ↑20 и ↓10+18
Комментарии295

Публикации

Ближайшие события