Java チャンピオン プログラマーになるにはどうすればよいですか?
数か月前、私はビジネスパートナーのカールとフランス語コースの講師ザビエルと一緒にパリのレストランで食事をしました。会話中、カールと私は、若い頃に使っていたクールなテクノロジーについて笑いながら冗談を言い合っていました。同時に、ザビエルが長い間沈黙していることに気づき、年齢を聞いてみることにしました。正確な年齢は思い出せませんが、私とはかなり年齢が離れており、私の第二子と同じくらいの年齢だったことは覚えています。これは、カールと私が何年にもわたって同時に経験したすべてのプログラミング経験は、彼にとっては価値のないものであることを意味します。
ソフトウェア エンジニアのキャリアにおいて、知識の半減期は 3 年です。これは、3年後には知識の半分が無価値になることを意味します。例を挙げると、年齢が上がるほど、TSR (Terminate-Stay-Resident) を理解している人に会うのが難しくなり、TSR を書いた人を見つけるのは、干し草の山から針を見つけるようなものです。 DOS システムでは、複数のプログラムを同時に実行することはできません。したがって、カレンダーや電卓などのバックグラウンド機能が必要な場合は、メモリ常駐プログラム ( Terminate-Stay-Resident プログラム ) を作成し、特定のキーの組み合わせを使用して別のプログラムからそのプログラムを起動します。
この業界では、決して沈み木にならないように、3年間の知識の半減期は実際には素晴らしいことです。 10代の頃、常に新しいことを学ばなければならないと考えて、プログラマーになるのはやめようと人々に忠告されましたが、私たちの仕事にはそれがプラスになると考えていました。まず、心を新鮮で活発に保つ必要があります。最後に祖母に会ったとき、彼女は98歳で、歩くのが困難でしたが、まだ頭ははっきりしていました。彼女は私の MacBook Pro を見て、「すごいですね、私も買いたいです。」と言いました。それは、彼女が常に新しいことを学んで頭が冴えているからです。次に、あまり興味のないテクノロジーはすぐに置き換えられるため、無視してください。 Subversion の例を挙げてみましょう。以前は必要に迫られて使用していましたが、特別扱いはしていなかったので、
Subversion の専門家にはなりませんでした。数年後、git が登場しましたが、私は Subversion に別れを告げることしかできませんでした。残念なことに、私のクライアントの 1 人は実際に今年 CVS から Subversion に移行しました。今年は 2015 年です!
さて、本題に戻りましょう - チャンピオンプログラマーになるにはどうすればよいでしょうか?次の点が非常に役立つと思います:
1. 強い記憶力。
私が中学 2 年生のとき、私は自分の記憶力がひどいのはすべてあの生気のない歴史教師のせいだと自分に言い聞かせました。しかし驚いたことに、何年もプログラマーとして働いてきた私は、以前見たJavaのソースコードを瞬時に再現できることに気づきました。 JDK のメソッドを読むと、そのメソッドが以前のバージョンから変更されているかどうかがわかることがよくあります。おそらく、私は誰かの顔と名前をはっきりと思い出せないかもしれませんが、Java コードは覚えています - その人の名前も for ループであった場合だけです。幸いなことに、記憶力が悪くてもチャンピオン プログラマーになることが妨げられるわけではありませんが、記憶力が強いことは依然として明らかな利点です。
2. 数学的能力。
優れた Java プログラマーになるために数学のマスターである必要はありませんが、数学的能力があれば、優れたプログラマーになる資格を得るのに明らかに役立ちます。今年の 1 月に少し時間があったので、Project Euler を試してみることにしました。パズルの 1 つは、解決策を見つけるのに 9 時間半の実行時間を必要とします。実行中に問題を調べたところ、解決策の最適化に使用できる数値間の小さな関係を発見しました。もう一度実行しましたが、今回は 6 分しかかかりませんでした。その間、最初のアルゴリズムは実行を続け、答えを見つけようとします。もう一度数字に戻って、これまで見たことのない別のパターンを発見しました。今では完了までにわずか 6 秒しかかかりません。また、賢いプログラミング手法と並列処理を使用してコードを総当たり的に最適化することも試みました。これにより、処理速度が少し向上したかもしれませんが、それでも 6 秒未満にはなりませんでした。
約 10 年前、Sun は Java Champion プログラムを開始しました。その目的は、Java の向上を支援するために積極的に活動している世界のトップ 1,000 人の Java 専門家を発見することです。今の順位はおそらく160位くらいです。オラクルはこのプログラムを継続しており、過去数年にわたり、この認識システムからさらなる利点が得られることがわかりました。自ら選んだグループです。新しいチャンピオンは既存のチャンピオンによって推薦され、投票によって決定されます。通常、チャンピオンが選ばれるまでに十数票が必要で、1票で提案に拒否権が発動されます。自己推薦も考慮されますが、一般的に十分な支援は受けられません。
プログラマーの友人は、私がどのようにして Java チャンピオン プログラマーになったのかよく私に尋ねます。「とても簡単です。私のように、Java 関連の記事を 200 件公開するか、Hibernate、Spring、Jacoco を書くか、何千もの記事に答えるだけです。」 StackOverFlow で質問して、十数の優れた記事を公開したり、ヨーロッパ最大の Java 開発者カンファレンスを企画したりする必要があります。それには時間と労力がかかります。カリスマ性や容姿の良さだけで Java チャンピオン プログラマーになれる人はいません。すべては努力です。それが私たちの名前に顔写真がない理由かもしれません。さらに言えば、チャンピオン プログラマーになるためにチャンピオン プログラマーになるのはやめてください。利己心を捨てて、他人からの賞賛を待つと、気分も良くなります。すべてのチャンピオン プログラマーが正式に「Oracle Java チャンピオン」の称号を得るわけではありません。
どの道を選んだとしても、チャンピオンプログラマーになることは献身的な努力を意味します。 9時から5時まで働くのとはまったく違います。働きながら必要なことをすべて学ぶことはできません。チャンピオンプログラマーになるには、時代についていくために夜間と週末に勉強する必要があります。最も大げさなジョークは、プログラマは 40 歳になるとすぐに淘汰期に入るというものです。もしかしたら、彼らは Java プログラミングで問題なくやっているかもしれません。書籍や記事を読んだり、開発者カンファレンスや挑戦的なコースに参加して知識を新たにしない限り、卒業証書だけに頼ることは最終的には無価値になり、業界は使用済みナプキンのように廃棄するでしょう。決してそんな人にはならないでください!学んで、学んで、学んで!そして、学ぶための最良の方法は間違いなく、同僚と知識を共有することです。
知識を共有するにはどうすればよいですか?今では、私たちには多くの選択肢があります。StackOverflow や他の同様のサイトで質問に答えることができます。テイクアウトを注文することで、ランチタイムに技術的な問題について話し合うことができます。これは、私が何年も前に働いていた会社で行った方法です。」デザインパターン"。これには多少の犠牲が必要です。昼食をあきらめて、講演の準備に数晩費やす必要があるかもしれません。ただし、単に情報を消費するだけではなく、学ぶべきことはたくさんあります。
「The Java™ Specialists' Newsletter」は現在 130 か国以上で 70,000 人以上のプログラマーに読まれていますが、その始まりは非常に小さく、私が友人や家族 80 人 (私と弟を含む) に送ったものでした。両親)、私は彼らにそれを友人や同僚に転送するように懇願しました。時間をかけてゆっくりと発達していきます。周りを見回すと 80 個の電子メール アドレスが見つかると思います。それが始まりです。すべては小さなことから始まります。成長はゆっくりですが、着実に成長しています。 70,000 という数字を見るとショックを受けるかもしれませんが、これは Java プログラマーのほんの一部に過ぎません。
最後に、非常に役立つポイント、つまり情熱でこの投稿を締めくくりたいと思います。ほとんどの人は退屈なコンピュータ作業をしなければならず、それを楽しんでいる人はほとんどいません。私の職場の 1 つでは、電気エンジニアにソース コード リポジトリを整理する仕事が与えられました。彼はすべて間違っていました - 彼がソース管理を行っていたとき、ディレクトリ間でソース ツリーをコピーしましょう。これを毎週のビルド中に同時に行う必要があり、サーバーはクローラーと同じくらい遅いです。マシンがスタックして全員が待たされると、何時間もかかることが多く、苦痛でイライラすることがあります。私は VSS (Visual Source Safe: ソフトウェア開発でソース コードやドキュメントのさまざまなバージョンを管理するために使用されます) にはあまり熱心ではありません。情熱を注げることを見つけてください。それは、仕事を辞めた後も積極的にやりたいと思えるものでなければなりません。私にとって、それは Java エコシステムの隅々まで研究することです。立ち止まる理由が無数にある場合でも、情熱が私たちを前進させる原動力となります。