paint-brush
プログラミングメンターとしてChatGPTを使用して学んだこと@zawistowski
5,165 測定値
5,165 測定値

プログラミングメンターとしてChatGPTを使用して学んだこと

Wojciech Zawistowski22m2023/05/08
Read on Terminal Reader

長すぎる; 読むには

経験豊富なメンターほど成長を加速させるものはありません。 ChatGPT は合理的な代替品として機能しますか?私は 20 年以上の経験を持つ開発者であり、テストを行いました。
featured image - プログラミングメンターとしてChatGPTを使用して学んだこと
Wojciech Zawistowski HackerNoon profile picture
0-item
1-item

経験豊富なメンターほどあなたの成長を加速させるものはありません。ただし、1 つを見つけるのは困難な場合があり、その入手可能性は限られていることがよくあります。


一方、 ChatGPTのような AI エージェントは 24 時間 365 日対応しており、知識も豊富なようです。そのようなエージェントは、本物の人間の指導者の合理的な代役として役立つでしょうか?


私が特に興味を持っているのは、より「メタ」なアドバイスです。これは、単にコードを生成したり説明したりするだけでなく、開発者として成長し、成熟するのに役立つ、広範な経験を通じてのみ得られる小さなヒントやコツです


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. キーボード ショートカットを使用する: 堅実なアドバイス。迅速かつ簡単に実装でき、間違いなく生産性が向上します。私が驚いたことの 1 つは、なぜ単純なキーボード ショートカットしかないのかということです。コード インテリジェンス、スニペット、オートフォーマッター、コード ジェネレーター、GitHub Copilot (または ChatGPT 自体) などの AI アシスタントなどのより高度な機能を利用すると、同様に簡単に使い始めることができ、はるかに大きなブーストが得られます。


  1. ポモドーロ テクニックに従ってください: 良いアドバイスです。ぜひ試してみてください。ポモドーロについて聞いたことがない場合は、Google で検索するか、ChatGPT でフォローアップの質問をする必要があるかもしれませんが、それ以外は非常に簡単で自明です.


  1. マスター バージョン管理: 良いアドバイスですが、間違いなくライフハックではありません。 「マスター」という言葉でさえ、それが迅速かつ簡単な修正ではないことを明確に示しています。また、バージョン管理は、生産性を向上させるための「ハック」ではなく、プログラミング言語、メイン フレームワーク、またはデータベースと同様に、主要な技術スタックの不可欠な部分であると主張します。しかし、それ以外の場合、アドバイスは正しいです。


  1. 反復的なタスクを自動化する: 堅実なアドバイスですが、繰り返しますが、さらに調査する必要があります。すぐに実装するにはレベルが高すぎます。


  1. きれいなコードを読み書きする: きれいなコード (または一般的なコード) をたくさん読むことは素晴らしいアドバイスであり、実装も簡単です。唯一の難しい部分は、初心者として、どのコードがクリーンで、どこにあるのかを知る方法です。これもまた、より深い調査が必要です。ただし、きれいなコードを書くことは、まったく別の問題です。それはあなたの技術の生涯にわたる習得の一部であり、本全体がこのトピックについて書かれています.絶対に勉強する必要がありますが、バージョン管理をマスターするのと同じように、ライフハックにはほど遠いものです。


  1. あなたのコードにコメントしてください: これは私が議論の余地があると思う最初のヒントです (ただし、前に述べたように、明らかに間違っているからではなく、個人的な好みによるものです)。コメントに関しては 2 つのスタンスがあります。大量にコメントすることと、コメントが不要なほど自明なコードを作成することです (コードの背後にあるビジネス上の目的を説明する必要がある場合を除きます)。私は第 2 陣営に強いので、ChatGPT の非常に権威ある「コメントを書く」機能には共感できません。一方で、意味のあるコメントを書き、コードの目的を説明するようにも書かれていますが、これには非常に同意します。しかし、コードの機能を説明するようにも言われています。これは悪い習慣であり、時間の無駄だと思います。だから、私はこれについて複雑な感情を持っています。


  1. コード レビューを求める: このアドバイスは、可能な限り確実で簡単に適用できます。特に初心者の場合は、可能な限りコード レビューを行う必要があります。


  1. 好奇心を持ってください: これは、多少議論の余地があると思われる 2 番目のアドバイスです。新しい言語、フレームワーク、およびツールを探索することは、全体的には良いアドバイスですが (私は「常に」について議論したいと思いますが、バズワード主導の開発のようなにおいがします)、1、2 年しか経験していない初心者にとっては最善の戦略ではないかもしれません。経験。ジュニアとして、ベスト プラクティスと原則の強固な基盤を構築し、それらを詳細に学習することに集中する必要があります。しかし、率直に言って、私はここでつまらないことを言っており、このアドバイスが間違っているとは言いません.


  1. 問題を細かく分割する: 堅実なアドバイスですが、繰り返しますが、レベルが高すぎます。問題を効果的に分解することは簡単ではありません。これを実際に実装するには、さらにドリルダウンする必要があります。


  1. 気をつけてください: 非常に適切で適切なアドバイスです。 ChatGPT にこのようなハードテック スキルとは直接関係のないアドバイスが含まれているのは、実際には素晴らしいことです。


さて、すべてのヒントを確認しました。悪くない、全然悪くない。ただし、それらすべてがすぐに適用できるわけではありません。いくつか掘り下げて、コアにどれだけ近づくことができるかを見てみましょう

キーボード ショートカット - より深く掘り下げます。

💬 「キーボード ショートカットを使用する」のヒントをさらに掘り下げてみましょう。考えられるすべてのショートカットを学習する必要があるのか、それとも特定のカテゴリのショートカットに焦点を当てる必要があるのか 、少し詳しく説明してもらえますか?


🤖たしかに!キーボード ショートカットに関しては、生産性と効率に最も大きな影響を与えるものを学ぶことに集中することが重要です。使用可能なすべてのショートカットを学習する必要はありませんが、最も時間を節約し、ワークフローを合理化するのに役立つショートカットを優先してください。


注目すべきキーボード ショートカットのカテゴリを次に示します。


  1. ナビゲーション ショートカット: これらのショートカットを使用すると、コード内をすばやく移動したり、ファイルやタブ間をジャンプしたり、特定のシンボルやキーワードのインスタンスを見つけたりすることができます。例としては、「定義に移動」、「行に移動」、「すべての参照を検索」などがあります。


  2. 編集ショートカット: これらのショートカットは、テキストの切り取り、コピー、貼り付け、書式設定によってコードを操作するのに役立ちます。例としては、「重複行」、「行を上下に移動」、「コメントの切り替え」などがあります。


  3. リファクタリングのショートカット: リファクタリングは、クリーンで効率的なコードを維持するために不可欠な部分です。コードをすばやくリファクタリングするのに役立つショートカットを使用すると、時間を大幅に節約できます。例としては、「シンボルの名前変更」、「抽出方法」、「署名の変更」などがあります。


  4. デバッグのショートカット: デバッグは開発プロセスの重要な部分です。ブレークポイントの管理、コードのステップ実行、変数の検査に役立つショートカットは、デバッグ セッションを効率化します。たとえば、「ブレークポイントの切り替え」、「ステップ オーバー」、「ステップ イン」などがあります。


  5. IDE 固有のショートカット: IDE またはコード エディターには、ショートカットからアクセスできる独自の機能やツールがある場合があります。これらのショートカットをよく理解して、選択した開発環境を最大限に活用してください。


これらのショートカットの実際のキーの組み合わせは、使用している IDE またはコード エディターによって異なる場合があることに注意してください。これらのショートカットを見つけて好みに合わせてカスタマイズするには、エディターのドキュメントまたは設定を参照してください。


ショートカットを学ぶときは、一度にいくつかに集中することから始めます。それらに慣れてきたら、毎日のワークフローに徐々に多くのショートカットを取り入れてください。時間が経つにつれて、これらのショートカットを使用することが当たり前になり、生産性と効率が大幅に向上することに気付くでしょう。


🤔それは素晴らしいカテゴライズです!私が感銘を受けた。また、各カテゴリの具体的な例も気に入っています。このレベルのアドバイスはすでに実行可能です。IDE のドキュメントで「ナビゲーション ショートカット」または「定義へ移動」を簡単に探すことができます。さらに、カテゴリは適切に選択されています。彼らは本当にあなたの生産性を大幅に向上させるものです.


まだ足りないものが 1 つあります。それは、オートコンプリートやコード スニペットなど、より実質的な生産性ブースターです。それらが存在することを知らないふりをしているので、それらについて明示的に尋ねたくありません。ただし、ルールを少し曲げてみましょう。


💬 あなたは、「コードをより速くナビゲートして操作するため」、「生産性と効率に最も大きな影響を与えるものを学ぶことに集中することが重要である」、「効果を発揮するものを優先すること」、ショートカットを学ぶべきだとおっしゃいました。最も時間を節約し、ワークフローを合理化するのに役立ちます。」キーボード ショートカット以外に、これらの目標を達成するのに役立つツールや IDE 機能はありますか?


🤖 絶対!キーボード ショートカット以外にも、生産性と効率の向上に役立つツールや IDE 機能が多数あります。それらのいくつかを次に示します。


  1. コード スニペットとテンプレート: 多くのIDEとエディターは、コード スニペットまたはテンプレートをサポートしており、一般的に使用されるコード構造やボイラープレート コードを数回のキーストロークで生成できます。これらは時間を節約し、コードの一貫性を維持するのに役立ちます。


  2. オートコンプリートと IntelliSense : 最新の IDE とコード エディターは、多くの場合、現在のコンテキストに基づいて変数、メソッド、またはキーワードの補完を提案するインテリジェントなコード補完を提供します。これにより、コーディング プロセスが高速化され、タイプミスや構文エラーの可能性が減少します。


  3. 統合されたデバッグ: IDE に統合されたデバッグ ツールを使用すると、開発環境を離れることなく、ブレークポイントの設定、コードのステップ実行、変数の検査を行うことができます。このシームレスなデバッグ エクスペリエンスは、問題をより効率的に見つけて修正するのに役立ちます。


  4. バージョン管理の統合: 多くの IDE は、Git などのバージョン管理システムの組み込みサポートを提供します。この統合により、変更のコミット、ブランチの作成、競合の解決など、一般的なバージョン管理タスクをすべて IDE 内で簡素化できます。


  5. コード分析とリンティング: リアルタイムのコード分析とリンティング ツールは、コードを記述するときに、構文エラー、未使用の変数、コード スタイル違反などの潜在的な問題を特定するのに役立ちます。これにより、デバッグの時間を節約し、コードがベスト プラクティスに準拠していることを確認できます。


  6. リファクタリング ツール: 一部の IDE には、メソッドの抽出、変数の名前変更、メソッド シグネチャの変更など、コードを自動的にリファクタリングできるツールが組み込まれています。これらのツールを使用すると、手動で作業することなく、クリーンで効率的なコードを維持できます。


  7. タスクとプロジェクトの管理: 多くの IDE とエディターには、タスクの管理、To Do リストの作成、およびプロジェクト内の進行状況の追跡を可能にする機能があります。これにより、整理された状態を維持し、より効果的に作業に優先順位を付けることができます。


  8. カスタマイズ: ほとんどの IDE とエディターは、テーマ、プラグイン、構成オプションなど、高度なカスタマイズを提供します。好みに合わせて開発環境を調整することで、作業をより快適かつ効率的に行うことができます。


  9. 統合ターミナル: IDE 内に統合ターミナルがあると、コマンドの実行、プロジェクトのビルド、またはウィンドウを切り替えることなくバージョン管理との対話が可能になり、時間を節約できます。


これらのツールと機能により、コーディング エクスペリエンスが大幅に向上し、効率と生産性が向上します。時間をかけて IDE またはコード エディターの機能を調べ、ワークフローを強化できる新しいツールやプラグインをためらわずに試してください。


🤔 今、私たちは話しています!リストは完全ではありません (たとえば、コードのオートフォーマッターが欠けていたり、驚くべきことに AI アシスタントが欠けていたりします。ChatGPT はそれ自体の機能を認識していないのでしょうか? それとも単純すぎるのでしょうか?)初心者の開発者にとって本当に便利です。さらに、最新の開発者ツールの豊富さに気付いたので、徐々にさらに深く掘り下げることができます。

バージョン管理 - より実用的で簡単なヒントに取り掛かります。

💬あなたが私にくれたヒントの 1 つは、「マスター バージョン管理」でした。しかし、それは本当に素早く簡単なライフハックでしょうか?バージョン管理を完全にマスターするには長いプロセスのように思えます。すぐに実装できるバージョン管理関連の簡単なヒントはありますか?


🤖 バージョン管理をマスターするプロセスが長くなる可能性があることは間違いありませんが、Git などのバージョン管理システムをより効果的に使用するためにすぐに実装できる簡単なヒントとベスト プラクティスがいくつかあります。ここにいくつかあります:


  1. 頻繁に小さな単位でコミットする: 単一の論理的な変更を含む、焦点を絞った小規模なコミットを行います。これにより、プロジェクトの履歴を理解し、問題を特定し、必要に応じて変更を元に戻すことが容易になります。


  2. 説明的なコミット メッセージを書く: 変更をコミットするときは、変更とその目的を説明する明確で簡潔なコミット メッセージを書きます。これにより、あなたとあなたのチームはプロジェクトの履歴を理解しやすくなり、後で特定の変更を見つけやすくなります。


  3. ブランチを使用する: 新機能、バグ修正、または実験用にブランチを作成します。これにより、メイン ブランチの安定性が維持され、メインのコードベースに影響を与えることなく、複数のタスクを並行して処理できます。


  4. 定期的にマージする: メイン ブランチからフィーチャー ブランチに変更を定期的にマージして、変更を統合するときにそれらを最新の状態に保ち、マージの競合を最小限に抑えます。


  5. プッシュする前にプル: 変更をリモート リポジトリにプッシュする前に、常にリモートから最新の変更をプルして、ローカル リポジトリが最新であることを確認します。これにより、競合を防ぎ、よりスムーズなコラボレーション エクスペリエンスを確保できます。


  6. Embrace .gitignore : .gitignore ファイルを使用して、一時ファイル、ビルド アーティファクト、IDE 固有のファイルなど、追跡する必要のないファイルを除外します。これにより、リポジトリがクリーンに保たれ、重要なコードに集中できます。


これらの簡単なヒントは、バージョン管理システムをより効果的に使用し、ワークフローを合理化するのに役立ちます。一晩でバージョン管理の達人になることはできないかもしれませんが、スキルを学び続け、磨きをかけていく上で、強固な土台となるでしょう。


🤔かなり滑らか。これらのヒントは、完全なバージョン管理の習得につながるわけではありませんが、より実用的なものになりました。全体として、初心者向けのアドバイスであることを考えると、かなり適切です。


「ブランチを使用する」など、いくつかのポイントは少しあいまいなままです。バージョン管理の分岐戦略は広範で複雑なトピックであり、この特定の点は、さらに調査しない限り、あまり実用的ではありません。ただし、これは単一の外れ値であり、少なくともより詳細な調査の明確な出発点を提供します.


全体的に、悪くない!

きれいなコードを読む - あいまいさを切り抜けます。

💬 「綺麗なコードを読む」コツを教えていただきました。しかし、初心者として、どのコードがクリーンであるかをどのように知ることができますか?それを認識する方法は?そして、そのようなコードをどこで見つけることができますか?


🤖 初心者にとって、一見きれいなコードを認識するのは難しいかもしれません。ただし、よく書かれたコードを練習して経験することで、クリーンなコードとは何かを理解できるようになります。クリーン コードの一般的なガイドラインと特徴を次に示します。


  1. 読みやすさ: きれいなコードは読みやすく、理解しやすいものです。明確な構造、意味のある変数名と関数名、および適切なインデントがあります。また、一貫した命名規則とスタイル ガイドラインに従っています。


  2. モジュール性: クリーンなコードは、単一のタスクを実行する小さな集中的な関数またはメソッドに編成されます。各モジュールは 1 つの責任を持つ必要があり、コードは論理コンポーネントに分割する必要があります。


  3. 保守性: きれいなコードは、変更、拡張、およびリファクタリングが容易です。コードの重複を回避し (DRY 原則)、ベスト プラクティスに従って、変更が行われたときにバグが発生する可能性を最小限に抑えます。


  4. ドキュメントとコメント: クリーンなコードは、コードの目的と機能を説明するコメントで十分にドキュメント化されています。コメントは簡潔で、コード自体を読んでもすぐにはわからない情報のみを提供する必要があります。


  5. 効率: クリーンなコードは、パフォーマンスとリソースの使用に関して効率的です。不必要な複雑さを回避し、使用されるアルゴリズムとデータ構造は目前の問題に適しています。


読んで学ぶためのクリーンなコードを見つけるには、次のソースを検討してください。


  1. 人気のあるオープンソース プロジェクト: GitHub などのプラットフォームで人気のあるオープンソース プロジェクトの多くには、複数の貢献者によってレビューおよび改良された高品質のコードがあります。使用している言語またはフレームワークでプロジェクトを調べて、クリーンなコードの例を見つけてください。


  2. コーディングのベスト プラクティス: 使用しているプログラミング言語のコーディングのベスト プラクティスに関する記事、書籍、またはコースを探します。これらのリソースは、多くの場合、きれいなコードの例と、それを記述する方法に関するガイドラインを提供します。


  3. コード レビュー: チーム内のコード レビューに参加するか、経験豊富な開発者やメンターからフィードバックを求めます。彼らのフィードバックや提案を観察することで、クリーンなコードを認識し、独自のコーディング スタイルを改善する方法を学ぶことができます。


  4. コーディングの課題: LeetCode、HackerRank、または Codewars などの Web サイトでは、他のユーザーから提出されたソリューションと共にコーディングの課題が提供されます。これらのソリューションを確認することで、問題解決へのさまざまなアプローチを学び、わかりやすいコード例に触れることができます。


クリーンなコードを認識して記述することは、時間の経過とともに向上するスキルであることを忘れないでください。より多くのコードを読み書きするにつれて、クリーンなコードを特定し、自分の作業でベスト プラクティスを採用することに熟達していきます。


🤔 今回の結果はせいぜいまあまあです。


回答の最初の部分は、本質的に、クリーンなコードであることの非常に高レベルで漠然とした原則に準拠しているという事実によって、クリーンなコードを認識することができると述べています (コメントや効率などのいくつかは議論の余地があります-たとえば、クリーンで読みやすいコードにするためには、効率的である必要がありますか?)。


後半も当たり外れあり。コード レビューに参加することは良いアドバイスです (ただし、より上級の開発者のコードから学ぶために、コードをレビューするだけでなく、できるだけ多くのレビューを自分で行う必要があることを強調することもできます)。コーディングのベスト プラクティスに関する本や記事を読むことは適切なアドバイスですが、むしろ当然のことであり、あまり価値がありません。オープンソース プロジェクトやコーディング チャレンジ Web サイトから学ぶことは素晴らしいアドバイスになる可能性がありますが、これらのソースにはよくないコードも含まれており、初心者がどれがどれであるかをどのように認識できるかという難問を解決することはできません。


もう少し深く掘り下げてみましょう。


💬あなたは、読んで学べるクリーンなコードを見つけるために、人気のあるオープンソース プロジェクトを見ることができると言いました。それらの多くは高品質のコードを持っているからです。しかし、オープンソース プロジェクトの多くには、低品質のコードも含まれています。どのオープンソース プロジェクトが高品質でどれがそうでないかをどのように見分けることができますか?


🤖 その通り、すべてのオープンソース プロジェクトが高品質のコードを持っているわけではありません。高品質のオープンソース プロジェクトを特定するには、次の要因を考慮することができます。


  1. 人気: GitHub などのプラットフォームでスター、フォーク、またはウォッチャーの数が多いプロジェクトは、通常、そのプロジェクトがコミュニティから高く評価されていることを示しています。人気度はコードの品質を保証するものではありませんが、有用な指標になる可能性があります。


  2. アクティブなメンテナーと貢献者: 高品質のプロジェクトには、アクティブなメンテナーとさまざまな貢献者グループがいる傾向があります。定期的なコミット、更新、およびバグ修正の履歴を持つプロジェクトを探します。健全な数の貢献者と活発なコミュニティは、コードベースが継続的に改善され洗練されていることを示している可能性があります。


  3. 明確なドキュメント: ドキュメントが充実しているプロジェクトは、多くの場合、よく管理された高品質のコードベースの証です。包括的な README ファイル、API ドキュメント、および使用ガイドを含むプロジェクトを探してください。


  4. コード レビューとディスカッション: プロジェクトのプル リクエストと問題のディスカッションを確認します。健全なプロジェクトには、徹底的なコード レビュー、建設的なフィードバック、および改善とバグ修正に関する活発な議論があります。


  5. コーディング標準への準拠: 高品質のプロジェクトは通常、コーディング標準と、使用するプログラミング言語またはフレームワークのベスト プラクティスに従っています。フォーマット、命名規則、およびコード構成に一貫性があることを確認してください。


  6. 自動化されたテスト: 自動化されたテストの堅牢なスイートを備えたプロジェクトは、メンテナーがコードの品質とソフトウェアが期待どおりに動作することを気にかけていることを示しています。テスト カバレッジが高く、すべてのコミットまたはプル リクエストでテストを実行する継続的インテグレーション (CI) パイプラインを備えたプロジェクトを探します。


  7. 依存関係とライセンス: 高品質のプロジェクトには、対応するライセンスと共に、依存関係の明確なリストが必要です。これは、メンテナーがプロジェクトの法的および運用面に注意を払っていることを示しています。


高品質のオープンソース プロジェクトの検索を開始するには、GitHub の Awesome Lists などの精選されたリストまたはコレクションを探索できます。これは、さまざまなドメインで人気があり、高く評価されているプロジェクトを集めたものです。また、業界でよく知られている評判の良い組織や開発者によって管理されているプロジェクトをチェックアウトすることもできます.


質の高いプロジェクトであっても、改善できる領域がある可能性があることを忘れないでください。経験を積むにつれて、クリーンなコードをよりよく理解できるようになり、さまざまなオープンソース プロジェクトの品質を評価するための準備が整います。


🤔 この回答もまたまともです。プロジェクトの人気や優れたドキュメンテーションなどの要因が必ずしもクリーンなコードを保証するわけではありませんが、これらすべてを組み合わせることで適切なプロキシとなります。また、厳選されたリストを見るようにというアドバイスは、必ずしも品質というよりは人気の指標ですが、合理的な出発点を提供します.たとえば、GitHub 検索は、人気のあるアクティブなオープンソース プロジェクトを見つける優れた方法でもあるため、すべてを網羅しているわけではありません。しかし、きれいなコードを認識することは非常に主観的で難しいトピックであることを考えると、この答えはまったく問題ありません。もっと深く掘り下げることもできますが、この投稿の長さを抑える必要があります...

コードにコメントを付ける - 疑わしい側面を明確にします。

💬あなたがくれたライフハックの 1 つは、意味のあるコメントを書いて、コードの目的と機能を説明することでした。これについて詳しく説明していただけますか?どのコメントが意味があると思いますか?すべてのコードに対して常にコメントを書く必要がありますか?いつ、どのようにコメントを書くべきかについての良いヒューリスティックはありますか?


🤖 意味のあるコメントを書くことは、クリーンで保守しやすいコードを書く上で重要な側面です。意味のあるコメントは、コード自体を読んでもすぐにはわからない追加の洞察とコンテキストを提供する必要があります。コメントを書くタイミングと方法に関するガイドラインを次に示します。


  1. 複雑または非自明なコードを説明する: コードの一部が複雑であるか、プロジェクトに精通していない人にとっては理解しにくい場合、コメントは実装の背後にある理由を説明したり、アルゴリズムの概要を説明したりするのに役立ちます。


  2. 仮定と制限を文書化する: コードが特定の仮定に依存している場合や制限がある場合は、コメントで文書化することが重要です。これにより、後で他の誰か (またはあなた) がコードを変更したときに、将来の問題や誤解を防ぐことができます。


  3. 関数とクラスの目的を明確にする: 関数とクラスの名前はわかりやすいものにする必要がありますが、簡単なコメントは、関数またはクラスの目的と予想される動作に関する追加のコンテキストを提供できます。


  4. 回避策またはハックを説明する: 特定の問題または制限に対処するために回避策またはハックを実装する必要がある場合は、その理由と潜在的な副作用をコメントに記載してください。これは、将来の保守担当者が回避策の目的を理解し、潜在的な改善を検討するのに役立ちます。


  5. 外部リソースの参照: コードが特定のリソース (研究論文、アルゴリズム、サードパーティ ライブラリなど) に基づいている場合は、そのリソースへの参照をコメントに含めます。これは、プロジェクトで作業している他のユーザーにコンテキストと背景情報を提供するのに役立ちます。


効果的なコメントの書き方のヒントを次に示します。


  1. 簡潔にする: コメントは短く要点を伝える必要があります。長い段落を書いたり、コードからすでに明らかな情報を繰り返したりすることは避けてください。


  2. コメントを最新の状態に保つ: コードの進化に合わせてコメントが関連性を維持するようにします。コードを変更するときはコメントを更新して、コードの現在の状態を正確に反映するようにします。


  3. 明白なことを述べるのを避ける: コードが何をするかを単純に言い直すコメントを書くことは控えてください。コード自体からはすぐにはわからないコンテキスト、根拠、または説明を提供することに重点を置きます。


コードの 1 行または 1 ブロックごとにコメントを記述する必要はありません。代わりに、それが価値を追加し、コードの理解を向上させるのに役立つ場所にコメントすることに集中してください。適切に記述されたコードはほとんどが一目瞭然であるべきであるため、明確で表現力豊かなコードを書くことを優先し、必要に応じてコメントを使用して補足します。


🤔 これは本当に良い答えです。最初のヒントはあいまいで、過剰なコメントにつながる可能性のある解釈の余地が残されていましたが、この詳細はそれを明確にし、100% 的を射ています。それがまさに、コメントを書くアプローチについて私がアドバイスする方法です。

結論。

所々にいくつかの小さなミスステップがありましたが、全体的に驚くほど良い結果が得られました。


いくつかの答えはあまりにも明白で、いくつかは意見の問題でしたが、それらのどれも明らかに間違っていませんでしたし、それらの多くは本当に良くて実用的でした.また、アドバイスの幅広さと多様性が気に入りました。健康管理についてのポイントも含まれていました。


最初の回答は浅はかです。フォローアップの質問を通じて少なくとも数レベル深く掘り下げなければ、あまり価値がありません。でも、この流れに慣れてしまえば結構スムーズに進みます。事前に大量の情報に圧倒されるのではなく、関心のあるトピックや理解していないトピックだけを深く掘り下げて、徐々に探索できます。たとえば、本を読んだり、コースを見たりするよりも、実際の人間のメンターと一緒に仕事をすることに似ているとさえ言えます。


実際の人間のメンターと比較して、ChatGPT を使用する場合、少し負担がかかります。人間は、あなたの声のトーン、顔の表情、ボディー ランゲージからより多くの手がかりを拾うことができ、あなたの行動に応じてより積極的に議論を導くことができます。ただし、ChatGPT を使用する場合、拾うことができる手がかりは直接の質問だけです。そのため、経験の質は、メンターの経験や感情的知性ではなく、明確な質問を作成する能力にのみ依存します.そうは言っても、適切な質問をする方法を学ぶことはそれほど難しくありません。そうすれば、対話から多くの価値を得ることができます.


初心者にとって難しいのは、浅い回答からより深い回答へと移行するために、正確に何を質問すればよいかを理解することです。特定の分野で深い専門知識を持っていない場合、多くの場合、それは明らかではありません。ただし、これは、「なぜこの回答を選択したのですか?」、「さらに詳しく説明していただけますか?」、「この回答は本当に最良の回答ですか?」、「これが唯一の良い答えですか?」、「長所と短所は何ですか?」、「代替案は何ですか?」、「他に同様の手法はありますか?」など。このような質問を上手に行うことは、要件の明確化、チームメイトとのブレインストーミング、または実際の人間のメンターとの作業においても、日常業務に役立ちます。したがって、それ自体が価値のあるトレーニングです。


要約すると、このような限られたテストから私が観察できることから、私は確かにそれをお勧めします.


これは実際の人間のメンターの完全な代替ではありませんが、メンターにアクセスできない場合は、ChatGPT をぜひお試しください。また、メンターがいる場合でも、ChatGPT の方がはるかに簡単に利用できるため、両方を活用する価値があります。 ChatGPT から始めて (そしてより頻繁に使用して)、実際のメンターにその回答を評価してもらい、それらを拡張してもらい、よりトリッキーな領域を深く掘り下げてもらい、より単純なケースについては ChatGPT に固執することができます。


また、特定の分野で学ぶべきことの概要から始めて、その土地の全体像を理解してから、ChatGPT を使用して選択したトピックをより深く掘り下げることも有益な場合があります。 roadmap.sh私が書いているガイドなど、このような概要を提供する優れたリソースが多数あります。