Я тупой разработчик. И это моё главное преимущество в IT – Фил Ранжин
Как стать хорошим разработчиком?
Введение в тему
- Обсуждение о том, как часто разработчики оправдывают свои недостатки, ссылаясь на давление со стороны команды.
- Вопрос о том, что делает разработчика хорошим в глазах коллег и начальства: технические навыки или что-то другое.
Качества хорошего разработчика
- Хорошими считаются не те, кто закрывает много задач, а те, кто постоянно говорит о своих достижениях.
- У каждого успешного разработчика есть своя уникальная "фишка", которая выделяет его среди остальных.
Специализация и экспертиза
- Пример личной специализации в обработке ошибок; другие разработчики обращались за советом по этой теме.
- Знания о специфических аспектах языка программирования могут сделать вас экспертом даже без глубокого погружения.
Подход к обучению и развитию
- Важно находить интересные для себя темы и развиваться в них; это может быть проще, чем кажется.
- Разработка требует понимания множества аспектов языка программирования; даже небольшие знания могут выделить вас как специалиста.
Управление восприятием
- Умение управлять тем, как вас воспринимают другие — важный аспект карьеры программиста.
- Большинство программистов не понимает код на уровне деталей; знание этих деталей может стать вашей "фишкой".
Оценка работы программиста
- Как вы работаете и пишете код не всегда влияет на то, как вас оценивают коллеги.
- Понимание бизнеса не является обязательным для программиста; важно уметь говорить об этом.
Заключение
- Программисты должны сосредоточиться на своей роли в команде и понимать свою ценность через призму командной работы.
Код и его значение в индустрии
Программирование как центр индустрии
- Вся суть индустрии заключается в программировании; все, кто утверждает иначе, ошибаются.
- Чтобы быть уважаемым программистом, необходимо сосредоточиться на коде и постоянно говорить о нем.
Технический долг и качество кода
- Программисты часто сталкиваются с требованиями бизнеса: быстро, дешево и качественно. Однако их понимание качества может отличаться от мнения бизнеса.
- Хороший программист всегда говорит о техническом долге и необходимости времени для написания качественного кода.
Психологические аспекты разработки
- Синдром самозванца распространен среди разработчиков; важно знать, как справляться с этим чувством.
- Большинство известных программистов просто делают то, что обсуждается в сообществе, а не являются настоящими гениями.
Создание видимости профессионализма
- Многие создают видимость экспертизы через разговоры о сложных темах без реального глубокого понимания.
- Часто те, кто много говорит о программировании, могут оказаться менее опытными на практике.
Гибкость и адаптивность в карьере
- Успешные программисты обладают гибкостью: они могут работать над разными проектами и адаптироваться к новым условиям.
- Знание нескольких языков программирования помогает выделяться среди коллег и расширяет возможности для карьерного роста.
Ключевые навыки для собеседований
- Существуют базовые знания (20%), которые помогут ответить на 80% вопросов на собеседованиях.
- Собеседования часто требуют знаний стандартных алгоритмов и структур данных.
Что важно знать на собеседовании программиста?
Подход к техническим вопросам
- На собеседованиях часто задают вопросы по коду, и важно уметь отвечать на них. Это составляет треть всех вопросов.
- Если не знаешь ответ на вопрос, можно сослаться на свои интересы в других областях, например, сборке мусора, чтобы уравнять разговор с интервьюером.
- Знания для собеседований не сложные; их можно сравнить с подготовкой к экзаменам. Большинство вопросов легко гуглятся.
Важность общения с интервьюером
- Разговор с техническим директором или тимлидом может быть решающим моментом. Здесь важно показать свои интересы в индустрии.
- Умение вести беседу и задавать вопросы помогает избежать неловких моментов, когда ты не знаешь ответа.
Тактики ведения разговора
- Начинай отвечать на вопросы теми темами, которые тебе известны, чтобы плавно перейти к знакомым аспектам.
- Признавайся в незнании некоторых тем и показывай желание учиться. Это может произвести хорошее впечатление на работодателя.
Стратегия взаимодействия
- Важно создать атмосферу доверия во время собеседования. Постарайся сделать так, чтобы интервьюер чувствовал себя комфортно.
- Задавай вопросы о практике интервьюера и обсуждай общие проблемы в коде. Это поможет наладить контакт.
Как говорить о бизнесе?
- Избегай акцента на бизнесе при разговоре с программистами; это может вызвать недовольство. Лучше сосредоточиться на коде и технологиях.
- Если ты метишь в менеджеры, тогда стоит говорить о бизнесе; но для линейного разработчика это неуместно.
Признание проблем
- Умей открыто говорить о своих проблемах и недостатках. Это показывает честность и готовность развиваться как специалиста.
Что делать, если задача кажется слишком сложной?
Важность обращения за помощью
- Обсуждается, как важно признавать свои ограничения и обращаться к более опытным коллегам за помощью. Это считается признаком хорошего программиста.
- Признавая другого инженера экспертом, вы создаете крепкие профессиональные связи и показываете свою готовность учиться.
Сложность задач
- Все задачи воспринимаются как сложные, даже если они кажутся простыми на первый взгляд. Программисты часто преувеличивают сложности своих задач.
- Даже небольшие изменения могут привести к необходимости переписывания больших частей системы, что создает впечатление о высокой сложности работы.
Как управлять ожиданиями
- Программист может столкнуться с недовольством из-за постоянного нахождения сложных задач. Однако это может быть воспринято как знак компетентности.
- Важно уметь управлять ожиданиями бизнеса относительно сроков выполнения задач и их сложности.
Видимость работы
- Необходимо продемонстрировать важность своей работы через комментарии в коде или пулл-реквестах. Это помогает показать значимость выполненной работы.
- Работая над сложными задачами, программист должен активно делиться деталями процесса с командой и бизнесом для повышения видимости своей работы.
Стратегия решения проблем
- Перед началом решения задачи стоит "раздуть" проблему, чтобы все понимали её важность. Это поможет создать впечатление о серьезности вашей работы.
- Загружайте коллег вопросами и деталями проблемы — это сделает вашу задачу более значимой в глазах команды.
Успехи в решении сложных задач
- Делитесь своими успехами в решении технических вызовов с командой. Это укрепляет ваш статус как специалиста по решению сложных проблем.
- Когда вам доверяют сложные задачи, это поднимает вашу репутацию внутри команды и делает вас ценным членом коллектива.
Эффективное взаимодействие с менеджерами
- На стендапах важно проявлять инициативу и задавать вопросы, чтобы звучать продуктивно и эффективно.
Как эффективно работать в команде и продвигать свои идеи?
Уведомление о переработках
- Говорится о важности уведомления команды о переработках, даже если работа была выполнена ночью. Это помогает установить прозрачность и ожидания по оплате.
Запрос на ревью кода
- Автор делится опытом отправки больших блоков кода на ревью, подчеркивая необходимость детального анализа со стороны коллег для улучшения качества работы.
Декомпозиция задач
- Обсуждается метод декомпозиции крупных задач на более мелкие, что позволяет закрывать больше задач за тот же период времени и улучшает видимость работы в команде.
Важность публичных выступлений
- Подчеркивается значимость активного участия в митапах и ведении блога для создания имиджа эксперта. Это помогает выделиться среди коллег и укрепляет профессиональный статус.
Фундаментальные знания против новых технологий
- Обсуждается конкуренция между знанием новых технологий и глубоким пониманием фундаментальных концепций программирования. Рекомендуется сосредоточиться на старых, но важных аспектах, которые часто игнорируются другими программистами.
Риски самопиара
- Затрагивается вопрос о том, как избежать неприятностей из-за чрезмерного самопиара или принятия задач, с которыми не справишься. Важно находить баланс между продвижением своих идей и реальными возможностями.
Как стать хорошим инженером?
Принципы самосовершенствования
- "Fake it, you make it" — делая вид, что ты инженер-мыслитель, ты становишься им. Это помогает изучать сложные вещи и прокачивать свои навыки.
- Важно признавать свои ограничения: "Мне не хватило компетенций". Запрашивание помощи у коллег — это нормально и даже полезно для роста.
- У всех есть пробелы в знаниях. Признание этого факта создает атмосферу поддержки среди программистов и способствует совместному решению задач.
Работа с трудными задачами
- Не стоит пытаться решить задачу втихую, если она слишком сложная. Лучше обратиться за помощью к команде, чтобы избежать плохого результата.
- Обращение за помощью к нескольким людям показывает заботу об инженерии и желание найти лучшее решение проблемы.
Значение обратной связи
- Обратная связь и поддержка от коллег важны для профессионального роста. Необходимо активно взаимодействовать с командой через различные каналы (Twitter, Telegram).