Навыки программиста, который идет к успеху
Быть программистом всегда означало находиться на передовой информационных технологий, знать и уметь больше других, разбираться в вещах, о которых другие зачастую даже не слышали. Например, многие не слышали про нашу закрытую викторину, в которой мы разыгрываем бесплатное обучение. А она находится здесь! Неважно, на каком языке программирования вы пишете и на какой платформе работаете. Не имеет значения, что именно вы разрабатываете — сайты, CRM-системы или компьютерные игры. Где бы вы ни применяли свои таланты — вам обязательно пригодятся общие навыки и скилы, необходимые каждому айтишнику или программисту.
Коммуникабельность и умение работать в команде
Нелюдимый компьютерщик «со странностями», не умеющий поддержать беседу и полностью погруженный в собственный гиковский мир — древний стереотип, который в XXI веке уже не имеет права на существование. Современные разработчики — социальные существа. Если 30 или 40 лет назад программист мог в одиночку разработать и поддерживать программное обеспечение для средней компании, то сегодня для этого требуются усилия команды. А это значит, что программисту надо уметь работать в коллективе, обмениваться опытом с коллегами, помогать другим и уметь принимать помощь. А еще один из ключевых навыков программиста — общаться с заказчиками, клиентами и пользователями: без обратной связи хорошую программу не написать!
Практически все методологии разработки ПО ориентированы на то, чтобы наладить эффективное взаимодействие в команде проекта. Коммуникабельность, способность договариваться, принимать совместные решения — это те качества, без которых современному айтишнику не обойтись.
Аналитический подход
Плох программист, который бросается в бой, едва перед ним поставили задачу. Опытный специалист сначала изучит ее, чтобы понять ожидания заказчика, спроектировать структуру будущего приложения, выбрать инструменты, составить план, разделить проект на логические блоки. И все это до того, как написана первая строка кода. Это и называется аналитическим подходом.
Почему он так важен?
Такая организация дисциплинирует и позволяет составить рабочий график. Выделив части проекта и подзадачи, разработчик может ранжировать их по степени значимости, чтобы начать реализацию с критически важных модулей, а все менее важное оставить на потом.
Анализ дает возможность заранее представить функциональность приложения в деле, взаимодействие его модулей друг с другом и с пользователем. А еще — сформулировать принципы построения интерфейсов и внутренней логики.
Если разработчик понимает, что требуется заказчику, он сможет предложить альтернативные варианты реализации — более удачные, современные, быстрые, эффективные. Способность посмотреть на задачу под новым углом, предложить неожиданное решение — полезный профессиональный навык для программиста. Пока остальные обсуждают, наполовину пуст или полон стакан, хороший айтишник предполагает, что стакан в два раза больше, чем нужно.
Умение учиться нон-стоп
Знать свой язык программирования и платформу, уметь работать с ними — это важно. Но еще важнее развивать эти навыки, расширять кругозор и учиться новому.
Технологии, которые недавно казались малозначительными, сегодня вышли на первый план. Кто слышал о блокчейне десять лет назад? А сегодня мировые корпорации, банки и даже госструктуры (в том числе в России) экспериментируют с ним на практике.
Через десять лет будут работать инструменты, которые сегодня только зарождаются в умах инженеров. А значит, опять изменятся запросы бизнеса и рынка труда.
Невозможно точно определить, какие технологии захватят мир. Вы можете прочесть о новой концепции и подумать, что за ней будущее, или решить, что это чушь. Но были вы правы или ошибались, покажет только время. Важно быть гибким, готовым к переменам и продолжать изучать инновации, которые кажутся вам перспективными. Даже если знания останутся невостребованными, вы все равно в плюсе — расширили эрудицию и прокачали обучаемость. А эта способность востребована во все времена.
Умение учиться помогает строить карьеру. IT-компании приветствуют сотрудников, которые хотят развиваться в профессии и готовы над этим работать. Такие специалисты легче переключаются на новые задачи, быстрее втягиваются в работу над новыми проектами, трудятся более продуктивно и креативно.
Изучение новых технологий и инструментов — это способ выбраться из повседневной рутины, продолжая заниматься своей работой и карьерой.
Упорство и усидчивость
Программист должен быть настойчивым на пути к цели, чтобы найти лучшее решение — особенно в тех случаях, когда оно неочевидно. Порой оказывается, что первый (второй, третий) вариант не работает или не устраивает по качеству. Тогда кажется, что хорошего решения нет вообще, — иногда так и есть. Но хороший программист будет улучшать код, пока не достигнет совершенства или дедлайна.
Не путайте упорство с упрямством. Если оказывается, что выбранный способ решения задачи не оптимален, нужно найти в себе силы признать ошибку. Если чувствуете, что носите круглое и катаете квадратное, — лучше остановиться и подумать еще раз. Может, придется перечеркнуть часть сделанной работы или начать с нуля. Но это невысокая цена за более качественный код. В итоге умение признать ошибку работает на вас.
Здоровая лень
Трудолюбивый разработчик пишет 1000 строк кода и потом думает, как его оптимизировать. А ленивый — сначала оптимизирует в уме, а потом пишет 50 строк, которые работают не хуже и даже быстрее.
Лень, как один из профессиональных навыков, заставляет программиста минимизировать работу. И речь не о том, чтобы увильнуть от задач. Он не тратит силы на разработку уже существующих решений и не изобретает велосипед, а находит программную библиотеку, содержащую подходящий класс или функцию. Может поискать ответ на форумах, где более опытные программисты делятся советами. Или задать вопрос коллеге за соседним столом.
А еще ленивый разработчик знает, что случаются ситуации, когда надо задуматься, стоит ли вообще начинать писать код. Не всегда заказчик ясно представляет, что хочет получить. Иногда задачи, которые он ставит, можно решить, не написав ни строки кода, — например, оптимизировать бизнес-процессы или внедрить сторонний софт.
Но главный профит, который можно получить от лени, — автоматизация. Ведь это очень логично — вместо того чтобы многократно проделывать рутинные операции, создать инструмент, с помощью которого они будут выполняться полностью автоматически или с минимальным вмешательством специалиста.
Языки программирования являются именно такими инструментами: все они призваны упростить общение человека и компьютера. Если бы их не существовало, любую программу приходилось бы составлять в виде шестнадцатиричного или бинарного кода — ведь именно в нем процессор обрабатывает поступающие команды. Поэтому уже на заре компьютерной эпохи появился язык ассемблера с его мненониками (мнемокодами), которые помогали выстраивать логику программы. А потом — и языки более высокого уровня: Фортран, Кобол, Паскаль и другие. Каждая команда и операция в них заменяли сотни, а то и тысячи строк ассемблерного кода — и экономили время программиста.
Инструментарий разработчика быстро расширялся. Появились среды программирования, сочетавшие текстовый процессор, компилятор или интерпретатор, а также средства отладки, редакторы графических интерфейсов, системы для управления версиями, конструкторы приложений.
И все это появилось потому, что тысячам программистов было лень выполнять рутинные задачи. Они искали способ делать это быстрее, легче, удобнее. И чтобы осталось время посидеть в спокойствии и подумать, что бы еще автоматизировать.
Список навыков и способностей, которые могут быть полезны программисту, можно продолжать. Например, грамотным тайм-менеджментом или лидерскими скиллами. Кто-то скажет, что разработчику не обойтись без математики, знаний SQL, JavaScript или Python. А порой окружающие будут ожидать от вас, что вы с легкостью почините сломанный тостер, решите задачи по физике или воскресите сгоревший ноутбук — как настоящий «тыжпрограммист».
А какие знания, навыки и умения вы считаете необходимыми для современного разработчика?