Что нужно, чтобы стать отличным инженером-программистом?

«Не притворяйся, пока не сделаешь это. Подделывайте это, пока не станете им! »

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

На самом деле, это только начало, и планка стать «отличным» инженером-программистом намного выше. Я расскажу о 5 концепциях, которые помогут вам за короткое время стать «отличным» инженером-программистом. В противном случае вам могут потребоваться годы или даже десятилетие, чтобы по-настоящему понять, что для этого нужно.

Блестящий фасад объекта

Как инженеры-программисты, мы считаем, что лучший способ изучить новые технологии - это перейти к большим фреймворкам или другим парадигмам программирования сверху вниз. Мы придерживаемся принципа «MVP (минимально жизнеспособный продукт), исправляем ошибки позже». Естественно, это приводит нас к рассмотрению всех различных фреймворков и API, которые мы можем соединить вместе, что может привести к созданию наиболее функционального приложения, которое мы только можем себе представить.

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

Задайте себе следующие вопросы:

Неужели это то, что вам следует делать?

Что является наивысшим приоритетом?

Как ваш проект может повлиять на других?

Чего вы пытаетесь достичь?

Это известно как синдром блестящего объекта, или фасад, потому что наплыв новой идеи мешает нам задуматься над вышеуказанными вопросами. Чтобы стать отличным инженером-программистом, вы должны рассмотреть эти вопросы, сделав шаг назад от общей картины. Затем все сводится к анализу и оценке потенциального результата вашего конечного продукта, а не только к коду.

Сложность

Технический

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

Что нужно сделать, просто.

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

Затем решите эти части по отдельности и объедините их как часть целого. Например, в этом алгоритме я мог бы абстрагировать оба цикла for из цикла while. Затем все, что мне понадобится, - это пара структур данных и функции обновления на основе узлов, которые уже были посещены в графе.

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

Организационная

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

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

Неоднозначное

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

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

Лидерство

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

Лидерство - это инициатива.

Инициатива сложна. Это похоже на то, как если бы вы взяли проект и сказали: «Это неправильно. Можно сделать гораздо больше ». Если вы просто сидите в своем кресле и ждете, пока люди что-то построят и передадут вам, значит, вы не проявляете инициативу. Вам нужно быть более самоуправляемым. У вас никогда не должно быть людей на спине, чтобы убедиться, что у вас достаточно работы, чтобы быть достойным зарплаты.

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

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

Влияние

Воздействие - это больше, чем усилия или время, которое вы вкладываете в проект. Речь идет о результате проекта. Такие вещи, как увеличение числа пользователей веб-приложения, увеличение дохода для компании или завершение проекта. Возможно, вам придется преодолеть скучные вещи, такие как устранение препятствий, устранение двусмысленности, общение с людьми и проявление инициативы. Это может быть сухо, но в конце концов это принесет гораздо больше удовольствия. Не оставляйте незавершенный проект на обочине. Большинство программистов постоянно что-то создают, может быть, ради изучения нового фреймворка или языка, и не думают о результатах. Например, предположим, что вы хотите преобразовать базу кода с Java на Scala. Хорошо, отлично. Какой был удар? Он ни для кого не сделал ничего, кроме удовлетворения вашего желания изучать новую технологию.

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

Исполнение

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