Что делать и как дальше развиваться

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

План урока

  1. Что бывает в мире, кроме Ruby?
  2. Куда развиваться программисту
  3. Как развиваться дальше, как изучать новые языки и технологии

Направления разработки

Направо пойдёшь...

Мир IT-технологий богат и разнообразен: от создания домашних страниц до программирования процессоров космических кораблей.

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

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

Веб-разработка

HTML и многое другое ...

Или, говоря простым языком, создание сайтов. Любых размеров и сложности, любых их частей, любых этапов работы над ними. От домашних страничек ваших друзей, до громаднейших распределённых социальных сетей типа Твиттера. Это направление сейчас, наверное, самое популярное.

Веб-разработчиков принято делить на две группы: фронтендеры и бэкендеры. Есть, безусловно, люди, которые занимаются всем сразу (так называемые, веб-разработчики полного цикла, по-англиский, Full Stack Web Developer), но они просто умеют делать и фронтенд и бэкенд.

Фронтендеры занимаются той частью сайтов, которую видят непосредственно пользователи. Для разработки фронтенда неизбежно используется язык разметки страниц HTML, язык стилей CSS, с помощью которого разработчики придают сайтам тот вид, который мы наблюдаем, и язык сценариев, выполняемых на страницах сайтов JavaScript.

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

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

Бэкендеры занимаются разработкой той части сайта, которая работает на серверах и не видна напрямую пользователю. Скорость работы сайта или сервиса во многом зависит от того, насколько хороший у проекта бэкенд. Как правило, бэкенд делают на одном из этих языков: ruby, java, python, php, c#. Но в отличие от языков, используемых для фронтенда, используется какой-то один (реже два или больше) языков.

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

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

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

Игры

Четыре геймдева за работой

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

Мобильные игры — это, собственно, те игрушки, в которые рубятся люди, когда едут в метро или тупят в очередях. Многопользовательские РПГ-шки или простенькие казуалки. Для андройдов игры пишут на Java, реже на C++, для айфонов — на Objective-C и Swift.

Браузерные игры — игры, в которые можно играть, не выходя из браузера: их полно в контакте, одноклассниках и в фейсбуке. Их тоже чертовски много: весёлые фермы и растения против зомби. Ну, вы знаете. В основном такие игры пишут на Flash, но в последнее время, с развитием связки HTML+CSS+JavaScript, появляются игрушки, которые используют только эти веб технологии.

Десктопные игры — серьёзные игры, для которых нужно скачивать клиент и устанавливать их на своём компьютере. Все самые крутые новинки, 3D-шутеры, WoW и так далее. Разрабатываются долго и основательно, пишутся в основном на C++ с использованием большого количества библиотек и движков, например, Unity.

Чаще всего (особенно если игра многопользовательская) у игры есть сервер, который обменивается информацией с приложением игрока. Сервера, как и в вебдеве, разрабатываются на языках java, с++, ruby, python, php с использованием всевозможных баз данных: mysql, postgresql и т. д.

Мобильные приложения

С молниеносным увеличением количества мобильных устройств, дичайшую популярность набирает мобильная разработка. Причём, хороших разработчиков в этой области сейчас катастрофически не хватает. Вряд ли в ближайшие 10-20 лет люди откажутся от использования смартфонов, поэтому это тоже крайне перспективное направление.

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

Технологии примерно те же, что и в мобильных играх:

Для мобильных устройств, использующих iOS, для айфонов, айпедов пишут на Swift.

Для устройств на Android — на Java и реже, когда приложение глубоко затрагивает работу с железом — на C++.

Энтерпрайз приложения

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

Как правило, энтерпрайз приложения пишутся на языке Java или платформе .net. Чаще всего используются программируемые модульные ERP-системы, а программисты дописывают или переписывают отдельные модули для таких систем.

Сюда же можно отнести и ERP-систему 1C.

Корпоративные приложения очень тесно связаны с базами данных: Oracle, Microsoft SQL Server и другими. Так что с базами данных нужно будет хорошенько подружиться.

Научные приложения

Всё вышеперечисленное можно считать игрой в бирюльки по сравнению с темой для настоящих исследователей этого сложного мира. Если вы всегда хотели стать учёным и (быть может) даже закончили какой-нибудь ВУЗ по специальности, но кандидатскую защищать не стали и научных статей у вас нет, вы всё ещё можете прикоснуться к миру прекрасного, занимаясь разработкой программ для учёных.

Big Bang Theory

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

Программы для науки пишут в основном на Питоне, Фортране или C.

Используются также специальные пакеты типа Matlab и Wolfram Mathematica и другие.

Очень популярен язык для статистической обработки данных R.

Программы для роботов

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

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

Роботов программируют в основном на низкоуровневых языках, подобных C или даже Ассемблеру.

Если вы хотите попробовать себя в этой области, не обязательно начинать с них: вы можете начать с простых учебных платформ типа Arduino или Raspberry Pi.

Стиль жизни

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

Большинство программистов можно отнести к одной из этих категорий:

Сотрудник в офисе

Вы приходите в офис, получаете задачи, выполняете их и получаете зарплату. Все довольно понятно и предсказуемо.

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

Сотрудник на удалёнке

Всё тоже самое, только в офис вы не приходите. Задания получаются/сдаются по скайпу или электронной почте. Как правило зарплата удалённых сотрудников меньше, чем сотрудников в офисе (но это не значит, что сотрудники на удалёнке получают мало).

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

Фрилансер

Если сотрудник на удалёнке работает в компании постоянно, то для фрилансера каждый заказ от конкретного заказчика может стать последним. Зато заказчиков может быть очень много.

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

Инди-разработчик

Это человек, который сам написал какую-то полезную программку (а может и не одну) и сам зарабатывает на ней. Например, долгое время именно так существовало приложение Punto Switcher. Пользователи могут платить или в обязательном порядке (покупка программы или встроенные покупки) или в виде пожертвований на сайте разработчика.

Стартап

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

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

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

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

Как выбрать направление?

Действительно, как?

Если вкратце, то сердцем. Ни в коем случае не беритесь за то направление, которое вам неприятно, но кажется самым «денежным». Во-первых, ситуация на рынке может поменяться очень быстро, а во-вторых, вы можете просто ошибиться. Сколько мы знаем разработчиков, каждый считает самым денежным направлением — своё.

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

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

Возможно, вам в этом поможет тот листик, на котором вы в первом уроке базового блока писали ответ на вопрос «Зачем я хочу научиться программировать?»

По-нашему мнению сейчас особенно актуальны и бурно развиваются веб-разработка и мобильная разработка, но это наше мнение. У вас должно формироваться свое!

Как развиваться?

Непрерывно становитесь лучше

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

Можете посмотреть туториалы, статьи или лекции по конкретным направлениям, просто ищите в google и вы обязательно найдёте нужные вам материалы. Помните, всё уже написано до вас и для вас.

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

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

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

В материалах урока мы приложили ряд полезных для развития книжек и ряд интересных курсов по разным направлениям.

В добрый путь

Напоследок хочется пожелать удачи.

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

Оставляйте отзывы и пишите о ваших успехах. До новых встреч! Программируйте хорошо! :)