По каким признакам разработчик может понять, что становится лучшим специалистом?

0
1264
views

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

Признаки прогресса разработчика

Джанкар Махуб, старший веб-разработчик в Nielsen

Нетехнические признаки:

  • Вы ненавидите пользоваться мышью (правда), а ваша клавиатура издает звуки погромче гитары (тоже правда).
  • Вы не пытаетесь прятаться от вашего менеджера.
  • Вы не боитесь, когда коллеги делают ревью вашего кода.
  • При поиске в Google вы знаете, на какие ссылки стоит кликать, чтобы найти ответ на свой вопрос.
  • Вы за 30 секунд можете определить, какой ответ на StackOverflow точно не поможет вам решить проблему.
  • Вы не беспокоитесь о рабочих вопросах по ночам и выходным.
  • Вы любите свой ноутбук больше, чем свою спутницу жизни 😜.

Признаки, связанные с техническими вопросами:

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

Технические признаки:

  • Вы уверенно используете больше одного языка программирования. При этом один язык вы знаете очень хорошо, а другой — на достойном уровне.
  • Вы хорошо разбираетесь в рекурсивных функциях, динамическом программировании, алгоритмах, шаблонах проектирования и умеете решать запутанные проблемы.
  • Вопросы безопасности, шифрования, производительности, модульного тестирования и пр. вам не чужды.
  • У вас есть full-stack знания (dev ops, CI/CD, фронтенд, бэкенд, микросервисы, NoSQL, graphql и т. д.), хотя при этом вы вполне можете фокусироваться на чем-то одном.
  • Вы можете, не моргнув глазом, предложить название для совершенно нового фреймворка.

Дополнительно:

  • Ваша повседневная одежда — подарочная футболка с конференции.
  • Бесплатная пицца на митапах — ваша любимая еда.
  • Чтение технической документации — ваш любимый способ изучать что-либо (в отличие от просмотра видео и чтения блогов).
  • Ваш менеджер не спорит с вами относительно оценок времени.
  • Вы можете уверенно сказать «Это не будет масштабироваться», даже если не знаете, о чем речь 😂.
  • У вас есть собственный open-source проект, который никто другой не форкнул.
  • Наконец, вне работы у вас меньше трех друзей.

А теперь принимайтесь за работу, чтобы воплотить все это 😜.

Тим Менсч, Software Architect

Есть один хороший признак прогресса. Представьте, что вы смотрите на свой код, написанный некоторое время назад, и думаете: «Боже мой, как я вообще мог такое сделать, о чем я думал? Теперь я могу сделать гораздо лучше!» Вот количество этого «некоторого времени назад» и является хорошим показателем, на который можно ориентироваться.

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

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

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

Я все еще учусь. Мне по-прежнему случается взглянуть на код, написанный несколько лет назад, и осознать, что теперь я могу его улучшить. Теперь темп моего профессионального роста замедлился, но рост все еще есть. А значит, я как разработчик все еще становлюсь лучше.

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

Признаки профессионального роста программиста

Яцек Подканский, Ruby-программист

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

Глен Велтон Смит, главный консультант

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

Рэй Гарденер, работал в нескольких компаниях по разработке ПО

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

Стефен Бернс, занимается разработкой с 1990 года

Что ж, давайте посмотрим… Мы определенно становимся лучшими специалистами, если мы:

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

Ромэйн Камбони, FullStack-разработчик

Несколько замеченных мной вещей, которые могут служить признаками существенного прогресса разработчика:

  • Чаще всего код просто работает, как ожидалось.
  • Значительная часть вещей, которые вы изучаете или с которыми работаете, помечены тегами beta или release candidate.
  • Вам знакомы долгие сессии отладки, когда в конце оказывается, что проблема была в логике вашего кода, а не в чем-то еще? Больше такое просто не случается.
  • Когда дело плохо, зовут вас.
  • Вы гораздо больше думаете об архитектуре программы и масштабируемости, а не о том, как заставить ее работать. Сделать просто рабочую программу легко.
  • Вы уже достаточно всего сделали, чтобы люди больше не сомневались в вашей технической подкованности.

Бен Подгурский, Senior data engineer

Когда вы начинаете заниматься разработкой, вы уверены, что любой достойный ответ на StackOverflow имеет как минимум 1000 голосов.

Вопрос с тысячей голосов

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

Ответ с сотнями голосов

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

Ответ с десятком голосов

Что ж, все мы хотим стать «опытными разработчиками». Мы начинаем глубоко копать. И мы уже рады, когда за ответ хоть кто-то проголосовал.

За ответ кто-то проголосовал

А потом вы, наконец, становитесь разработчиком-сеньором. Вы заходите со своей проблемой на StackOverflow, но вас ждет сплошное разочарование.

Нет ответов

Поздравляю! Вы стали экспертом в каком-то направлении! Пришло время решать свои проблемы самостоятельно!

Но вам за это хотя бы заплатят.