# Как стать программистом с нуля

Александр Ваньков

Книга в простой форме отвечает на вопрос: как стать разработчиком ПО, не имея для этого навыков и соответствующего образования? Сегодня много книг повествует об обучении конкретному языку программирования или технологии, но здесь читатель найдет такое руководство, которое объясняет, что именно делать, чтобы стать IT-специалистом (прежде всего разработчиком) с нуля на любом из языков программирования. Книга не является справочником по конкретному языку программирования, это не учебник по алгоритмам, это книга о методах и инструментах перехода к IT-профессии.

## Предисловие. О чем эта книга

Как же все-таки им стать? Если говорить в двух словах – то … в двух словах не объяснить. За этим и пришлось написать книгу, требуется чуть больше слов. Итак, давайте по порядку.

Сегодня в книжных магазинах и в интернете Вы встретите огромное количество книг по отдельным языкам программирования, IT-технологиям, различным методам организации работы, и так далее.

Однако почти нет или очень мало таких книг, которые подскажут в ясном и простом виде – что же именно делать, то есть за что, как говорится, «хвататься» для обозначенной цели. Ведь объем информации по теме, количество видов языков программирования, фреймворков (наборов готовых решений для разработки), просто зашкаливает. Не говоря уж о том, что среди моря этой информации полно откровенно устаревшего материала и обычного мусора. Вы знали, что некоторые языки программирования созданы лишь ради прикола? Сейчас не будем вдаваться в примеры. Давайте лучше перейдем к тому, что Вы сможете узнать из этой книги.

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

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

Книга написана простым и понятным для непрофессионала языком. Один их минусов попыток узнать методы у Ваших друзей и знакомых программистов, с которым Вы могли столкнуться (но не обязательно) – это то, что они не готовы внятно что-то объяснять. Они оценивают все уже с их точки зрения, мало кто из них переобучался, вероятно они были программистами «изначально», то есть с вуза.

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

Все это возможно с полного нуля, даже если у вас нет ни копейки денег, и вы совсем не понимаете в разработке. Было бы желание.


Как же так, спросите вы? Если я не математик, например, а гуманитарий, совсем не понимаю в этих фреймворках и технологиях, как я могу стать программистом?

И здесь расскажу Вам одну занимательную историю, которую когда-то нашел на просторах интернета.


В одном городе жил бомж, который сидел на улице, а мимо него регулярно проходил разработчик. И в один прекрасный день, разработчику пришла мысль: поставить эксперимент. Что если дать бомжу ноутбук, объяснить ему где находятся уроки для изучения программирования, и даже платить ему маленькую сумму денег или давать еды, чтобы этим мотивировать его обучаться. Подумано – сделано. Программист договорился с бомжом, что даст ему ноутбук, а тот будет учиться программировать, за что будет получать некоторое минимальное содержание на жизнь. И учеба пошла! Бомж научился программировать и даже разместил разработанное им приложение, если не ошибаюсь, в Google Play – магазине приложений для Android, и у этого приложения даже были пользователи. То есть, эксперимент был успешным.

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

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

То есть даже бомж смог начать программировать. Что уж говорить о том человеке, который читает эту книгу. Вы точно сможете!


Мы еще вернемся к вопросу о возможностях и требованиях в главе 2. А пока давайте вспомним еще одну интересную вещь.


Представьте, что вы точно знаете что нужно делать для успешного достижения той или иной цели. При чем вы этого реально хотите и понимаете какой успех достижение этой цели принесет. Будете ли вы это делать? Конечно, что за вопрос.

В фильме «Области тьмы» (английское название – “Limitless”) главный герой вдруг, однажды, съев некую таблетку, стал обладать выдающимися сверхспособностями: его мозг работал с невероятной скоростью и он принимал верные решения для достижения успеха. Так и здесь, только конечно, с нашими обычными способностями. У вас есть мозг – и это все что вам для начала надо. А если серьезно, то поговорим об этом в главе 2.


Какова структура данной книги?

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

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

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

Главы с четвертой по пятую дают уже детальный обзор отдельных вариантов, со ссылками на конкретные источники знаний и способов начала карьеры. От совсем экстремальных до таких, которые позволят совмещать текущую деятельность с новым для себя направлением – IT (айти – информационные технологии).

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


В какой последовательности читать книгу? Рекомендую прочитать эту книгу от корки до корки, но как читать – это Ваш выбор и тут Вы полностью свободны. Это лишь рекомендация.

## Глава 1. Зачем это нужно

Как уже было сказано, возможно, это уже очевидно для Вас. Сегодня везде и всюду говорят о цифровизации, нужности внедрения информационных технологий, и так далее. Но что это (программирование) дает лично Вам? Разобьем этот вопрос на несколько составляющих.


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

Очень важно, чтобы в жизни было какое-то дело, занятие. Многие пытаются «найти себя», понять что им действительно нужно в жизни. Но данная книга не об этом. Предполагается, что Вам понятно чего Вы хотите – быть разработчиком. Иначе, зачем Вы держите в руках эту книгу (или электронную книгу, или еще какой цифровой девайс, на котором читаете данную книгу).


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


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


В-четвертых, из востребованности на рынке труда вытекают и другие плюсы помимо высокой зарплаты. Это различные удобства, которые создают IT-компании для разработчиков.

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

А кто хочет работать дома, или в путешествии, или еще откуда угодно, где есть связь, то и этот вариант возможен. Называется – удаленка (удаленная работа). Конечно, сидеть на солнцепеке на пляже с ноутбуком не получится (это фантастика:), потому что не удобно – такое бывает только в картинках из интернета. Но на балконе в номере комфортабельного отеля – вполне. Или в своем загородном доме. А может быть и прямо на ходу в каком-нибудь аэропорту.


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


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

## Глава 2. Реально ли мне стать разработчиком

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


Что же надо иметь в материальном плане для обучения программированию и начала работы.

Самая нужная и, по сути, единственная вещь, которая требуется – это машина :). Имеется в виду электронно-вычислительная машина, которой является персональный компьютер или ноутбук. Планшет или смартфон для этой цели не подойдут. Хотя, какую-то элементарную учебу можно начинать на планшете, полноценно работать на нем не удобно. Обязательно нужна физическая клавиатура, полноценная операционная система, такая как Windows, macOS, Linux. Для разработки не требуется самый современный ноутбук или компьютер. Однако он не должен быть еле живым десятилетней давности. Возьмите для себя нормальный рабочий инструмент – Вам должно быть комфортно работать за Вашим цифровым устройством (ноутбуком или компьютером). Если у Вас его нет, то придется купить. Такой средней мощности ноутбук или компьютер достаточен для начала. Важно чтобы у него был нормальный центральный процессор, достаточный объем памяти для повседневной работы.


Однако если Вы собрались заниматься разработкой игр или приложений с 3D-графикой, виртуальной или дополненной реальности, то без мощной видеокарты не обойтись. А это уже довольно дорогое устройство (хотя смотря для кого, и с чем сравнивать…).

Наконец, в отношении компьютерного оборудования сделаем еще одну оговорку. Возвращаясь в прошлое, да и к опыту других людей, мной было замечено, что лучшие свои IT-проекты удавалось и удается делать с какими-то малопригодными средствами: далеко не новая компьютерная техника, в гаражах, и тому подобное. Как начинались компании-гиганты современной IT-индустрии, Apple, Amazon? Именно так. Потому что «железо», то есть техника, это не самое важное. Что же надо еще? Читаем далее.


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

Лишь при переходе в какие-то сложные проекты, где требуются весьма специфические продвинутые программные инструменты и возможности, Вам понадобятся профессиональные версии продуктов для разработки или отдельные платные фреймворки. Но, скорее всего, их будет оплачивать работодатель. Либо Ваша зарплата будет такой, что их стоимость не будет для Вас иметь существенного значения. Да и к тому времени Вы уже купите себе самый «наворочанный» MacBook Pro.


Далее, нужен доступ в интернет. Желательно нормальный скоростной канал доступа, то есть проводной интернет, безлимитный. 50 мегабит в секунду будет вполне достаточно, или можете выбрать более скоростной тариф. Можно работать и в сети 4G, но тогда пакет трафика должен быть реально большим или безлимитным, а скорость доступа в месте Вашего нахождения комфортной для скачивания сред разработки, обучающих материалов, видеоконтента и прочего. Такие пакеты стоят значительно дороже проводного интернета.

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


Теперь коротко обсудим гораздо более важную составляющую вашего становления как разработчика – сознательную, или психологическую. Ноутбук может у Вас быть, и все остальное в техническом плане. А вот станете ли Вы программистом – зависит в основном от Ваших действий, которые, в свою очередь, контролируются сознанием. Бывает, сложно начать такую длительную учебу, кто-то может бесконечно прокрастинировать, откладывать занятия или «забивать» на них временами или надолго.

Эта книга не претендует на то, чтобы научить Вас организовывать себя, свою эффективность и развивать энергичность. По этой теме существует невероятное множество книг. Скажем лишь в двух словах: надо заниматься физкультурой, правильно питаться, нужен здоровый сон, крепкие социальные связи и другие подобные факторы. Если они еще отсутствуют в Вашей жизни, самое время их внедрять. Точнее внедрять их – всегда самое время, если их нет. Так что, начинаем все менять и перестраивать.


Что же об образовании? Нужно знать математику в совершенстве? Здесь скажем, что вначале достаточно знать простые арифметические действия – это знают все. А остальная математика подтянется вместе с началом изучения, по ходу изучения, с началом работы и по ходу работы. Более того, все что преподают в обычных учебных заведениях (прежде всего – школах), это настолько неудобно и непонятно, что усвоить это реально сложно. На самом деле все становится понятно лишь когда понимаешь цель: для чего нужны те или иные вычисления и уравнения, формулы и прочее. В программировании как раз есть понимание этих целей, а значит, сознание не ощущает какой-то бессмысленности и оторванности, и даже не воспринимает расчеты как нечто абстрактное. Все становится логичным и понятным.

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


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

Здесь есть несколько нюансов.

Несмотря на всю доступность и ясность пути, доступность ресурсов для освоения специальности, требуется немало времени и сил, усидчивости и дисциплины.

Кроме того, многие просто не знают о том, что сегодня куда перспективнее быть программистом, чем каким-нибудь юристом или экономистом. Несмотря на то, что государство делает для развития IT немало. Возможно от отсутствия опыта, возможно от непонимания профессии, люди массово не становятся программистами.

Но хотелось бы. На сегодня это одно из самых перспективных направлений профессионального развития и карьеры.

## Глава 3. Что делать: варианты и первые шаги

Теперь начнем разбирать самый важный вопрос: что делать для становления разработчиком?

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

Стоп, неужели надо обязательно куда-то перемещаться или платить за обучение? Вовсе не обязательно! Перечисленные условия не создают непреодолимых препятствий для изучения программирования. Есть бесплатные способы, есть платные. В зависимости от исходных условий всего лишь будет обозначен подходящий Вам путь. Но прежде следует сделать две оговорки.