Какие основные направления существуют в современном программировании
В какой отрасли программирования можно добиться большего успеха и лучше зарабатывать на жизнь?
В какой отрасли программирования можно добиться большего успеха и лучше зарабатывать на жизнь?
- Ответы экспертов , 2 апреля 2015 в 15:50
Этот вопрос нам прислал студент третьего курса факультета информационных технологий и полностью он звучит так: “Учат всему понемногу и теперь остро встал вопрос: на чём программировать-то? Язык программирования не столь существенен, ибо можно разобраться во всем. Конкретно интересует следующее: в какой отрасли программирования можно добиться большего успеха и лучше зарабатывать на жизнь?”
Передаём слово экспертам.
Александр Горный , директор по информационным технологиям, руководитель департамента внутренней информационной разработки Mail.Ru Group
Андрей Зырянов , руководитель научно-исследовательской лаборатории Parallels Lab в МФТИ
Конечно, есть области разработки, которые представляют определенную «модную» тему. Сейчас это мобильные приложения, облачные вычисления, Big data. Какое-то время назад были мега-популярны игры. Однако это не самая правильная постановка вопроса, потому что технологии быстро меняются. Для того чтобы была перспектива роста, нужно иметь хорошую фундаментальную подготовку — хорошего знания языка и алгоритмов недостаточно. Поэтому следует подумать на счет стажировки в какой-то компании. При этом непременно нужно сочетать работу без ущерба для учебы. Обратите внимание на кафедры отдельно взятых компаний в своем вузе. У больших компаний, как Parallels, есть свои научно-исследовательские центры в МФТИ, Бауманке, Санкт-Петербургском Академическом Университете, РосНОУ, Новосибирском Государственном университете. Там создаются условия, даются исследовательские задачи, которые моделируют для студентов реальную работу в компании.
Владимир Юнев , Technology Evangelist в Microsoft. Докладчик IT-конференции «Стачка»
Больше всего зарабатывают мобильные приложения — стартапы, которые взлетают с крутой идеей.
Кирилл Калмыков , руководитель проектов в AT Consulting
Сейчас в нашем мире очень много всего связано с Интернетом, поэтому для хорошего заработка лучше выбрать какой-нибудь язык, позволяющий создавать web-приложения. Если конкретизировать, то Ruby + JavaScript. Ruby позволяет создавать приложения очень быстро, а в нашем динамически развивающимся мире это очень важно. Если ты можешь сделать приложение за несколько дней, это очень ценится. Не советую Java или PHP потому, что идеологии первого уже устарели, а второй — язык быдлокодеров и зашел в тупик в своем развитии. Рекомендую изучать Javascript, а еще лучше CoffeeScript (в случае использования Ruby): без них никакой динамики на фронтенде не будет, а значит ваше приложение будет уныло. Не советую учиться на Flash’еров — эта технология умирает.
Обязательно нужно учиться пользоваться фреймворками: для Ruby — это Ruby on Rails, для JavaScript — Angular.js или Ember.js (но ни в коем случае Backbone.js или Spring.js). Фреймворки позволяют лепить приложения не за дни, а за часы!
Вы точно не останетесь без работы и будете зарабатывать достаточно (чтобы, например, обеспечить семью), если начнете развиваться в этом направлении.
Еще одна, на мой взгляд, прибыльная отрасль — мобильные приложения. Думаю, не надо объяснять почему: смартфоны есть даже у бомжей. Но тут есть нюанс: если вы собираетесь писать сами какие-то приложения, то, скорее всего, много на этом не заработаете — для приложений всегда нужна качественная идея. Но тем не менее вы всегда сможете устроиться на работу и зарабатывать.
Также хочу посоветовать сосредоточится на разработке под Android. Устройств на этой платформе очень много, а Apple в последнее время не внушает перспектив для разработчиков под iOS. Но это мое субъективное мнение.
Вы точно не останетесь без работы, если будете двигаться в этом направлении, однако размер заработка будет зависеть от вас.
Также я советую обратить внимание на DevOps. Такие специалисты действительно много зарабатывают, но в институтах этому не учат. Подробно рассказывать о методологии не буду: если интересно, почитайте сами.
А теперь в какую сторону смотреть не советую:
- Повторюсь, это языки с устаревшей идеологией: Java, PHP и т. д. Работу вы найдете, но рано или поздно поймете, что нужно что-то менять. Так было со мной в 2007 г., когда я перешел с PHP на Ruby.
- Системные языки типа C или низкоуровневые языки. Причина проста: мало предложений, но если они есть, то платят там хорошо. Правда, я давно не мониторил тот рынок, могу ошибаться.
- Сверхновые модные языки: Erlang, Scala и т. д. Пока непонятно, займут ли они какую-нибудь свою нишу или нет. Представьте, что вы потратите силы на их изучение, а они уйдут.
Направления в программировании
На данный момент существует множество направлений в программировании. Каждый сможет найти занятие по душе, но для этого нужно знать, чем именно ты будешь заниматься в своей сфере.
Разработка web-приложений
Это направление ориентировано на разработку веб-приложений (проще говоря, сайтов, но в настоящее время сайты обладают таким богатым функционалом, что их можно назвать полноценными приложениями).
Web-программирование можно разделить на backend (написание серверных скриптов – PHP, Python, Ruby) и frontend (разработка юзерского интерфейса – Javascript, HTML, CSS).
Разработка desktop-приложений
Разработка программного обеспечения для различных операционных систем. Все разнообразие софта, что мы используем в повседневности. Хотите написать свой обработчик фотографий, аудио-плеер или текстовый редактор, тогда вам сюда.
Разработка серверных приложений
Это различные игровые сервера (ваша любимая Дотка, CS: GO), IM-сервисы (серверная часть Skype, ICQ, MSN), банковские базы данных.
Разработка мобильных приложений
Множество Java-приложений. VK, Viber, Яндекс.Карты, переводчики, электронные читалки.
Программирование встраиваемых систем
Интересная отрасль программирования для различной домашней техники: пылесосы, холодильники, стиральные машины, плееры, навигаторы, электронные весы. Здесь задействованы научные разработки с использованием специализированных языков, типа MATLAB.
Системное программирование
Написание различных драйверов для оборудования, программирования «ядра» операционных систем. Кстати, создание компиляторов и интерпретаторов для языков программирования относятся сюда же.
Разработка игр
Гигантская отрасль. Сюда включается разработка игр и для ПК, и для консолей, и для мобильный устройств.
Олимпиадное программирование и решение задач
Программирование на различных «непрактичных» и не распространенных языках (Pascal, Delphi) для решения каких-то оригинальных задач, требующих нестандартного подхода, смекалки и IQ выше 160.
Программирование для бухгалтерских и финансовых продуктов
«1С: Предприятие». Вся бухгалтерия в России завязана на этом продукте. Но недостаточно знать лишь сам язык, важно понимать основы бухгалтерского учета. Плюс в том, что работы очень много, и без хлеба вы не останетесь.
Программирование баз данных
Серьезное направление. Хотите разрабатывать базы данных, способных хранить миллиарды строк информации о всех пользователях VKontakte или Facebook и при этом не тормозить – вам сюда.
Science
Наука и этим все сказано. Нейронные сети, моделирование структуры ДНК, запуск спутников, моделирование Большого Взрыва.
Кстати, недавно на сайте NASA была опубликована новость о поиске программиста на «древнем» языке Fortran, которому уже более 60 лет. Требовался программист для разработки программ по управлению автоматическими зондами Вояджер-1 и Вояджер-2, программное обеспечение для которых было написано на Ассемблере, Фортране и языке COBOL еще в 1970-х годах. Никогда не знаешь, какие знания могут пригодиться.
На какого программиста учиться?
Если вы уже определились с дальнейшей карьерой и хотите развиваться в сфере программирования, но пока не знаете, какое направление для себя выбрать, то рекомендуем вам ознакомиться с нашей статьей. Мы расскажем о том, какие факторы следует учитывать при выборе специализации, а затем перейдем к обзору основных направлений в программировании.
Вначале, давайте обратим внимание на ряд универсальных факторов. Выбирая дальнейший путь развития в профессии, следует обращать внимание на следующие вещи:
1. Ситуация на рынке труда
Какую бы сферу и язык программирования вы не выбрали для себя, важно понимать, что вас ждет в будущем. Эта сфера постоянно развивается: одни отрасли находятся на пике популярности, другие постепенно сходят на нет.
Поэтому, прежде чем приступать к обучению, совсем нелишним будет оценить положение дел на рынке труда. Есть ли в вашем городе вакансии в интересующей вас области? Насколько это востребованное направление сейчас, и как оно оплачивается? Такое исследование даст вам представление о том, какие перспективы ждут вас в выбранной области.
2. Сложность изучения
Еще один фактор, который следует учитывать — это так называемый «порог вхождения», то есть то, сколько времени и усилий придется приложить для изучения того или иного языка, прежде чем вы сможете писать на нем хороший код.
Языков программирования огромное множество, и все они отличаются не только своими возможностями в реализации программных продуктов, но и сложностью освоения.
Наиболее простыми считаются Ruby, Python, PHP.
3. Интерес
И, наконец, очевидный, но не теряющий своей актуальности совет. Ищите такую область, которая вам нравится и вызывает интерес. Казалось бы, этот пункт может вступать в противоречие с двумя предыдущими.
Ведь может статься, что для изучения того, что вам по душе, придется приложить немало усилий и времени, а размер заработной платы поначалу будет существенно ниже, чем у коллег по цеху.
Но просто представьте себе, что это то, чем вы будете заниматься этим, к примеру, следующие 5 или 10 лет. Что вы при этом почувствуете? Радость? Интерес? Отвращение? Усталость?
Здесь важно найти разумный баланс между востребованностью направления и вашим собственным интересом. В конечном счете, если вы станете действительно квалифицированным специалистом, то сможете зарабатывать неплохие деньги в любой области.
Перейдем теперь непосредственно к различным специализациям. Итак, какие же направления в программировании сейчас существуют?
1. Embedded-разработка (разработка встроенного программного обеспечения)
Практически во всех устройствах, окружающих нас в повседневном быту (и не только) используются микросхемы. Автомобили, электрические плиты, роботы-пылесосы, холодильники, банкоматы, стиральные и посудомоечные машины, роутеры, швейные машины. Этот список продолжает расширяться с каждым днем. Все эти многочисленные приборы работают при помощи электроники, которую кто-то должен запрограммировать. Именно этим и занимаются embedded-разработчики.
Основной язык программирования, использующийся в этой области — это C++, встречается также ассемблер и JAVA, использующиеся преимущественно для низкоуровневого программирования.
Порог вхождения в эту профессию достаточно высок: C++ и ассемблер не относятся к числу самых простых языков. Кроме того, вам понадобится хорошо ориентироваться в том оборудовании, для которого вы будете создавать программы.
Заработная плата в этой сфере достаточно высока, embedded-программисты зарабатывают от 60 до 150 тыс. рублей и выше, в зависимости от уровня квалификации и профессиональных навыков.
Разработка встроенного программного обеспечения — это активно развивающееся направление. Поэтому если вам нравится работать непосредственно с оборудованием, и C++ для вас интересен — то это отличный выбор!
2. Разработка мобильных приложений (Android и iOS)
Разработка приложений под эти операционные системы ведется на разных языках, однако эти специализации достаточно схожи (подробнее об этой профессии). Рынок мобильного программного обеспечения постоянно развивается и продолжает расти в геометрической прогрессии, в немалой степени за счет высокой конкуренции в этой сфере, а спрос на таких специалистов огромен.
Данное направление отличается низким порогом вхождения — создание небольших приложений возможно даже в домашних условиях. В этой области легко набраться опыта и создать собственное портфолио.
Разработчику приложений под операционную систему iOS необходимо изучить языки программирования Objective-C и Swift (разработан компанией Apple).
В свою очередь, для создания приложений на Android вам потребуется знание Java или C#.
Доход разработчика мобильных приложений варьируется от 50 до 160 тыс. рублей и выше
3. Front-end разработчик
Еще одна очень востребованная и динамично развивающаяся область программирования — это веб-разработка (подробнее о профессии Web-программист). Не секрет, что интернет занимает существенное место в сфере продажи самых разнообразных товаров и услуг. Сейчас чуть ли не любая фирма имеет свой, хотя бы самый простенький сайт или представительство в социальных сетях. А это означает, что спрос на специалистов в области веб-разработки сейчас высок как никогда.
Frontend — это та часть сайта или приложения, которую непосредственно видит пользователь: страницы и разделы сайта, меню, интерфейс и т.п.
Соответственно, frontend-разработчик — это специалист, отвечающий за то, чтобы сделать сайт или мобильное приложение максимально удобным для пользователей.
Эта профессия потребует творческого мышления: необходимо придумывать различные формы веб-дизайна, который будет интуитивно понятен для посетителей сайта, и находить способы их реализации с помощью программирования.
Такие специалисты востребованы в крупных компаниях, вроде Google, Яндекс, Microsoft, Apple и др.
Начать работать в этой области сравнительно несложно, веб-разработка предоставляет хорошие возможности для приобретения опыта и профессионального развития. Для работы таким специалисту необходимо на высоком уровне владеть JavaScript в различных его проявлениях, знать Html, СSS, серверные языки (Perl, PHP), а также уметь работать с базами данных (MySQL).
Кроме непосредственно технического образования, важно иметь начальные познания в области психологии, разбираться особенности работы человеческого мозга восприятия и познавательных процессов.
Заработная плата web-разработчика колеблется в пределах от 50 до 150 тыс. рублей.
4. Back-end разработчик
Еще одна специализация в веб-программировании — это back-end-программист.
Это человек, отвечающий за серверную, техническую часть сайта. В его обязанности входит разработка программно-административной части , в частности разработка ядра сайта, создание платформы и ее основного функционала, работа с архитектурой кода, программной логикой, контроль за состоянием серверов и баз данных.
Back-end программист работает в постоянном взаимодействии с фронт-енд-разработчиком, получая от него информацию о мнении пользователей и внося в работу сайта соответствующие изменения.
Порог вхождения для работы в этой сфере выше, чем у front-end разработчика. Необходимо знать Ruby, MySQL, MongoDB, PostgreSQL, Python и .NET.
Зарплата такого специалиста составляет от 60 до 200 тыс. рублей.
5. Gamedev (Разработчик игр)
Кто из вас в юности не мечтал о том, чтобы работать в студии, создающий компьютерные игры? Это направление, традиционно вызывающее огромный интерес, особенно у молодых специалистов. Ведь что может быть более захватывающим, чем создание собственных видеоигр?
Программисты в gamedevе разрабатывают базовую механику игр. В обязанности такого специалиста входит написание программного кода, создание игровых объектов и их характеристик, разработка искусственного интеллекта игры, разработка и модернизация игрового движка и др.
Какими навыками должен обладать такой специалист? Главным образом, это основы: С++, C#, Java, OpenGL, DirectX, шейдерные языки.
Также желательно знать Objective-C и Java, обладать навыками компьютерного моделирования, знать закономерности игрового процесса и особенности игровых миров.
Не будет лишним изучение игровых движков (Unreal, CryEngine, Unity3D).
В случае, если вы планируете разрабатывать браузерные игры, то пригодится знание HTML5 и JavaScript, а также сравнительно новой WebGL.
Заработок программиста, работающего в сфере разработки игр, может сильно разниться в зависимости от конкретной компании или проекта.
Какое программирование самое востребованное в 2019 году
Мы решили разобраться, какое программирование наиболее востребовано сегодня и останется таким надолго.
Так просто на вопрос не ответить: этот рынок гибкий и изменчивый. Но перспективные направления не теряют актуальности долгое время: их мы рассмотрели в нашей статье. А если вы уже выбрали веб-разработку, то советуем пройти курс «Профессия веб-разработчик». Узнаете основы создания веб-приложений, этапы работы над ними и научитесь программировать на реальных проектах.
Наталья Березовская
Автор в сфере IT, digital, экономики и финансов. Ведет некоммерческий проект для начинающих писателей «ЛитЦех».
Где работают программисты
Разработчики нужны во множестве сфер, даже не всегда связанных только с IT. Охватить их все одной статьёй почти нереально, мы остановимся на самых известных и часто упоминаемых экспертами областях.
Веб-разработка
Одно из разноплановых направлений. Здесь работают с JavaScript, PHP, Python, Java и Ruby, а также используют «язык структурированных запросов» SQL. Веб-разработка купается во внимании новичков-программистов. Но и конкуренция здесь высокая: чтобы оставаться на плаву, нужно постоянно следить за тенденциями.
Несомненные плюсы этой области программирования — довольно лёгкий порог входа, быстрота изучения библиотек и инструментов.
Мобильная разработка
Это направление считают самым перспективным. Смартфоны есть у всех, и их возможности непрерывно растут. Языки создания мобильных приложений: Java и Kotlin для Android, Swift для Apple, а также Python, JavaScript, C#.
Стоит оговориться, что самостоятельное создание мобильных приложений высокого дохода не принесет: хорошо взлетают стартапы с уникальной и качественной идеей. Но благодаря самообучению вы получите нужный опыт для работы в команде.
Фокус разработки всё больше смещается в сторону мобильных устройств. Если у компании нет приложения, то она незаметна для большинства. И эта сфера продолжает расти.
Десктопные приложения
О десктопе говорят меньше и реже, чем о мобильных и веб-технологиях. Но не потому, что направление похоронили, а потому, что все вопросы в нем давно изучены, ответы на них стандартны и понятны, а изменения не происходят так быстро, как в других нишах.
Попасть в разработку приложений для ПК сложнее, чем в веб и мобайл, — без высшего профильного образования вряд ли возьмут в серьезные организации.
Языки десктопа зависят от операционной системы:
- для Linux и кроссплатформенных приложений — C++;
- для macOS — Swift и Objective-C;
- для Windows — C#.
Разработчиков на десктопе меньше всего из-за высоких требований к знаниям. Но лучшие специалисты попадают на хорошие зарплаты в крупные проекты, имеют шанс закрепиться там надолго и создать свою команду.
Разработка игр
Не так давно по геймдеву сходили с ума все поголовно — он был на пике роста популярности. Сегодня страсти улеглись, но это по-прежнему уважаемая и интересная область интернет-технологий. Годовой оборот рынка в 2017 году оценили в 100 миллиардов долларов. Языки геймдева: С++, C#, Lua и JavaScript для браузерных игр.
Осознание, что твоим продуктом пользуются миллионы фанатов по всему миру, дарит разработчику игр потрясающую эмоциональную отдачу. В индустрии высокие зарплаты, но идти туда нужно с готовностью к сложной работе и высоким нагрузкам. Для некоторых это тоже плюс.
Data Science
Тоже модное сегодня направление в IT, которое выходит далеко за его пределы. Хранение, обработка и анализ больших данных есть в любой сфере экономики. Поэтому Data Science находится на стыке интернет-технологий и бизнеса.
«Data scientist — самая сексуальная профессия XXI века».
Специалисту по Big Data необходимы серьезные знания математического анализа, статистики, машинного и глубокого обучения, текстовой аналитики. Языки программирования, на которых «говорят» здесь, — R, SAS и Python.
Data Science — это «закрытый» клуб программистов, куда хочется стремиться по двум причинам. Первая — огромное непаханое поле возможностей, учитывая молодость сферы. Вторая — такие же огромные зарплаты.
Программирование встроенных систем
Embedded — микроконтроллеры, промышленное оборудование, ЧПУ и тому подобные вещи. Полная противоположность интернету и веб-технологиям. Здесь нужно понимать аппаратную часть машины, для которой создается ПО. Необходимые языки — С, С++ и специализированные для тех или иных микроконтроллеров.
Попасть в эту сферу очень трудно: и вакансий, и специалистов в ней гораздо меньше, чем в том же вебе. Но если изучать технологии, связанные с использованием в устройствах интернета, можно пойти дальше.
Профессия-мечта для тех, кто грезит роботами и сложными устройствами, которые начинают работать прямо на глазах и зависят от ваших действий. Через эту область программирования можно внести весомый вклад в науку в принципе.
Интернет вещей (IoT)
Интернету вещей пророчат большое будущее и активное развитие в ближайшее время. Аналитики компании Ericsson прогнозируют среднегодовой темп роста в размере 23% до 2021 года.
Интернет вещей — это создание smart-устройств, подключенных к сети умного города или дома.
Направление молодое и перспективное, поэтому войти в него сегодня проще, чем через 10–20 лет. По этой же причине легче получить признание, воплотить безумные идеи и стать частью истории.
Автоматизация бизнеса
Программные продукты для компаний из трендов не уйдут: наоборот, появляются новые и конкурируют между собой. Популярные в России — «Мегаплан», amoCRM, «Битрикс24», 1С. Лидеры международного рынка: SAP, Salesforce, Microsoft Dynamics CRM, Siebel Oracle CRM и другие.
В обязанности программистов входит внедрение и обновление системы, а также обучение работающих с ней сотрудников. Но есть и специалисты, которые разрабатывают те самые обновления, пишут и поддерживают код.
В сфере SaaS относительно невысокий порог входа и неплохая заработная плата, есть возможность развиваться и как программисту, и как финансисту.
Самые популярные языки программирования
Выбор языка зависит от направления разработки. После того как разобрались, какое программирование востребовано и подходит лично вам, нужно искать и изучать инструменты для работы.
Топ TIOBE основывается на количестве поисковых запросов, обучающих курсов и специалистов. Здесь лидеры выглядят так:
Рейтинг IEEE Spectrum анализирует частоту поисковых запросов, число проектов на GitHub, а также упоминания в Twitter и главных IT-порталах сети. Здесь в пятёрке лидеров — Python, C++, Java, C, C#.
Если ориентироваться на данные российского сайта HeadHunter, картина меняется. Наглядно она представлена таблицей из статьи в корпоративном блоге HeadHunter на «Хабре»:
На основании разных параметров мы получаем разные результаты. Мы советуем не гнаться за модой, а изучать то, что вам близко. Если оно ещё востребовано и хорошо оплачивается — двойное попадание. Но уходить в крайности и осваивать древние технологии — тоже неверный путь, ориентироваться на спрос всё-таки нужно.
Какое программирование самое востребованное
Подойти к программированию можно с одной из двух сторон: стать отличным специалистом узкого профиля — по статистике, их заработные платы выше, но найти новую работу им чуть сложнее, — либо стать fullstack-разработчиком и выигрывать за счёт широты спектра. Найдите золотую середину: станьте экспертом в одной-двух сферах, но поддерживайте актуальность знаний в остальных технологиях.