ステップ 1 不平不満を言うのはやめて、長い旅の準備をするか、脇に座って鳥を眺めてください
本当に優秀なプログラマーになりたい、専門家になりたい、究極の人間になりたいと思っている人にとって、本当にやる価値があるのであれば、10 年も投資するのは無駄ではないでしょうか?
最初のステップは、この弾丸を飲み込むことです。このプロセスには 10 年かかるだけでなく、一生かけて取り組む必要があることを受け入れてください。ただやりたいからやるだけ。人が何かをする意欲がなければ、その専門家になることはできません。
ステップ 2 たくさんのコードを書く
同時に大量のコードを記述します。必ずしも良いコードであるとは限りません。長い間、あなたが書いたコードは良いコードではありません。優れたコードと優れたセンスを実現するには、多くの練習が必要です。新しいツール、新しいアルゴリズム、新しい問題に興味がある場合、または問題が発生した場合は、コードを書いてできるだけ練習して、使ってみてください。
学習のプロセスは決して止まりません。毎日できる限りのことを学び、できるだけ多くのマイルを獲得するという姿勢で勉強すれば、大きな成果が得られます。何か面白いことを学ばない日、週、月は失敗だという状態になってください。毎日学べるクールで興味深いことがたくさんあります。たとえ15年間勉強していても、見つけることはより困難ではあるものの、依然として見つけることは可能です。プログラミングの世界について知っておくべきことをすべてマスターできる人はいないので、もう学ぶことが何もないと感じたら、新しいプロジェクトを見つけてさらにコードを書いてください。
これらのものを作るときは、次の点に注意してください。中間パターン。便利なものを自動化するパターンや、作成したコードの多くを共有ライブラリやその他の一元的な場所に分離できるパターンなど。特定のタスクに簡単なプログラミング言語を探してください。同じタスクが苦手なプログラミング言語を特定し、なぜ一部の言語が他の言語よりもこれらのタスクの生産性が高いのかを考えます。
しかし、最も重要なことは、たくさんのコードを書くことです。しかし、覚えておいてください、あなたがやっていることが楽しくなくなったら、それまでのプロセスを楽しめなければ、それをやる意味はありません。
ステップ 3 続きを読むコード
プロジェクトがいくつか溜まったら、他の人のコードを読み始めます。最初は、これを行うのが困難でした。彼らは、あなたがやったことのないことをたくさんしたり、慣れていないスタイルを使用したり、学んだことのないプログラミング言語を使用したりすることさえあります。興味深いと思ったら、できるだけ多くのコードを読んでください。少なくとも最初は、特定のプロジェクトのコードを深く分析することについて心配する必要はありません。
新しいコードを読むと、新しい考え方が見えてきます。思考を広げてください。改善を続けるためには、視野を広げることが重要です。これは、前進しながら学ぶべき新しいことを見つけ続けるのに役立ちます。
必ず他のプログラマと相談してください。特定のことをどのように、なぜ行ったのか、物事を別の角度から捉えたか、独自のコードに対する提案があるかどうかを尋ねます。上級プログラマーは非常に忙しいので、礼儀正しくしてください。この業界は緊密な関係があり、評判が重要です。
ステップ 4 多くのプログラミング言語を学びます。いくつかの
のエキスパートになりましょう
少なくとも、実際にはそれほど暇な時間はないでしょう十分ではありません よほど幸運でない限り、同時に多くの言語を学びましょう。そのため、多くのプログラミング言語を浅いレベルで学習し、その言語の人気の理由、一般的に使用される分野での利点、欠点は何かを理解するのに十分なレベルで学習することが可能です。スケーリングは重要です。命令型言語やオブジェクト指向言語など、1 種類の言語に限定されず、関数型言語や宣言型言語の学習にも範囲を広げてください。
Lisp の方言を学びます。日常的なコーディングでは使用しません。しかし、それを学び、実践すると、より良い思考ができるようになり、単純な再帰システムの魅力をより深く理解できるようになります。 「なるほど」と思わずにはいられない瞬間が来るまで、それを学び、練習し続けてください。その瞬間までは、奇妙な構文と不適切な使用法がたくさんあるように見えます。あなたのキャリアの残りの間、それは人類がこれまでに考案した最も驚くほどエレガントなコンセプトであり続けるでしょう。
その後、純粋関数型言語を学習します。ハスケルをお勧めします。 Lisp 方言を含む他の関数型言語では使用できない純粋関数型思考を使用する必要があります。モナドを設計する目的を理解したり、その他の「なるほど」と思う瞬間があれば、洗練されたシステムを考えて設計する能力がより高いレベルに進むでしょう。
最後に、宣言型言語を学びます。 SQL も考慮されていますが、比較的弱いです。プロローグがよく勧められます。 XAML、XSLT、XQuery もあります。宣言型言語では、コンピュータに何をしてほしいかを伝え、コンピュータがそれを行う方法を考え出します。逆に、命令型言語では、コンピュータに何かを行う方法を伝え、コンピュータがそのとおりに動作することを期待します。関数型言語では、データ フィールドの型がどのように変換されるかを記述します。
ステップ 5 独自のプログラミング言語を作成する
複雑である必要も、高度なものである必要も、さらには特にエレガント。ネイティブのアイデアである必要さえありません。私はよく、Lisp インタプリタを書くことをお勧めします (Lisp 方言で書かれていればさらに良いです)。これは基本を学ぶのに最適な方法です。実際、コンピュータ プログラミングの基本、つまり字句解析、構文解析、コンパイル、解釈、仮想マシン、および基本的な設計の選択がさまざまな分野での言語の有用性にどのような影響を与えるかをよく理解できます。
この過程で次の 3 つのものを取得します。
1) 選択したツールがどのように機能するかをよりよく理解できるようになります。深く理解することで、より効率的なコードを作成できるようになります。
2) 主流言語の背後にある力を認識し始めるでしょうおよびツール デザイン選択の理由。これにより、使用するツールをより効率的に選択できるようになります。
未知の可能性により、学び、実験すべき新しくて興味深いものに目が開かれます。
ステップ 6 誰も学んだことのないことを学ぶ
これは最も困難な最後のステップです。さらに10年。興味を持ち続けて楽しいことに取り組み、楽しくないことからは距離を置きましょう。