Как пробудить любопытство на рабочем месте

Я работал с сотнями разработчиков программного обеспечения и принимал активное участие в найме многих. Большинство из них были умными и талантливыми людьми. Тем не менее, небольшая часть из них была заметно лучше в том, что они делали, независимо от их опыта.

Вы также можете знать таких разработчиков по своему опыту.

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

Я постоянно сталкиваюсь с общей чертой таких разработчиков, и я расскажу об этой особенности в этой статье: любопытство. Я называю таких разработчиков «разработчиками, движимыми любопытством».

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

Говорят, любопытство убивает кошку. Хотя это может быть верно для кошки, для разработчика все наоборот. Любопытство - вот что отличает хороших инженеров от обычных.

Чтобы оставаться актуальным в разработке программного обеспечения, необходимо постоянно учиться и совершенствоваться. Любопытство помогает разработчику учиться двумя способами. Во-первых, это поддерживает мотивацию во время обучения, чтобы вам не было скучно. Во-вторых, он подчеркивает новые возможности обучения, которые в противном случае вы бы упустили.

Но что значит быть разработчиком, движимым любопытством? Что они делают по-другому? Как вы можете, независимо от вашего опыта, проявить любопытство, чтобы стать лучшим разработчиком, чем раньше?

Они открывают слои абстракций

Чтобы оставаться актуальным в разработке программного обеспечения, необходимо постоянно учиться и совершенствоваться, потому что инструменты, языки и структуры быстро меняются из-за смены парадигмы.

Недавние сдвиги парадигмы сосредоточены на конкретной цели: уменьшении сложности. Облачные вычисления, технологии контейнеризации, такие как Docker и Kubernetes, и интерфейсные библиотеки, такие как React, являются примерами таких сдвигов парадигмы. Платформы с низким кодом и без кода позволяют разработчикам быстро создавать приложения и развертывать их одним щелчком мыши.

Но за меньшую сложность приходится платить: их становится труднее настраивать, и в определенные моменты они могут вести себя не так, как вы ожидаете.

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

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

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

Они не стесняются задавать вопросы

Чтобы научиться чему-то, нужно принять то, чего вы не знаете, и не рассматривать это как уязвимость.

Любопытные разработчики всегда ищут то, чего они не знают. И они тоже не боятся спрашивать.

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

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

Они рассматривают ошибки как повод для взлома

Каждая ошибка - это поведение, которого никто не ожидает, от разработчиков, которые написали и рецензировали код, до инженеров по тестированию, которые его проверили. По сути, каждая ошибка - это потенциальная возможность обучения.

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

Отладка ошибки - это процесс, движимый любопытством. Что могло пойти не так? Может что-то не так на конкретном сервисе? Может быть, задержка в сети?

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

Любопытные разработчики полностью разбираются в исправлении, прежде чем коммитить его. Они не копируют и вставляют фрагмент кода из ответа StackOverflow, не понимая почему и как решает проблему.

Они выходят из своей зоны комфорта

Вы находитесь в зоне комфорта, если можете выполнять свою работу, используя уже известные вам знания (языки, инструменты, фреймворки и т. Д.). Сначала это кажется безопасным, но когда продлится, он превращается в болото. С каждым днем ​​выбраться из этого становится все труднее.

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

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

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

Например, если вы уже знакомы с JavaScript, вы можете выйти из зоны комфорта, изучив TypeScript перед изучением Java.

Они ставят под сомнение каждое требование

Как инженер-программист, вы должны хорошо понимать требования того, над чем вы работаете. Часто даже лучше, чем пользователи, которые об этом просят.

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

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

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

Если вы слепо следуете тому, что вас просят сделать требования, вы можете вскоре остаться без работы, потому что машины уже начали оттачивать свои навыки в преобразовании требований в код.

Им интересны другие дисциплины

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

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

Как пробудить любопытство на рабочем месте?

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

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

Что компания может сделать для развития любопытства и обучения?

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

20% времени - это проект, в котором у сотрудников есть один день в неделю для работы над своими побочными проектами. Хотя Google в конце концов прекратил эту практику из-за опасений по поводу падения производительности, я считаю, что с правильной культурой он может способствовать повышению производительности и инновациям.

Откуда мне знать? Из опыта. У нас в Mendix есть аналогичная практика, которая называется Crafting Days, где каждый инженер может тратить два дня в месяц на все, что ему нравится. Это может быть инновационная идея в платформе или самообучение, например, опробование новых технологий. Представление результатов поощряется к обмену знаниями.

Бюджеты на обучение полезны для посещения конференций и покупки книг или онлайн-подписок. Любопытные разработчики могут использовать этот перк для общения с другими разработчиками и овладения их интересами.

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

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

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

Последние мысли

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

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

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

  • Задавайте еще вопросы. Это может быть связано с требованиями или техникой, которую вы раньше не видели.
  • Узнайте, как изнутри работают среды выполнения, библиотеки и инструменты.
  • Отлаживайте ошибки с любопытством, чтобы разобраться в них.
  • Не оставайтесь надолго в своей зоне комфорта. Регулярно выходите за рамки этого, чтобы стимулировать обучение.
  • Используйте (или требуйте) льготы в вашей компании, которые побуждают вас проявлять любопытство.

Спасибо за прочтение!