Поиск  
Always will be ready notify the world about expectations as easy as possible: job change page
2 дня назад

Программист 2020: Терминатор отдыхает

Программист 2020: Терминатор отдыхает
Источник:
Просмотров:
289

Программист сегодня не то что прежде — одного знания языка (или языков) программирования мало, чтобы быть действительно конкурентным на рынке труда. Ты можешь сколько угодно прописывать в коде на С++ указатель на указатель на указатель, но какой в этом толк, если твой работодатель плачет (менее ванильные ребята орут, лишают премии, угрожают и стоят на стороне клиента — в смысле живого клиента и пользователя вашей программы, а не того, что обменивается информацией с сервером)? Какое-то время назад что гаджеты, что концепции управления, что тенденции подбора персонала тяготели к одному и тому же: модульности, дискретности, а то и даже примитивизации и узкой специализации сотрудников, софта, инструментов. Но эволюция повернула не туда и теперь мир требует умные устройства, которые умеют всё, многофункциональные программы и приложения (привет, Яндекс Go) и, конечно, универсальных специалистов. Концепция «человека-оркестра» вернулась в тренд, не успев уйти из него.

Итак, что вам нужно для полного программистского счастья соответствия набора в конце 2020?

▍ Структуры данных и алгоритмы

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

Но в первые же рабочие дни на хорошем проекте начинаются проблемы и становится очевидно, что учебные задачки, которые сделали тебя классным кодером, не имеют ничего общего с кодом в продакшене. Чтобы написать хороший, профессиональный код, нужно разбираться в структурах данных и алгоритмах, уметь проектировать программное обеспечение. Мне приходилось видеть весьма толковых программистов, которые не использовали в работе массивы, деревья, связанные списки, сортировки и т.д. У таких ребят две отличительных черты: 1) они упрямы и уверены в своём превосходстве; 2) они тратят адски много времени на написание того, что уже существует как структура — я видел изобретённые заново сортировки и деревья, это страшно и странно. Молчу уже о ресурсах.

Поэтому программист любого уровня должен легко оперировать структурами и существующими алгоритмами. К слову, HR-специалисты и CIO страшно любят использовать эти темы на собеседовании. Стоит ли превращать собеседование в экзамен, тема отдельной статьи, но факт остаётся фактом.

▍ Бизнес-процессы

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

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

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

▍ Математика

Царица полей. Ну или наук, не суть. Как бы мы с вами в айтишном мире ни избегали математики, с каждым годом её важность возрастает. Ни машинное обучение, ни нейронные сети, ни искусственный интеллект без знания математики разработать не получится. И если вы, разработчик сайтов или фронтендер, сейчас хмыкнули и пошли читать следующий пункт, остановитесь, это касается всех. Потому что в скором времени программы без хоть каких-то зачатков ML/AI/нейросетей/BigData будут в ряде отстающих. Поэтому, выход простой: пока не поздно, изучайте необходимый срез математики.

У меня есть небольшой секрет, как начать: купить любую продвинутую энциклопедию для детей или научно-популярную книгу о математике и погрузиться в атмосферу, освежить базовые термины. А там пойдёт и даже затянет.

▍ Базовые знания в смежных областях

Этот пункт может возмутить любого, но да — программисту и его коллегам будет лучше, если все они будут чуть больше знать о работе соседа по опенспейсу, кабинету, команде. Если вы программист, вам лучше знать какие-то основы UI/UX, фронтенда и бекенда, системного администрирования, тестирования и т.д. Это позволит выстраивать продуктивный рабочий диалог без взаимных обвинений и подозрений. Не нужно вникать в самую глубину предмета — достаточно базового учебника, онлайн-лекций и интернет-курса. Если вы реально заинтересованы в карьере разработчика, можно пройти какую-нибудь очную программу комплексной разработки ПО — там всё будет дано в умеренных объёмах, правда, чаще всего платно.

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

▍ Техно-трио, без которого в будущее не пустят

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

  1. Облачные технологии. Облако — это не только экономия и простая масштабируемость для компаний, это ещё и огромные вычислительные мощности, которые доступны любой компании (а вот собственные сервера на такие мощности практически недоступны по стоимости и сложности управления). За облачными системами наше с вами инфраструктурное будущее. Поэтому понимание и умение использовать Amazon Web Service (AWS), Google Cloud Platform (GCP) или Microsoft Azure гарантированно увеличат стоимость программиста на рынке труда.
  2. Микросервисы. Микросервисная архитектура решает многие проблемы безопасности, управления и эксплуатации высоконагруженных проектов, работы с огромными базами данных. Микросервисные архитектуры пока востребованы, в основном крупными компаниями, но совсем скоро они шагнут и средний бизнес. Спрос на программиста с таким навыком будет ещё долго (пока наносервисы не изобретут).
  3. Контейнеры (пока это конкретно Docker и Kubernetes) упрощают процесс развёртывания ПО на проекте, облегчают тестирование приложений и процесс управления зависимостями, гарантируют масштабирование на лету. И самое интересное, что в отличие от микросервисов, контейнеры используют компании любого уровня, поскольку это удобно, просто в изучении и широко распространено.

▍ Софт скиллы не дичь какая-то

Я люблю токсичных сотрудников компаний. Если пиарщица или менеджер проектов нервно поправляет каре и говорит, что в компании «джавист Сергей токсичный», я знаю, что скорее всего джавист Сергей угнетает коллег своим объёмом знаний, профессионально находит ошибки и из лучших побуждений их занудно объясняет, а из-за раздражения окружающих замыкается в себе и ведёт себя грубовато. Но он профи — и таких немало. Но, увы, люди — существа социальные, с тонко организованной психикой и поэтому не выносят людей без эмпатии, социального вектора и, простите, эмоционального интеллекта. Поэтому пока джавист Сергей морозится и ведёт умные разговоры с гарбадж коллектором, питонист Савелий уже и сеньор, и метит в тимлиды, и побывал на трёх конференциях, и с начальством дружбу водит, и с клиентом на выставку в Барселону летит (вы же уже поняли, что примеры выдуманные и все совпадения случайны, ведь никто в 2020 в Барселону не летит).

Сейчас время коммуникаций, которые чем реже, тем ценнее, поэтому записывайте, что вам нужно прокачать:

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

У меня для вас хорошая новость: большинство из софт-скиллов установлены у человека по умолчанию, нужно просто грамотно из себя вытащить эти навыки. Не ходите к тренерам и коучам, 2-3 базовые книги по организационной психологии, конфликтологии и социальной психологии сделают вас продуманным собеседником.

Вообще, интересно развивается наша жизнь: я сейчас вспоминаю, какими прорывными были Google Glass, как чётко зашли Pokemon Go, как взлетели и тут же рухнули разные системы управления проектами. Это были волны хайпового спроса, спроса на трендах. Поэтому перечисленные навыки программиста в 2020 году кажутся такими «кондовыми»: они долгосрочные, а не на пару сезонов. То есть с ними можно дожить примерно до 2030 года без особого напряга. А остальной мир держится на этих слонах. Ну, а языки программирования, конечно, черепаха под слонами, основа основ.

К чему это мы? С днём программиста, друзья! Вы меняете жизнь к лучшему с помощью кода, вы делаете требования рабочими приложениями, вы читаете ТЗ между строк и знаете, что думает заказчик или тимлид. Любите свою работу, растите над ней и над собой, и пусть не будет пропущена ни одна «;». Всем hello world и меньше багов.

Похожее
1 декабря 2020 г.
Существует два основных пути становления топ-менеджмента в IT-компаниях: Менеджерский — когда менеджер проекта начинает управлять другими менеджерами. Технарский — когда разработчик начинает управлять другими разработчиками и количество управляемого им персонала увеличивается.Первый путь является более...
24 марта
ВведениеВ наше время среди разработчиков распространено убеждение, что хорошие программисты значительно лучше плохих программистов. Величина этого "значительно лучше" является предметом яростных дискуссий. Оценку в 10 раз часто называют консервативной.В данной статье будет показано, что такие утверждения упускают важные детали и,...
2 октября 2018 г.
Уже несколько раз натыкался на материалы о найме программистов и не без интереса читал их, ведь Я сам программист, и мне любопытно было узнать, как нас оценивают на собеседованиях.Мои впечатления? Я в печали... Почти все материалы, на мой взгляд, напоминают...
13 февраля 2020 г.
Автор: Кирилл Медведев
Выход на новую работу — всегда стресс, особенно когда нужно максимально быстро влиться в коллектив и приступить к задачам. Рассказываем, на что обратить внимание, чтобы не пожалеть о выборе и оказаться «на своём месте».Шаг первый: проведите разведкуПервый рабочий день —...
Написать сообщение
Почта
Имя
*Сообщение


© 1999–2024 WebDynamics
1980–... Sergey Drozdov
Area of interests: .NET Framework | .NET Core | C# | ASP.NET | Windows Forms | WPF | HTML5 | CSS3 | jQuery | AJAX | Angular | React | MS SQL Server | Transact-SQL | ADO.NET | Entity Framework | IIS | OOP | OOA | OOD | WCF | WPF | MSMQ | MVC | MVP | MVVM | Design Patterns | Enterprise Architecture | Scrum | Kanban