プログラミングをすればするほど、上手になるといつも言われています。良いと真実に聞こえます。しかし、より良いプログラマーになるための実証済みのルートがあるかどうか疑問に思っていました.
何かのようなもの:
- 学ぶ
- 学びます
- Learn c > 「これでエンジンを燃やしても大丈夫です」
- 学んだことをもとにいろいろ試してみてください。
答えは CS コースのロードマップに似ているかもしれませんが、成功したプログラマーの意見を聞きたいと思っています。
ありがとう
プログラミングをすればするほど、上手になるといつも言われています。良いと真実に聞こえます。しかし、より良いプログラマーになるための実証済みのルートがあるかどうか疑問に思っていました.
何かのようなもの:
答えは CS コースのロードマップに似ているかもしれませんが、成功したプログラマーの意見を聞きたいと思っています。
ありがとう
練習すれば完璧になるというのは真実ではありません。
完璧にするのは完璧な練習です。
同じ悪い習慣を何度も繰り返すだけでは、悪いコードをより速く作成できるようになるだけです。
ぜひコーディングを続けてください。しかし同時に、自分のすることすべてに批判的であること。物事をより良くする方法を探す黄疸の目を常に持っています。新しいアイデアを得るために広く読んでください。彼らがどのように物事を行うかについて他の人と話してください。良い点も悪い点も含めて、他の人のコードを見てください。
私が知っていることを学ぶための「確実な」方法はありません。これがあれば、誰でもマスターできます。
すべての質問は修辞的であり、思考を刺激するためのものです。
技術的な部分:
プロセス部品:
ソフトスキル:
私の主なアドバイスは次のとおりです。自分のコードを書き直すことを恐れないでください。1 か月前に書いたものを見ても、欠陥が見つかり、書き直したくなるでしょう。
コレクション、等価性、ハッシュコードなど、いくつかの基本事項を理解していることを確認してください。これらは、ほとんどすべての現代言語で役立ちます。
使用する言語に応じて、lint ツールとメトリック ツールを使用し、コード上で実行します。彼らのすべての提案が当てはまるわけではありませんが、どれが重要でどれが重要でないかを学ぶことは重要です。たとえば、Java の FindBugs、PMD など。
何よりも、自分の仕事を洗練し、洗練し続けてください。あなたの作品を放棄されたものとして扱わないでください!
秘訣は、最初に何を学ぶべきかを知ることです。
あとは空が限界。
前の建物の各建物で繰り返し、この順序で大まかに改善を検討します。
プログラミング言語を学ぶことは、多くの点で話し言葉を学ぶことに似ています。上手になる唯一の方法は、できるだけ頻繁に行うことです。他の作品では
練習、練習、読んで、さらに練習
あらゆる種類のコーディング手法、ツール、プログラミングの知恵について時間をかけて学びましょう。これは、私の開発にとって非常に重要であることがわかりました。コーディングするだけで生産性を感じるのは簡単です。その次のウィジェットを打ち負かすために、もう少し知識/武器をベルトの下に持っていたらどうなるでしょうか。
知識/ノウハウは私たちの本当の通貨です。知れば知るほど、何かをどのように行うべきかについてより適切な決定を下し、より迅速に行うことができます。
たとえば、次のことを学びます。
•開発プラクティス、ソフトウェア設計、見積もり、方法論 ビジネス分析 データベース設計 (優れた書籍やオンライン リソースがたくさんあります)
•コードを読む - オープン ソース プロジェクトは、これに適した場所です。プログラミングのブログを読む
•オープン ソース プロジェクトに参加してみてください。
• あなたの町のプログラミング ユーザー グループや、あなたを指導できる人を探してください。
そして、はい、前述のように練習します。読んだり、実行したり、見たりするだけでなく、どのように改善されるかを見てください。:)
確かに、厳密に言えば、プログラミングを練習すればするほど、この種の問題を解決するのが上手になります。しかし、それはあなたが本当に望んでいることですか?
プログラミングは、本質的に、技術的なものよりも人間の活動です。コンピューターのスキルを向上させるのは簡単ですが、対人スキルを向上させるのはそれほど難しくありません。
Hohmann の「ソフトウェア プロフェッショナルの旅」を読んでください。ホーマンが説明する概念の 1 つは、プログラミング スキルと非プログラミング スキルの両方を含む「認知ライブラリ」です。コグニティブ ライブラリを拡張すると、プログラミング スキルも向上します。
プログラミング以外の本もたくさん読んで、身の回りの世界を観察してください。有用な比喩を作成することは、成功するプログラマーにとって不可欠なスキルです。レストランはなぜ彼らのやり方をするのですか?毎日ではなく数日おきにごみを収集する場合、ごみ部門はどのようなトレードオフを行っていますか? スケーリングは、食料品店のビジネスにどのように影響しますか? より良いプログラマーになるためには、好奇心旺盛な人間になりましょう。
練習、練習、練習。
プログラミングができるという基本的な困難を乗り越えたら、コードを改善する方法についてのアイデアを得るために役立つ本 (つまり、Code Complete、Effective Java またはそれに相当するものなど) を読むこともできます。
何よりもまず、コードを記述します。できるだけ多く書いてください。難しい問題に取り組みます。本当に優れたプログラマーになりたいのであれば、自分がしていることの根性に入る必要があります。デバッガーで多くの時間を費やして、物事がどのように機能するかを調べます。何が起こっているのかを本当に理解している優れたプログラマーになりたい場合は、金属に取り掛かり、高度な非同期コードを記述し、プロセッサの仕組みと SSE がなぜそれほど優れているかを学ぶ必要があります。スレッドプリミティブを理解し、それらを記述できるようになり、プロセッサで実際に何が起こっているかを説明できるようになります。私はここに行くことができますが、あなたはアイデアを得る.
次に、あなたよりも多くのことを知っている人を見つけて学びましょう。この関係は、すでに多くのコードを書くことに深く没頭している場合にうまく機能します。
第 3 に、大規模で高品質なオープン ソース コード ベースにしばらく時間を費やします。Quake I と Quake II のコードから多くのことを学びました。私がより良いプログラマーになるのを助けてくれました。
難しい問題に挑戦する第4弾。あなたの限界を押し広げます。不可能だと思っていたものを構築します。現在、専用のコンパイラを作成しています。この数か月間、これに取り組んでいるだけで、多くのことを学びました。
学習には2つの種類があります-1。非公式(社会でどのように機能するかを学んだように-仲間や家族との交流を通じて)2。公式(高校のトレーニングのように-計画された指導を通じて)
エントリーレベルのプログラミングの仕事が必要な場合は、学部のコンピュータサイエンス/エンジニアリングの学位を介した正式なトレーニングが最適です。ただし、ロックスターの開発者になりたい場合は、非公式のトレーニングを行うのが最適です。意図しないミスを犯し、上級開発者に呪いをかけ、更新しているアプリがそれを使用しているためにデザインパターンを学び、悪いために泣きそうになります。開発者は、ドキュメントとベストプラクティスが不足している巨大な厄介なプログラムを作成しました。今では、できるだけ早くそれにいくつかの更新を行う必要があります。これらの性質のもの。
あなたが知る必要があるすべてのリストをあなたに与えるのは誰にとっても難しいことです。それは地域ごとに異なり(たとえば、Web開発者とデスクトップ開発者)、会社ごとに異なります(たとえば、ソフトウェアを販売するMicrosoftと、主に車で使用するゼネラルモーターズ)。私の意見では、あなたの仕事をより良くし、昇進することが最善の策です。
私の主張を証明するために、ここの誰もが素晴らしい答えを持っていますが、それらはすべて異なります。ロックスターの開発者に、彼が何かをどのように、いつ、なぜ学んだかを尋ねます。彼らは知らないかもしれません-物事はただ起こるだけです。
個別にそして集合的に練習する
心を開いて、常に新しいことを学び、慣れ親しんだものに限定しないでください。技術的な観点、UIデザイン、人のスキルだけでなく、...新機能を恐れないでください
ピアレビュー、あなたのコードについて人々に話し、人々に彼らのコードについてあなたに話させてください、誰もが問題を見るユニークな方法を持っています、そしてあなたは仲間から多くを学ぶでしょう
コーディングが大好きです。あなたがしていることを愛しているなら、たくさんの時間を入れるのは簡単に思えます。すべてのコーダーにはドライブが必要です!
「先週のコード」を見るだけでなく、配信後にあなたの作品のユーザーと話してください-可能であればあなた自身になってください。
それは私のバッグではありませんが、私が知っている最高のコーダーのいくつかは、アプリケーションのサポートに時間を費やしてきました。経験は彼らの製品を改善したと私は確信しています。
息をのむ夢を見るあなたが使用しているプログラミング言語(真剣に、それは役に立ちません)
興味をそそるプログラム、問題を解決するプログラム、または多くのタスクを簡素化するプログラムを見つけてください。似たようなことを書いてみてください。あなたは非常に迅速にスピードを上げ、同時にそれを楽しむことができます.
これらの良い答えへの小さな追加。私が他の人のコードに取り組んでいるときは、通常、何か新しいものを取り上げます。同等またはそれ以上のスキルを持つ他の人と一緒に仕事をする機会があれば、彼らのプログラミング スタイルに注目することで多くのことを学ぶことができます。
たとえば、C++ と Javascript では、中括弧なしで if() ステートメントを使用しなくなりました。その理由は、間違って置くのが簡単すぎるからです:
while (true) {
if (a > b)
print a
print b
}
これは明らかなタイプミスですが、特に既存のコードを編集している場合は、非常に簡単に導入できます。私はこれを防御的プログラミングと呼んでいますが、このようなちょっとしたトリックは、あなたをより良くするのに役立ちます.
そのため、仲間やメンターを見つけて、彼らのコードに取り組んでください。
1 つのことを非常によく学習してから、学習した内容に関連するプログラミング領域に拡大して、顧客に完全なソリューションを提供することができます。
同時に、自分のコンフォート ゾーンの外にあるものを探索することに時間の一部を費やしてください。
OPが優れたプログラマーになる方法についての一般的なアドバイスを探していたのかどうかはわかりませんが、より具体的なものです。
このスレッドを復活させていることは知っていますが、すでにこの質問をした人がいるかどうかを確認しようとしていたため、このスレッドを見つけました。
私が念頭に置いていたのは、カーン アカデミーが使用するマップに似たプログラミング概念の「知識マップ」を思いつくことができるかということでした。
プログラマーとして、さまざまなアイデア間の依存関係と関係を視覚化して、自分の現在のスキル レベルを理解できるようにしたいと考えています。難しいテーマに取り組む前に知っておくべきこと。自分の進歩を視覚化することができます。
何かを学んだら、もう少し難しいことを学んでみてください。最初はわかりにくいと思われる事柄 (ラムダ関数、スレッド化、配列操作など) をよく読んで練習してください。時間はかかりますが、十分に練習すれば、最初は戸惑うように見えたものも、親しみやすく簡単になります。
私にとって、何か新しいことを学ぶには理由が必要です...つまり、頭にあるプロジェクトや解決しなければならない問題がない限り、希望はありません。その前提条件が満たされている場合、私は通常、「Hello, world」を機能させようとします。その後は空が限界です。最近の開発の多くは、新しい API の学習にすぎません。時折、ある種のパラダイム シフトが発生して気が遠くなることがありますが、それは人々が考えているほど一般的ではありません。
ロードマップの存在に対する信念そのものが、完成への道を妨げています。