20 августа 2022 г.

Ничего не зная

Изучайте основы разработки, играйте в гольф и думайте о будущем, опираясь на настоящее.

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

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

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

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

Это 3 наблюдения, которые выделяются для меня до сих пор:

  • Сила индивидуальных взглядов
  • Смирение как установка на рост
  • Баланс производительности сегодня с удобством обслуживания в будущем

Сила индивидуальных взглядов

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

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

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

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

Смирение как установка на рост

Как оказалось, быть манекеном в комнате может быть очень полезным опытом обучения.

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

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

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

Одним важным, но неявным элементом здесь является отношение группы к техническому старшинству. Вместо того, чтобы акцентировать внимание на том, что «мое решение — лучшее», у всех на уме возникает вопрос: «Как мы можем учиться, делясь друг с другом своими уникальными точками зрения?».

Баланс производительности сегодня с удобством обслуживания в будущем

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

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

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

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

Вы можете ходить по жизни во сне и принять путь, который был проложен для вас. Вы можете принять мир таким, какой он есть. Но это не обязательно.

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

— Брет Виктор

У тебя есть вопросы? Обратная связь? Давай поговорим".

Не являетесь участником Medium? Смотрите больше моих работ бесплатно на https://www.juliangoh.me/blog.