Мы на Workspace
Наверх
Gendalf Gendalf

Какие навыки программиста никогда не устареют и будут всегда востребованы — отвечают эксперты

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

Михаил Адигеев, руководитель отдела программных разработок и поддержки ГЭНДАЛЬФ:

- В дополнение к системному мышлению и умению писать чистый код, я бы ещё выделил:

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

Умение понимать других людей. Это уже из разряда soft skills, но один из наиболее полезных навыков для программиста. «Другие люди» — это и пользователи, и коллеги по команде разработки (аналитики, тестировщики). Важно понимать не только что нужно другому человеку, но и зачем ему это нужно. Для развития полезно чаще общаться с людьми смежных специальностей, интересоваться их работой.

Умение планировать работу, в т. ч. оценивать сложность отдельных задач и возможные риски. Развивается с опытом, но именно с опытом, а не просто стажем работы. Важно фокусироваться на этих вопросах при планировании и после выполнения — проводить ретроспективу и анализировать причины расхождений.

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

Алексей Красиков, руководитель отдела разработки департамента эксплуатации «МойОфис»:

- Индустрия разработки ПО развивается феноменальными темпами, и требования к продуктам непрерывно растут. Для разработки продукта уже недостаточно программиста-многостаночника, занимающегося всем в одиночку. За любым проектом, будь то open-source веб-сервер или коммерческая CRM, стоит команда специалистов, за каждым из которых закреплена своя зона компетенций.

Само собой, каждый технический специалист должен обладать научно-технической базой для понимания работы всей системы в целом. В эти навыки входит как понимание работы ОС, сетевого стека, принципы работы баз данных, так и математический аппарат, лежащий в основе любого алгоритма или протокола. Однако сами по себе эти навыки не смогут быть полезны, если они не будут интегрированы в общий процесс разработки. Таким образом, всё более и более очевидной становится потребность в развитии soft skills. Умение вместе добиваться поставленной задачи — это то, что технические специалисты часто упускают. Бывает, что и вопросам коммуникации не уделяют должного внимания. Улучшение коммуникативных навыков происходит не только за счёт изучения материалов на эту тему, но и требует ежедневной практики и изменения своих уже привычных паттернов поведения.

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

Дмитрий Гацура, руководитель отдела разработки компании «СёрчИнформ»:

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

Очень важно не изобретать «велосипеды» там, где это не нужно. Многие начинают писать свои БД, веб-серверы, блокчейн и т. д., не проанализировав, что из уже готового можно использовать.

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

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

Источники: Типичный программист.

Поделиться