Сегодня в нашей рубрике "Войти в IT" мы поговорим о том, кто такие разработчики, какими они бывают и что вообще делают. А также затронем тему того, как работа и стиль мышления влияют на бытовую жизнь программистов. И ещё - в финале - будет крик души backend-специалиста Gems development Алексея Кулишкина о том, чем разработчики заниматься совсем не должны.
- Ты усердно смотришь в монитор, с суровым выражением лица нажимаешь на кнопки, а в процессе рождается продукт, который способен выполнять потребности твоего заказчика, - так незамысловато и с юмором описал будни разработчика наш собеседник Алексей Кулишкин.
Подходить с долей насмешки ко всему, что делаешь, - это вообще отличительная черта многих программистов. Хотя их считают закрытыми, нелюдимыми и замороченными только в моменте написания своих кодов.
Если говорить серьёзно и кратко, то задача разработчиков - перевести человеческий язык на язык машин.
- Мы работаем с исходными данными. Нам сначала нужно их получить, условно, что-то с ними сделать, куда-то сохранить, преобразовать и потом показать пользователю. По сути, мне, как разработчику, надо написать порядок действий, алгоритм: сделай это, возьми то, положи сюда. Да, существует много видов разработчиков, но основная суть этой работы такая.
Что касается видов, то сейчас широко востребованы бэкенд- (backend) и фронтенд- (frontend) разработчики. Первые делают внутреннее наполнение, а вторые разрабатывают пользовательские интерфейсы, то есть то, что видим мы в своих компьютерах и смартфонах.
- Если представить часы, то циферблат и стрелочки - это работа фронтенд-разработчиков. А шестерёнки, которые крутятся внутри этих часов, - разработка бэкенд-специалистов. Фронтенд-разработчики не просто создают красивую картинку, их задача в приложении на стороне клиента продумать функционал и сделать очевидной логику решения задач. Сейчас даже тренд такой есть - переносить мощность вычислений на сторону пользователя. То есть если раньше что-то можно было сделать только на больших серверах и это требовало больше времени и ресурсов на стороне производителей, то сейчас мощности смартфона или компьютера хватает для локального решения задач намного быстрее, но в случае значительных расчётов, как и раньше, подключаются внешние сервера.
Подробнее остановимся на бэкенд-разработчиках. Эти программисты отвечают за основной функционал создаваемого продукта, то есть за его программную часть. По сути, они создают логику решений, на которые будет опираться программное решение. Например, в приложение поступила команда "начислить деньги", оно это делает, затем переводит команду в статус заказа и выдаёт ответ, что всё выполнено. Для того чтобы система работала без сбоя, а команды приложением/программой выполнялись чётко, и трудится бэкенд-разработчик.
- На самом деле видов разработчиков намного больше: тут и универсальные специалисты вроде fullstack-специалистов, и узконаправленные с делением по применяемым языкам программирования. Например, есть разработчики игр или разработчики сайтов. Они, как правило, относятся к фулстекам, то есть что-то среднее между бэкенд и фронтенд, потому что они выполняют и ту, и другую работу. Или есть микроконтроллеры, для работы которых тоже нужен код. Эти штуки есть практически во всех вещах, которые нас окружают. Они представляют собой маленький процессор со слабой вычислительной мощностью, заточенный под решение конкретных задач. То есть для их работы достаточно простой логики. Если в качестве примера брать кондиционер, то логика его микроконтроллера сводится к командам "включи", "сделай такую-то температуру" и прочее.
Действительно среди вакансий часто встречаются и другие виды разработчиков, которые пишут свой код на определённом языке: C# (сишарп), C/C++ (си и си плюс плюс), 1С (один эс), Java (Джава), Python (Пайтон) и другие.
Для разработчика важно не только знать язык, на котором он пишет код, но и, что куда важнее, владеть различными инструментами и технологиями, с которыми этот язык работает в связке. А их очень много.
- Мы в Gems разрабатываем бэкенд нашего продукта Geometa на языке C# и с применением множества фреймворков ASP. Net Core. Фронтенд, кстати говоря, использует свои фреймворки, где-то Vue.js, где-то Ext JS и другие.
В зависимости от поставленных задач мы используем и другие решения. Например, для связки с базой данных или для создания баз данных не обойтись без языка SQL. А если было бы нужно добавить в приложение, скажем, форму авторизации, то нам на помощь придёт знание Keycloak. Вообще разработка - это бездонная пропасть, всегда есть что-то, чему можно научиться, даже если выбрал для себя какую-то определённую специализацию.
Думаем, начинающих айтишников, которые только входят в эту сферу, интересует ещё два вопроса: можно ли перейти из одного вида разработчика в другой и вообще стать разработчиком, если ты пришёл из другой области IT. Наш спикер говорит, что это вполне возможно, но надо быть готовым к определённым сложностям.
- При смене профессии и даже при переходе из компании в компанию ты всегда немного теряешь в своих компетенциях. Например, в институте я изучал C# и на первую работу устраивался именно бэкенд-разработчиком. Однако той компании нужны были фронтендеры, и мне пришлось изучать новый для себя фреймворк Angular и язык TypeScript. Естественно, что мне потребовалось время, и на какой-то период моя ценность как разработчика снизилась. В какой-то момент процентов на 70 % я стал фронтенд-разработчиком. В Gems полностью перешёл обратно в бэкенд. Я считаю, что разработчику надо знать суперхорошо какое-то узкое направление и в нём быть классным специалистом. Но при этом нужно иметь достаточную гибкость, чтобы ты мог выполнить задачу, поставленную перед тобой, и на другом языке. Выучить, быстро посмотреть, как это работает, потому что общие концепции везде похожи. Это не значит, что ты должен быть тут профи, но поправить какой-то кусок кода надо уметь. Например, я не очень люблю Python, но, когда есть задача, просто иду и делаю, а потом уже возвращаюсь к себе на родной C#.
Часто люди думают, что программисты обязательно должны знать сложную высшую математику как "Отче наш" и уметь легко ею жонглировать. На самом деле знание математики, конечно, приветствуется, потому что это особый тип мышления, но всё же, нужна она или нет, зависит от конкретных задач. Большинство разработчиков не так много работают со сложной математикой, да и в целом с этой наукой.
- Сложной математикой занимаются те разработчики, которые пишут программы для проектирования ракет, например, для расчёта сопротивления материалов. Да, там будет сложная математика, и то у них, скорее всего, будет человек, который напишет все формулы, а тебе останется только их реализовать в программе. У нас в компании мы редко работаем с математикой. Хотя у нас есть работа с геоинформационными системами - мы располагаем точки на карте, считаем пересечение площадей - поэтому понимание какой-то математики должно быть. Но повторюсь, она пригодится в конкретной области.
Так или иначе, каким бы видом разработки ты ни занимался, твоя работа влияет на твою жизнь в быту. И, по признанию Алексея, в лучшую сторону. Как говорится, видишь цель - не видишь препятствий. Надо только всё хорошо изучить и применить знания на практике. И неважно, что именно надо сделать: обустроить новую крышу у дедушки в доме, зашпатлевать стену или поменять трубы в квартире.
- Для меня сейчас любая задача превратилась из "я не знаю" в "сейчас почитаю, изучу, разберусь и сделаю". Нет страха перед новыми задачами. Ты начинаешь думать алгоритмами. Я смотрю на новые задачи с точки зрения того, как бы я сделал, если бы создавал это сам. Если бы я разрабатывал, то предусмотрел такой и вот такой моменты. И ты думаешь и понимаешь: ого, и правда есть такая фича (возможность). Мировоззрение поменялось. Сейчас ты не можешь, потому что пока не хватает опыта, навыков и знаний. А потом ты узнаешь, поймёшь и сделаешь всё что угодно. Просто на это надо время.
А на сладкое мы оставили крик, пожалуй, каждой второй программистской души. Не просите этих ребят чинить бытовую технику, особенно с репликами: "Ну ты же программист, ты должен это уметь!" Нет, не должен. У программиста другая работа, другие навыки и компетенции.
- У нас на работе есть сисадмины, которые настраивают нам интернет, что-то подключают. Мама меня спросила: "А чем вы тогда занимаетесь, зачем вы нужны, если не можете с компьютером разобраться?" Не пытайтесь заставлять разработчика чинить телефоны, холодильники, телевизоры и переустанавливать "Винду" - это вообще не то, чем мы занимаемся. Да, я могу произвести какие-то операции по ремонту компьютера: почистить, переустановить. Но это получается не потому, что я разработчик, а потому, что у меня есть компьютер. Мне приходится с ним возиться, и я этому научился. К разработке это никакого отношения не имеет.
Совет от нашего эксперта: почитайте про языки программирования, выберите один из подходящих именно вам, изучите его и пробуйте себя в разработке. Тогда вы будете заниматься именно тем, что вам интересно, создавать приложения, которые будут работать и облегчать жизнь пользователей. А если вдруг надоест, всегда можно изучить новый язык и начать всё заново.
Вы можете освежить в памяти информацию о том, кому отдают предпочтение работодатели, если речь идёт о начинающих айтишниках. Как поработать над своими мягкими навыками, которые так необходимы программистам. UX/UI-дизайнер Gems development Евгений Аношин рассказал о том, зачем действующим программистам нужна прокачка. Где и как студенты-айтишники могут устроиться на работу сразу после получения диплома.
Вместе с деканом ФЦТК ОмГУ Александром Кабановым мы покопались в стереотипах об айтишниках и поняли, что нужно делать. У Unity-разработчика (senior) с Кипра кто такие зомби-программисты. Опросили 33 айтишников, где и как они учились, а после составили рейтинг учебных заведений. Может ли айтишник избежать ошибок в работе, узнали у директора по маркетингу компании "Лайв Тайпинг" Евгения Бойченко.
Фото: из архива Gems development
Изображения созданы с помощью Midjourney