Это подробная и основательная статья о том, как стать программистом. Я расскажу о популярных сегодня языках; о том, что нужно знать чтобы стать программистом; о том, с чего нужно начинать изучение программирования и какой язык программирования затем выбрать.
У меня получилась длинная статья, настоящее руководство для начинающих программистов. Я попытался раскрыть все аспекты, связанные с освоением новой профессии программиста с нуля.
Вот план по которому я вас сегодня поведу:
1 Плюсы в том чтобы быть программистом
- 4 причины стать программистом
2 Языки программирования
- Краткая история языков программирования
- Самые популярные в 2021 году языки программирования
- С какого языка программирования стоит начать изучение
- Пишем простые программы на разных языках программирования прямо в браузере
3 Что нужно знать чтобы стать программистом?
- 3 черты, присущие настоящему программисту
4 Как стать программистом?
- Самостоятельное изучение языка программирования
- Изучение языка программирования на курсах
- Каким программистом стать?
5 Основные трудности, с которыми сталкиваются программисты в процессе работы
- Работа в чужом коде
- Трудности работы в больших и запутанных системах
- Как избежать трудностей в работе программиста
1. Плюсы в том чтобы быть программистом
Давайтея кратко перечислю плюсы, которые вижу в профессии программиста.
4 причины чтобы стать программистом:
- Высокая зарплата. Это, наверное, самый заманчивый плюс. Сегодня многие наслышаны о зарплатах программиста. Многие в моем окружении зарабатывают 20 - 30 тыс. в месяц. Это считается хорошей зарплатой. Ведь некоторые зарабатывают и того меньше. А программисты часто зарабатывают более 100 тыс.руб/мес.
- Свобода. Стать программистом также стоит ради свободы. Кроме работы по найму, вы всегда можете работать на себя. Это может быть поначалу подработка, а затем и основная деятельность. Т.е. став программистом, вы в перспективе можете стать свободным человеком, который работает сам на себя и у которого нет начальства.
- Творческая самореализация. Мало в какой профессии есть столько простора для творчества и свободы самовыражения. Вы сами решаете, какие инструменты использовать, как писать код, как проектировать систему. Если вы займетесь разработкой мобильных приложений, вы сможете проектировать самостоятельно дизайн вашего будущего приложения.
- Возможность разбогатеть. Я не скажу, что все программисты богатеют, но потенциальная возможность у них есть. Программист может создать мобильное приложение и разместить его в GooglePlay, а наутро обнаружить миллион скачиваний. Программист может сделать с сайт, который станет популярным и принесет своему создателю большие деньги.
Думаю я замотивировал вас изучать программирование!? Так чего же мы ждем? Пора выяснить, как стать программистом!
Кстати в конце статьи в пункте 5 я расскажу вам о трудностях и сложностях с которыми сталкиваются программисты в процессе работы и дам советы, как с ними бороться.
2. Языки программирования
После того, как человек решает стать программистом, он задается вопросом "Какой язык программирования изучать?". Какой язык программирования сейчас самый модный и востребованный, а какие уже устарели, какой язык программирования легкий, а какой тяжелый?
Все эти три вопроса крутятся вокруг языков программирования. Поэтому нужно в них разобраться, чтобы иметь общее представление.
1.1 Краткая история языков программирования
На самом деле это могла бы быть тема для отдельного поста, уж очень она обширна и интересна. Но постараюсь быть максимально краток.
1950 - 1959
В этот период появились первые языки программирования, которые, как ни странно, используются и по сей день.
Fortran используют физики, чтобы решать уравнения, так же его используют для прогнозирования погоды.
COBOL - это язык программирования бизнес-приложений (современный аналог 1С). Его используют некоторые банки и по сей день.
1960 - 1969
В этом десятилетии создавались языки, в которые пытались заложить функционал для решения любых задач от сложных вычислений до бизнес приложений (скрещивали Fortran с Коболом).
PL/1. Язык с громким названием Program Language 1 (язык программирования номер 1). Это первый язык, который был создан для решения абсолютно всех задач. Он был настолько сложен, что не было создано ни одного компилятора, который бы поддерживал все его функции.
Algol 68. Второй супер-язык. Компилятор для него создали, но и он долго не просуществовал.
Basic. Этот язык в следующем десятилетии был установлен на все персональные компьютеры. Затем его стали широко использовать для обучения программированию. На нем программируют и по сей день, но редко.
1970 - 1979
В 70-х были созданы два языка программирования, которые очень сильно повлияли на индустрию программирования.
Pascal. Никлаус Вирт создает язык программирования Pascal взяв за основу Algol 68 и очень сильно обрезав его и оставив только самые необходимые языковые конструкции. Этот язык, а так же его потомки: Modula 2, Delphi станут основными языками для решения прикладных задач на несколько десятилетий. Сейчас редко используется.
C. Этот язык был сконструирован для задач системного программирования. На нем писали и пишут по сей день операционные системы, а также программы, в которых важна высокая производительность.
1980 - 1989
Стало модно использовать объектно-ориентированное программирование.
Smalltalk. Первый полностью объектно-ориентированный язык. Сейчас не используется.
C++. Это дальнейшее развитие языка C. В него добавили функции для программирования в объектно-ориентированном стиле. Этот язык широко используется по сей день.
1990 - 1999
На рубеже тысячелетия появляются 4 языка, которые очень популярны и по сей день. А так же 1С, очень популярный в России.
Python. Этот язык сегодня очень популярен. Он очень прост, поэтому его часто советую использовать для обучения программированию. Используется в веб-разработке, а также в задачах машинного обучения.
Java. Наверное, самый популярный сегодня язык для разработки кросплатформенных приложений т.е. таких приложений, которые работают на любой машине, где есть установленная виртуальная машина Java. Она как и Smalltalk, полностью объектно ориентированная.
PHP. Это самый популярный и самый широко используемый в мире язык программирования для веб-разработки. Большинство сайтов в интернете работают на PHP.
Javascript. Этот язык сначала использовался для того, чтобы сделать веб-страницы анимированными, а теперь используется во многих сферах. Очень популярен сегодня.
1С. Это внутренний язык программирования платформы 1С. Используется для создания бизнес-приложений для автоматизации предприятий. Сегодня очень популярный в России.
2000 - 2010
Появляются новые языки, которые становятся клонами более старых языков и создаются они с целью исправить недостатки старых популярных языков.
C Sharp. Это ответ Microsoft на Java. Они создали свой полностью объекто-ориентированный язык программирования. Очень популярен сегодня.
Go. Попытка компании Google создать замену языку программирования C++. Это очень популярный сегодня компилируемый язык программирования.
2010 - 2019
Создаются новые языки программирования, на базе более старых языков с целью улучшить недостатки последних.
Rust. Это экспериментальный язык, созданный как еще одна попытка сделать улучшенную версию языка программирования C++.
Kotlin. Попытка создать более простую и более логичную версию языка Java. Работает на той же виртуальной машине Java.
Swift. Это язык программирования компании Apple. Используется для разработки приложений для iOS.
Julia. Этот язык программирования создан для программирования сложных математических вычислений. Создан, чтобы стать альтернативой устаревшему языку Fortran.
1.2 Самые популярные в 2021 году языки программирования
Как видите из нашей истории: языков программирования очень много. При этом я перечислил только самые известные и значимые, существенно повлиявшие на индустрию программирования.
Давайте теперь сконцентрируемся на самых популярных на сегодня языках программирования. Перечислим те языки, которые стоит изучать в 2021 году, чтобы получить востребованную и высокооплачиваемую работу.
Чтобы составить рейтинг популярности языков программирования в России, мы поступим вот как: за основу возьмем авторитетный мировой рейтинг языков программирования и по каждому языку посмотрим количество вакансий на hh.ru в России.
Индекс Tiobe на 2021 год:
А теперь добавим данные по востребованности языков в России по данным количества опубликованных вакансий на сайте hh.ru на начало 2021 года.
- C - 8000 вакансий.
- Java - 8100 вакансии.
- Python - 6400 вакансий
- C++ - 4000 вакансий
- C Sharp - 5000 вакансий
- Visual Basic - 207 вакансий
- JavaScript - 12 400 вакансий
- PHP - 5700 вакансий
- Assembly language - 184 вакансии
- Go - 2000 вакансий
- Delphi (Pascal) - 800 вакансий
- Groovy - 363 вакансии
- Ruby - 786 вакансий
- Perl - 362 вакансии
- MATLAB - 334 вакансии
- Swift - 1300 вакансий
- Objective-C - 760 вакансий
- 1С - 9700 вакансий
Из рейтинга я удалил SQL т.к. это не совсем язык программирования, это язык для управления базами данных. Помимо основного языка, вам скорее всего, придется использовать этот язык, когда вы будете составлять запросы к базе данных.
Также я добавил в рейтинг язык программирования 1С, который не очень популярен в мире, но очень популярен в России.
Сейчас с учетом вакансий на Российском рынке рейтинг 10 самых популярных языков будет выглядеть так:
- JavaScript - 12 400 вакансий
- 1С - 9700 вакансий
- Java - 8100 вакансий
- C - 8000 вакансий.
- Python - 6400 вакансий
- PHP - 5700 вакансий
- C Sharp - 5000 вакансий
- C++ - 4000 вакансий
- Go - 2000 вакансий
- Swift - 1300 вакансий
Вот эти 10 языков программирования и стоит выбирать для того,чтобы получить востребованную профессию в России.
1.3 С какого языка программирования стоит начать изучение
Мне кажется, для начала изучения языков программирования стоит выбрать простой язык. Даже если вы хотите стать системным программистом и писать операционные системы, то не стоит сразу начинать изучать C++ т.к. по мере погружения в теорию языка вы можете сломаться и забросить вообще ваше желание стать программистом.
Изучение программирования стоит начинать со следующих языков:
- Scratch - это язык для начала обучения программированию. Именно его используют для обучения программированию детей младших классов. Он максимально прост т.к. языковые конструкции вам не нужно запоминать и писать - вы их просто перетаскиваете мышкой.
- Python - этот язык был специально создан, чтобы сделать работу программиста более удобной за счет удобочитаемости программного кода.
- 1С - это упрощенный язык программирования, который используется внутри платформы 1С. Язык максимально прост и программирование ведется на русском языке.
- PHP - этот язык следует выбрать для изучения, если вы планируете стать веб-программистом.
- JavaScript - еще один простой язык программирования. Вам достаточно блокнота, что бы за 1 час написать простую игру на этом языке и запустить ее в браузере.
1.4 Пишем простые программы на разных языках программирования прямо в браузере
Попробуйте прямо сейчас один из этих языков в действии.
1. Перейдите на сайт Scratch и создайте свою первую программу прямо в браузере. Там есть переключатель на русский язык (символ глобуса слева наверху). Что бы запустить, жмем зеленый флажок.
2. Перейдите на официальный сайт Python и напишите свой первый скрипт прямо в браузере.
3. Перейдите на сайт https://www.onlinegdb.com/ и попробуйте вообще любой язык программирования прямо в браузере. Вот, например, я накидал решение квадратного уравнения на Fortran.
2. Что нужно знать что бы стать программистом?
Программист - профессия высокооплачиваемая и многие хотят стать программистами. Но при этом это профессия сложная, связанная со множеством непонятных терминов и вообще с кучей всего непонятного. Это многих и пугает. По этому возникает желание разобраться и выяснить, что нужно,чтобы стать программистом?
Поэтому еще в самом начале пути нужно попытаться понять, сможете ли вы освоить эту профессию или нет. Я долго думал над этим пунктом статьи и составил свой список необходимых качеств, которые должны быть у успешного программиста. У меня 10 лет стаж в программировании и я много работал вместе с другими программистами бок о бок в сложных проектах. Я попытался собрать самые яркие качества успешных программистов в этом списке.
3 черты настоящего программиста:
Хорошие знания математики. Я не стану утверждать, что математические знания понадобятся в программировании. Нет, там не нужно знать дроби, тригонометрию и интегралы. Просто людям с математическим складом ума обычно легче дается программирование. Но при этом я знал несколько хороших программистов гуманитариев.
Нетерпимость беспорядка. Это тоже весьма спорный пункт, однако я часто замечал такое качество. Вот например лично я человек неряшливый и меня часто за это ругает жена. Но она не видела мой программный код. Он до маниакальности аккуратен. И если мне приходится работать с чужим кодом, я испытываю просто почти физические муки от того как он не аккуратен и криво спроектирован. Очень часто я просто садился и полностью переписывал какую нибудь функцию так, как мне надо.
Умение держать в голове сложные схемы. Программирование часто ведется в команде и программный продукт состоит из множества взаимосвязанных подсистем, которые пишут разные люди. Со временем программа обрастает таким клубком хитросплетенных связок, что становится страшно вносить изменения т.к. не знаешь к каким последствиям приведет вмешательство в эту запутанную систему. Так вот, в процессе работы я часто работал с такими системами и держал в голове все подсистемы и связи между ними. В процессе поиска ошибки я мысленно мог бродить по всем закоулкам программы. Но что интересно, я не могу удержать в голове карту улиц города, по которому езжу на машине уже 10 лет.
3. Как стать программистом?
У меня часто спрашивали: "Как стать программистом с нуля?"и я всегда уточнял каким программистом хочет стать человек. Чтобы стать программистом, нужно сначала определиться со специализацией: вы хотите быть веб-программистом и делать сайты или автоматизировать производственные компании. Далее, вам нужно выбрать подходящий язык программирования и изучить его.
Стать программистом можно двумя путями: или изучить нужный вам язык программирования самостоятельно, или пройти обучение на курсах. Ниже мы подробно разберем оба этих варианта, а затем поговорим о специализации.
3.1 Самостоятельное изучение языка программирования
Если вы уверенно можете сказать себе:"Хочу стать программистом", то вполне возможно, вы сможете изучить программирование самостоятельно!
Любой язык программирования можно изучить самостоятельно при наличии свободного времени. В интернете можно скачать книги, найти видеоуроки по любому популярному языку программирования.
Но тут есть один неприятный момент. Вам может попасться не очень удачная книга или вы отыщете не очень хороший бесплатный курс, которые вас сходу напугают кучей непонятных терминов. Такое часто случается с новичками и они забрасывают свои попытки изучить язык самостоятельно.
Чтобы такого не было, я дам вам план, которого стоит придерживаться при самостоятельном изучении языка программирования.
1. Выбирайте один из простых языков о которых я говорил выше для начала изучения: Python, JavaScrypt, 1С, PHP.
2. Если используете веб программирование, используйте популярный фреймворк, а не пишите движок сайта с нуля. Например, для Python это Django, для PHP это laravel или Yii 2.
3. Прочтите книгу "Алгоритмы и структуры данных" Никлауса Вирта, создателя языка Pascal. Потому что это основа программирования.
3.2 Изучение программирования на курсах
Курсов по программированию сегодня очень много. Заплатив деньги, можно пойти по заранее продуманной дороге и шаг за шагом изучить нужную специальность или нужный язык программирования. На этом пути у вас будет постоянная связь с наставником, которому можно будет задавать вопросы.
Я рекомендую использовать известные онлайн-школы,которые уже давно появились на российском рынке онлайн образования. Я бы рекомендовал три такие онлайн школы: SkillBox, Netology, GeekBrains. У них есть хорошие курсы про программированию.
Курсы хороши тем, что помогают организоваться. Вы уже не сможете пропустить урок, как если бы обучались самостоятельно. Вы должны будете регулярно получать новые знания и применять их на практике. Затем вы будете делать домашнее задание и задавать возникающие вопросы вашему преподавателю.
Я сам по образованию учитель, хотя и работаю с 2008 года программистом. И я считаю, что он-лайн курсы - это хороший способ за короткий срок получить новую профессию и стать программистом. Если у вас много времени и вопрос получения новой профессии не стоит столь остро, то вы можете попробовать обучиться сначала самостоятельно.
3.3 Каким программистом стать?
Программирование сегодня используется во многих сферах. Давайте перечислю самые популярные направления, а вы подумайте - что вам по душе. Нужно понимать, где используется сегодня программирование, чтобы понять каким программистом стать.
Разработка бизнес-программ. Это очень востребованная сфера, ведь каждый бизнес нуждается в автоматизации: начиная с мелких ИП с маленьким магазином продуктов, заканчивая крупными холдингами. В России самыми популярными программами для бизнеса являются программы компании 1С. Это "1С:Бухгалтерия", "1С:Управление торговлей", "1С:ERP", "1С:Управление холдингом" и сотни других отраслевых решений.
Веб разработка. Это создание сайтов по требованиям заказчика. Можно разрабатывать сайты компаний, блоги, интернет-магазины. Для веб-разработки сейчас чаще всего используют PHP и Python для программирования бэкэнда. И JavaScript для программирования фронтенда.
- Рекомендую курс "Профессия веб-разработчик" от SkillBox.
Разработка мобильных приложений. Это весьма перспективное направление программирования. Освоив разработку мобильных приложений, вы сможете найти хорошую работу, а так же у вас есть шанс разработать хорошее мобильное приложение и заработать деньги разместив его в GooglePlay и AppStor.
- Рекомендую курс "Профессия Android-разработчик" от SkillBox.
5 Основные трудности, с которыми сталкиваются программисты в процессе работы
Работа программиста очень заманчива, но я, как опытный программист, должен рассказать вам о трудностях, с которыми вам предстоит столкнуться, а также о приемах борьбы с ними.
Работа в чужом коде
Программисты проектируют и пишут системы с нуля. Но так бывает не всегда. Очень часто приходится сопровождать и дорабатывать уже действующие системы. Такой код называют Легаси кодом.
Трудность связана с тем, что большие программные комплексы постоянно дописывают в процессе сопровождения. Делают это разные программисты с разным уровнем квалификации. Код более умных программистом бывает трудно понять, код более глупых программистов напрягает своей непродуманностью.
Трудности работы в больших и запутанных системах
Многие программные комплексы содержат множество подсистем и объектов. Эти объекты взаимодействуют друг с другом и если все спроектирвано хорошо, то подсистемы и объекты живут как самостоятельные сущности, которые способны обмениваться с другими частями системы путем посыла сообщений. Это идельная система и ради такой системы придумали когда-то ООП. Но на деле таких идеальных систем не бывает.
Реально работающие программные комплексы содержат тысячи строк кода, над ними трудятся десятки и сотни программистов. Документация в таких системах может содержать множество томов.
Программисту постоянно приходится работать в сложных системах. Это основная трудность работы программиста. Некоторые системы по числу объектов и их взаимосвязей напоминают организм человека или военный истребитель.
Как избежать трудностей в работе программиста
Я вам посоветую борьбу со сложностью сразу поставить для себя как цель. Продумывайте архитектуру и не создавайте сами запутанных систем. Если вам предстоит работать с Легаси кодом, максимально изолируйтесь от него. Создайте подсистему рядом, которая будет взаимодействовать с Легаси кодом и вы всегда сможете понимать, где ваши владения, а где вражеский непонятный мир.
Я советую вам параллельно с изучением программированию почитать следующие книги:
Стив Макконнелл "Совершенный код". Это очень интересно написанная книга, содержащая множество рекомендаций программистам как писать понятный, не запутанный и легко сопровождаемый код. Кстати, книга не привязана ни к какому языку программирования. В ней содержатся общие советы, которые можно использовать в любом языке прграммирования.
Фредерик Брукс "Мифический человеко-месяц, или Как создаются программные системы". Эта старая книга, но в ней очень хорошо расписывается процесс создания сложных программных систем.
Итоги
Программист - это , безусловно интересная и престижная профессия. Благодаря наличию уроков в свободном доступе и онлайн-курсов, программистом может стать каждый человек, у кого есть к этому способности.
В этой статье я попытался максимально подробно рассказать о работе программиста и дать советы начинающим как стать программистом. Надеюсь, статья будет вам полезна. Если что-то было непонятно - спрашивайте у меня в комментариях.