Чему я научился, используя ChatGPT в качестве наставника по программированию

Чему я научился, используя ChatGPT в качестве наставника по программированию

8 мая 2023 г.

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

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

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

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

Давайте устроим быстрый тест-драйв!

TL;DR.

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

Краткая легенда.

💬 Мои подсказки.

🤖 Ответы ChatGPT.

<цитата>

🤔 Мои мысли/комментарии.

Настройка.

💬 Выступайте в роли опытного профессионального разработчика программного обеспечения с более чем 10-летним опытом. Представьте, что вы наставляете более молодого, младшего коллегу, с опытом работы не более 2-3 лет. Я буду задавать вам разные вопросы, связанные с программированием и карьерой разработчиков программного обеспечения. Я буду спрашивать их как этого младшего разработчика. Отвечайте на них так, чтобы мне было проще стать лучшим разработчиком и расти профессионально.

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

<цитата>

🤔 Пока все хорошо. Начнем!

Вопрос на миллион долларов: 10 лайфхаков, которые помогут стать лучшим разработчиком.

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

🤖 Конечно! Вот 10 лайфхаков, которые вы можете быстро применить, чтобы улучшить свои навыки разработчика:

  1. Использование сочетаний клавиш. Изучите и используйте сочетания клавиш для IDE или редактора, чтобы быстрее перемещаться по коду и управлять им. Это сэкономит ваше время и повысит производительность.

    2. Следуйте технике помидора: разбейте свою работу на небольшие, управляемые интервалы (обычно 25 минут). ) с небольшим перерывом. Эта техника поможет вам оставаться сосредоточенным и поддерживать постоянный рабочий ритм.

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

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

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

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

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

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

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

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

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

<цитата>

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

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

Давайте углубимся в каждое предложение:

  1. Используйте сочетания клавиш. Совет. Быстро и легко реализовать, и это, несомненно, повысит вашу производительность. Одна вещь, которая меня удивляет, это почему только простые сочетания клавиш? Использование более продвинутых функций, таких как аналитика кода, фрагменты, автоформатеры, генераторы кода и помощники ИИ, такие как GitHub Copilot (или, собственно, ChatGPT), было бы одинаково легко начать использовать и обеспечить гораздо больший прирост.

  1. Следуйте технике помидора: хороший совет. Вы обязательно должны попробовать это. Если вы никогда раньше не слышали о Pomodoro, вам, возможно, придется погуглить или задать ChatGPT дополнительный вопрос, но в остальном это довольно просто и не требует пояснений.

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

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

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

  1. Комментируйте свой код: это первый совет, который я считаю спорным (хотя, как я уже говорил ранее, не потому, что он явно неправильный, а из-за личных предпочтений). Есть две точки зрения на комментарии: много комментировать и делать код настолько понятным, что вам не нужны комментарии (если только вам не нужно объяснять бизнес-цель вашего кода). Я твердо придерживаюсь второго лагеря, поэтому очень авторитетное правило ChatGPT «писать комментарии» меня не находит. С другой стороны, в нем также говорится о необходимости писать содержательные комментарии и объяснять цель вашего кода, с чем я полностью согласен. Но в нем также говорится объяснять функциональность вашего кода, что я считаю плохой практикой и пустой тратой времени. Так что у меня смешанные чувства по этому поводу.

  1. Ищите обзоры кода. Этот совет настолько надежен и прост в применении, насколько это вообще возможно. Вы должны как можно чаще проводить проверки кода, особенно если вы новичок.

  1. Проявляйте любопытство. Это второй совет, который я считаю несколько спорным. Изучение новых языков, фреймворков и инструментов — в целом хороший совет (хотя я бы поспорил насчет «постоянно» — это пахнет разработкой, основанной на модных словечках), но это может быть не лучшая стратегия для новичка, у которого всего год или два опыта. опыт. Будучи младшим, вы должны больше сосредоточиться на создании прочной основы лучших практик и принципов и их углубленном изучении, что легче, если вы некоторое время сосредоточены на освоении одного стека. Но, честно говоря, я тут придираюсь, и я бы не назвал этот совет неправильным.

  1. Разбивайте проблемы на мелкие части. Хороший совет, но, опять же, слишком высокоуровневый. Эффективное решение проблем не является тривиальной задачей. Чтобы реализовать это на практике, потребуется дополнительная детализация.

  1. Позаботьтесь о себе. Очень хороший и применимый совет. На самом деле приятно, что в ChatGPT есть такой совет, который не имеет прямого отношения к техническим навыкам.

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

Сочетания клавиш — копнем глубже.

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

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

Вот несколько категорий сочетаний клавиш, на которых стоит сосредоточиться:

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

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

3. Быстрые пути рефакторинга. Рефакторинг является важной частью поддержания чистоты и эффективности кода. Ярлыки, которые помогут вам быстро реорганизовать код, могут сэкономить вам много времени. Примеры включают «Переименовать символ», «Метод извлечения» и «Изменить подпись».

4. Сочетания клавиш для отладки. Отладка является важной частью процесса разработки. Ярлыки, помогающие управлять точками останова, выполнять код и проверять переменные, могут упростить сеансы отладки. Примеры включают «Переключение точки останова», «Шаг вперед» и «Шаг внутрь».

5. Ярлыки для конкретных IDE: ваша IDE или редактор кода могут иметь уникальные функции или инструменты, доступ к которым можно получить с помощью ярлыков. Ознакомьтесь с этими сочетаниями клавиш, чтобы максимально эффективно использовать выбранную среду разработки.

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

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

<цитата>

🤔 Отличная классификация! Я впечатлен. Мне также нравятся конкретные примеры для каждой категории. Советы такого уровня уже применимы — вы можете легко найти «Ярлыки навигации» или «Перейти к определению» в документации вашей IDE. Кроме того, категории хорошо подобраны. Именно они существенно повысят вашу продуктивность.

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

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

🤖 Безусловно! Помимо сочетаний клавиш, существует множество других инструментов и функций IDE, которые могут помочь повысить вашу производительность и эффективность. Вот некоторые из них:

  1. Фрагменты кода и шаблоны. Многие IDE и редакторы поддерживают фрагменты кода или шаблоны, которые может генерировать часто используемые структуры кода или шаблонный код всего несколькими нажатиями клавиш. Это сэкономит ваше время и поможет поддерживать согласованность кода.

2. Автодополнение и IntelliSense. Современные IDE и редакторы кода часто обеспечивают интеллектуальное завершение кода, которое предлагает варианты завершения для переменных, методов или ключевых слов в зависимости от текущего контекста. Это может ускорить процесс написания кода и снизить вероятность опечаток или синтаксических ошибок.

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

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

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

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

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

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

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

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

<цитата>

🤔 А теперь поговорим! Список не является полностью исчерпывающим (например, в нем отсутствуют средства автоматического форматирования кода, и, что удивительно, по-прежнему отсутствуют помощники ИИ — разве ChatGPT не знает о своих собственных возможностях? Или он слишком скромный?), но он достаточно солидный и широкий, чтобы быть действительно полезным для начинающего разработчика. Кроме того, теперь, когда вы знаете о богатстве современных инструментов разработчика, вы можете постепенно копать еще глубже.

Контроль версий — получение более действенных и кратких советов.

💬 Одним из советов, которые вы мне дали, был "Основной контроль версий". Но действительно ли это быстрый и легкий лайфхак? Мне кажется, что это долгий процесс, чтобы полностью освоить контроль версий. Есть ли какие-нибудь быстрые советы, связанные с контролем версий, которые можно было бы реализовать прямо сейчас?

🤖 Вы правы в том, что освоение контроля версий может занять больше времени, но есть несколько быстрых советов и рекомендаций, которые вы можете применить прямо сейчас, чтобы более эффективно использовать системы контроля версий, такие как Git. Вот некоторые из них:

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

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

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

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

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

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

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

<цитата>

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

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

В целом неплохо!

Чтение чистого кода — устранение двусмысленности.

💬 Вы дали мне совет "Читай чистый код". Но как я, как новичок, узнаю, какой код чистый? Как это распознать? И где найти такой код, чтобы прочитать?

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

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

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

3. Удобство сопровождения. Чистый код легко модифицировать, расширять и рефакторить. Он позволяет избежать дублирования кода (принцип DRY) и следует рекомендациям, чтобы свести к минимуму вероятность появления ошибок при внесении изменений.

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

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

Чтобы найти чистый код для чтения и обучения, рассмотрите следующие источники:

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

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

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

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

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

<цитата>

🤔 На этот раз результат в лучшем случае не очень.

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

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

Попробуем копнуть глубже:

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

🤖 Вы правы, что не все проекты с открытым исходным кодом имеют качественный код. Чтобы определить качественные проекты с открытым исходным кодом, вы можете учитывать следующие факторы:

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

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

3. Четкая документация. Хорошо документированные проекты часто являются признаком хорошо поддерживаемой и высококачественной кодовой базы. Ищите проекты с подробными файлами README, документацией по API и руководствами по использованию.

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

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

6. Автоматизированное тестирование. Проекты с надежным набором автоматических тестов показывают, что сопровождающие заботятся о качестве кода и о том, чтобы программное обеспечение работало должным образом. Ищите проекты с высоким охватом тестами и конвейером непрерывной интеграции (CI), который запускает тесты при каждой фиксации или запросе на вытягивание.

7. Зависимости и лицензирование. Качественные проекты должны иметь четкий список зависимостей вместе с соответствующими лицензиями. Это показывает, что сопровождающие уделяют внимание юридическим и операционным аспектам проекта.

Чтобы начать поиск высококачественных проектов с открытым исходным кодом, вы можете просмотреть тщательно отобранные списки или коллекции, например Awesome Lists на GitHub, в которых собраны популярные и хорошо зарекомендовавшие себя проекты в различных областях. Вы также можете ознакомиться с проектами, поддерживаемыми авторитетными организациями или разработчиками, известными в отрасли.

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

<цитата>

🤔 Этот ответ снова достойный. Хотя такие факторы, как популярность проекта или хорошая документация, не обязательно гарантируют чистый код, все они в совокупности представляют собой приличный прокси — возможно, настолько хороший, насколько вы можете получить, поскольку жестких гарантий никогда не бывает. И совет смотреть на кураторские списки, хотя они скорее показатель популярности, а не обязательно качества, обеспечивает разумную отправную точку. Он не является исчерпывающим, так как, например, поиск на GitHub также является отличным способом найти популярные и активные проекты с открытым исходным кодом. Но учитывая, что распознавание чистого кода — очень субъективная и сложная тема, этот ответ вполне приемлем. Мы могли бы попытаться копнуть еще глубже, но мне нужно контролировать длину этого поста...

Комментирование вашего кода — разъяснение сомнительных аспектов.

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

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

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

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

3. Уточните назначение функций и классов. Хотя имена функций и классов должны быть описательными, краткий комментарий может предоставить дополнительный контекст о назначении и ожидаемом поведении функции или класса.

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

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

Вот несколько советов о том, как писать эффективные комментарии:

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

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

3. Избегайте очевидного: воздержитесь от написания комментариев, которые просто повторяют то, что делает код. Сосредоточьтесь на предоставлении контекста, обоснования или объяснений, которые не сразу очевидны из самого кода.

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

<цитата>

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

Вывод.

Тут и там были небольшие оплошности, но в целом результаты на удивление хорошие.

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

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

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

Для новичка более сложной частью может быть выяснение того, о чем именно спрашивать, чтобы перейти от поверхностных ответов к более глубоким. Если у вас нет глубоких знаний в данной области, часто это далеко не очевидно. Однако это можно смягчить, научившись задавать более общие «детализирующие» вопросы, такие как «Почему вы выбрали этот ответ?», «Можете ли вы уточнить?», «Действительно ли этот ответ лучший?», « Это единственный правильный ответ?», «Каковы плюсы и минусы?», «Какие могут быть альтернативы?», «Есть ли еще подобные методы?» и так далее. Умение задавать подобные вопросы также поможет вам в повседневной работе: при уточнении требований, проведении мозгового штурма с коллегами по команде или даже при работе с настоящим наставником-человеком, так что само по себе это полезное обучение.

<цитата>

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

Это не полная замена настоящего наставника-человека, но если у вас нет доступа к нему, вам обязательно стоит попробовать ChatGPT. И даже если у вас есть наставник, все равно стоит использовать обоих, поскольку ChatGPT гораздо более доступен. Вы можете начать с ChatGPT (и использовать его чаще), а затем попросить своего настоящего наставника оценить его ответы, расширить их или углубиться в более сложные области, придерживаясь ChatGPT для более простых случаев.

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


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE