Книга: IT-рекрутмент: Как найти лучших специалистов, когда все вокруг горит
Назад: Глава 9. Управление в IT
Дальше: Глава 11. Тестирование
Глава 10

Языки программирования

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

Разные источники утверждают, что сегодня в мире существует от 1000 до 10 000 языков программирования. Такой разброс связан с тем, что пока нет договоренности, какие языки могут считаться самостоятельными, а какие «диалектами», то есть разновидностями других языков. В любом случае мы не будем рассматривать их все, а остановимся на самых востребованных.

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

В зависимости от задач самыми популярными языками для бэкенд-разработки можно назвать Java (читать «джава», но разработчики говорят и «жава», и даже «ява»), C++ («си плюс-плюс» или попросту «плюсы»), С# («си шарп»), Python («питон» или «пайтон»), PHP («пэхэпэ» или даже «пыха») — и это, конечно же, далеко не полный список. Для фронтенда же чаще всего используются JavaScript («джава скрипт»). Но есть исключения, когда JS используется на бэке, а именно платформа node.js.

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

Бэкенд-разработка

Итак, какими языками чаще всего пользуются бэкенд-разработчики? Для начала вспомним, что языки условно разделены на три типа: высокого уровня, среднего и низкого. Высокоуровневые языки созданы с расчетом на то, что их будут понимать люди: например, в некоторых С-подобных языках или на Python команды выглядят как вполне понятные английские фразы. Таким образом, языки высокого уровня более дружественны к программисту — их проще выучить. Тогда как языки среднего и низкого уровня более дружественны машинам, а нам понятны совсем чуть-чуть. Зачем же они нужны?

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

С («си») и C-подобные языки. По данным TIOBE Index в 2020 году язык C занимал первое место по популярности в мире. В 2022-м же он стоит на 2-й строчке. Его можно назвать родоначальником языков высокого уровня, тогда как сам он является низкоуровневым. Отчасти благодаря ему компьютерные программы перестали быть инструментом ученых, а вышли из университетов к нам, простым пользователям.

Когда появились первые ЭВМ, разработчики писали код не на читабельном языке программирования. До создания языков высокого уровня были перфокарты — картонки с дырочками, позже появился бинарный код — нули и единицы.

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

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

В 1972 году случилось то, что решило обе эти проблемы: американец Деннис Ритчи, работавший в корпорации AT&T, создал язык программирования C. Это был один из первых языков, в котором использовались «человеческие» слова, и при этом программы стало можно переносить с одного компьютера на другой.

Язык С стал основой для высокоуровневых C++, C#, Java, PHP.

Где применяется старый добрый С сейчас? Будучи созданным как язык системного программирования, он по сей день используется в создании операционных систем, драйверов, загрузчиков и утилит. В задачи языка входит написание максимально быстрого и близкого к «железу» кода, поэтому разработчики, работающие на C, должны быть хорошо знакомы с архитектурой ЭВМ.

В С значительно меньше готовых решений, фреймворков и библиотек: многое разработчик делает с нуля. Архаично, но красиво!

Общаясь с разработчиком С, есть смысл спросить его, с каким «железом» он работал. Зачастую они работают с микропроцессорами определенной архитектуры (самые популярные — ARM, AVR). Приходилось ли писать драйвера? Можно спросить, какая операционная система была на устройстве: Linux, или unix-подобные, или какие-то операционные системы реального времени (RTOS).

С++ — язык-наследник, развившийся на базе С, был представлен в 1985 году и развивается по сей день (хотя и не так активно, как Python, Kotlin, Go и др.).

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

Чтобы упростить программирование на C++, существуют специальные библиотеки и фреймворки.

Что сказать о плюсах этого языка? Среди его достоинств — высокая производительность и поддержка самых разных стилей программирования. Однако он настолько сложен, имеет такой объемный синтаксис и множество ответвлений, что даже опытные си-плюс-плюс-разработчики не могут утверждать, что знают этот язык хотя бы на 80%.

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

С# (читать как «си шарп» и никак иначе) — еще один язык из семейства С, по синтаксису близок к С++ и Java. Создан и развивается силами компании Microsoft. На нем разрабатываются и клиент-серверные, и десктопные приложения.

Говоря о C#, чаще всего подразумевается .NET — программная платформа, также выпущенная компанией Microsoft и включающая в себя множество технологий и инструментов для разработки различных программных продуктов, от веб-сервисов до мобильных приложений.

Для рекрутера важно понимать, что если в вакансии написано .NET, то, скорее всего, речь идет о десктопной версии софта. Если же написано ASP.NET, то речь о веб-сервисе.

Кроме того, на шарпе раньше можно было писать только под винду (Windows) — это было существенным ограничением языка, а найти специалистов, которые делали что-то под Linux на C#, было просто нереально. В последние годы ситуация поменялась, и шарп начал двигаться в сторону кросс-платформенности, то есть совместимости с различными операционными системами.

Java — согласно рейтингу TIOBE, третий по популярности язык программирования в 2022 году. Он давно занимает лидирующие позиции, но в последние годы Python его обогнал. Java считается одним из самых безопасных языков программирования, поэтому большинство банковских и страховых систем написаны именно на нем.

Вероятнее всего, вы уже отлично это запомнили, но все же повторю: не стоит путать Java и JavaScript! Невер!

Что же пишут на Java? Можно сказать, всё! Как шутят разработчики, он есть в каждой кофемашине и холодильнике (кстати, изначально он разрабатывался действительно для бытовых приборов).

Вот несколько известных проектов, где велика доля Java-кода: eBay, Amazon, LinkedIn, Google, Twitter, Facebook.

По данным компании Oracle, в мире более 3 млрд устройств работают на Java. На сегодняшний день по миру насчитывается около 12 млн Java-разработчиков, и их число постоянно растет. По данным платформы AmazingHiring, в России на Java программируют 81,5 тысячи специалистов.

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

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

Немного пугающих аббревиатур: в резюме Java SE и EE могут быть написаны как j2se и j2ee соответственно. Выглядит жутковато, но стоит их запомнить. Зная различные способы написания версий Java в запросе при сорсинге, вы сможете за счет таких трюков увеличить выдачу кандидатов.

Это далеко не полный список фреймворков: например, помимо описанного выше Spring, существует Spring Boot, который немного упрощает работу самого Spring. Для реализации веб-проектов существуют Blade или GWT (Google Web Toolkit). Но я уверен: понимая, что такое фреймворк, чем он полезен разработчику и в чем теоретические отличия разных фреймворков, даже при нахождении незнакомых названий в вакансиях вы сможете быстро их нагуглить и сориентироваться, кто именно вам нужен.

Python — один из немного языков со своей философией «The Zen of Python» и, наверное, с самой обширной областью применения. Кстати, по рейтингу все того же TIOBE Index, как раз Python — самый распространенный язык программирования в мире. Он используется и в анализе данных, и в системном администрировании, и в разработке сайтов, и в машинном обучении, и даже в создании искусственного интеллекта. При этом область его применения постоянно растет. По последним данным, он уступает по популярности только Java, С и С++.

Сообщество разработчиков на Python считается одним из самых активных, именно благодаря их работе язык активно развивается. На сегодня есть две основные ветки: Python 2.x и Python 3.x.

И да, Python назван не в честь пресмыкающегося, а по названию популярной британской юмористической телепередачи Monty Python's Flying Circus (Летающий цирк Монти Пайтона).

В web Python чаще всего используется для клиент-серверных веб-приложений. Наиболее популярные фреймворки:

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

Python также полезен для аналитиков и Data Scientist. Один из самых популярных инструментов этого направления — расширение NumPy, содержащее возможности для работы с большими массивами данных, интерфейсами уравнений и т.д.

Go (или Goland) — язык с достаточно низким порогом входа для новичков, разработанный внутри компании Google для решения проблем на высоконагруженных сервисах. По мнению его разработчиков, язык Go — это попытка создать альтернативу постепенно устаревающим С и С++: за последние годы компьютерные технологии изменились, и они требуют новых решений. Язык был впервые представлен общественности в 2009 году и за последнее десятилетие поднялся в рейтинге TIOBE с 65-го места на 13-е.

Зачастую на Go переходят PHP-разработчики. Кстати, о них.

PHP («пэхэпэ») — язык для разработки веб-приложений. Многие старые сайты написаны на PHP. Например, такие проекты, как YouDo или VK. У PHP есть разные версии, поэтому у разработчика стоит спрашивать, с какой версией он работал. А еще у PHP много фреймворков, например Laravel, Zend, Yii, Symfony. О том, писал ли разработчик на нативном PHP или использовал какие-то фреймворки, тоже стоит уточнить.

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

Фронтенд-разработка

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

Разработка frontend-части состоит из HTML, CSS и JavaScript (естественно, как было сказано выше, могут применяться и другие технологии — мы делаем упор на эти как на наиболее распространенные).

Логически фронтенд-разработку можно разделить на верстку и логику (скрипты).

JavaScript («ДжаваСкрипт») — скриптовый, строго не типизированный язык. С его помощью разработчик может добавлять интерактивные элементы на сайт (например, игры, динамические стили, анимацию). Возможности JavaScript позволяют создавать много интересного, вплоть до серьезной 2D- и 3D-графики.

Как и любой язык программирования, JavaScript меняется и обрастает своими фреймворками, библиотеками и платформами, среди которых можно упомянуть Angular, React|Redux, Vue.js и Node.js.

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

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

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

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

Назад: Глава 9. Управление в IT
Дальше: Глава 11. Тестирование