干了 40 年プログラマー、それはどんな体験ですか?
1984 年からプログラマーとして活動してきたベテランの方が「現実を語る」と出てきました。
彼は自身の 40 年近い経験をまとめ、13 のアドバイスにまとめました。これらのアドバイスが長期的にプログラマーを目指す初心者に役立つことを願っています。
記事が公開されると、reddit や Twitter で議論を引き起こし、多くのプログラマーが同意しました。ユーザーは「もっと同意できません!」とコメントしています。
早速、彼がどのような情報を共有しているか見てみましょう。
40 年間のエンジニアの経験からの共有
このベテランの方は Noah Gibbs といい、NVIDIA、AppFolio Inc、DAQRI などの企業で働いた経験があり、現在は Shopify で働いています。
彼は経験豊富なソフトウェア開発者として、常に開発の最前線で活動してきました。
しかし、想像とは異なり、彼は今回、学ぶべき言語やフレームワークではなく、技術よりも重要だと考えるいくつかのポイントを指摘しています。
(以下は著者 Noah Gibbs の言葉で語られています)
- 年齢は関係ない
約 1 年前、つまり 45 歳の時に私はピアノの練習を始めました。この 1 年間、自分自身が成長していると感じていますし、もし続ければ、60 歳になった時には素晴らしいピアニストになれると信じています。
プログラミングの学習も同じです。他の分野のバックグラウンドを持っている場合、プログラミングの学習は非常に速くなります。
信じてください、もし 50 歳からプログラマーになり始めたとしても、10 年後、つまり 60 歳の時には、私の 18 歳の頃よりもずっと優れたレベルになっているでしょう。
私は多くの優れたプログラマーに出会ったことがありますが、彼らの多くは 20 歳、30 歳、40 歳になってからプログラミングを始めました。だから、なぜ 50 歳や 60 歳から始めることができないのかわかりません。この仕事には時間と努力が必要ですが、若くなくても問題ありません。
- 異なるタイプのプログラミングを試してみる
初めてプログラミングを始めたばかりで、長期的にプログラミング業界で働きたい場合、私のアドバイスは、さまざまなソフトウェアを書いてみることです。どんなソフトウェアでも、何を書くかは重要ではありません。
私の 40 年間のプログラミング経験では、多くのトレンドがやってきました。自分自身が異なるタイプのプログラミングを試すことは非常に重要です。
これにより、考え方が固定化されず、ほぼすべてのルールが何かを教えてくれることがわかります。
ある特定のタスクに固執しすぎると、失敗する可能性が非常に高くなります。
- 成果が遅くても怖がらないで
学んでいることが無駄だと感じる必要はありません。無駄だと思われることは相対的なものです。
私はかつて、DGD という古い MUD プログラミング言語に数年間の余暇時間を費やしました。これは実用的な価値を持つものではありませんでしたが、それに関する情報は奇妙で非標準的なものがほとんどで、実際に応用できるものはほとんどありませんでした。
しかし、それは私に多くのことを教えてくれました。それは私に Ruby on Rails の後に応用できるものを教えてくれましたし、データベースプログラミングの方法も教えてくれました。また、後に学んだ他の 5、6 の言語でも使えるものも教えてくれました。
興味深いことに、数年後に私は DGD でコンサルティングの仕事を見つけました。世の中にはまだ DGD の仕事はほとんどありませんが、私は 1 つ持っています!これは私が学んだ多くの「実用的な」言語よりも実用的です。
私は自分自身によく言うのですが、「まだ早いですよ。」あなたは興味深いまたは有用なことを学ぶことができますし、その報酬が 10 年、20 年、30 年後にやってくるかもしれません。
将来何が起こるかは予測できないので、必ずしも 18 ヶ月後に良くなるものを選ぶ必要はありません。
- 自分にとって魅力的な仕事を見つける
コードを書き始めた理由は、それがあなたに何か魅力的な要素を持っていたからです。あなたがやるべきことは、それが何であるかを見つけることです。
この答えは人それぞれ異なります。私の場合、コードを書くことによってもたらされる達成感と知的な感覚が好きです。
十分に魅力的な要素を仕事で見つけることができれば、長期的に続けることができます。
もし何の魅力も感じないのであれば、休暇を取るか、自分が好きなことを再び見つける必要があるかもしれません。なぜなら、そのような仕事はあなたを疲れさせるだけだからです。
- これは短距離走やマラソンではなく、日記を書くことです
初心者の場合、決意した後に「私はプログラマーになる」という詳細な計画を立てることが多いかもしれません。計画には 8 つの大きな項目や 56 の小さな項目などが含まれるかもしれません。
私はあなたにそれを真剣に受け取りすぎないように言います。なぜなら、計画と計算で全てを完了することは不可能だからです。
ある時点で、あなたは「自分の設定したタスクから外れている」と感じるかもしれませんが、実際には「自分の人生を生きている」だけです。これは失敗ではなく、諦めではありません。
何が価値のあるものかは予測できないので、すべてを学ぶべきです。私の経験から言えるのは、より長く生きるほど、仕事がうまくいくほど、すべてのこと(すべての人)があなたに役立つものだということです。
あなたは短距離走やマラソンをしているわけではありません。それどころか、これは日記を書くようなものです。
10 年後、あなたはこの日記を見返し、「わあ、私は素晴らしいことをした」とか「うーん、私は面白い人だった」と言うでしょうが、おそらく日記に「私は Java が得意です」とは書かないでしょう。
- 仕事と職業を混同しない
仕事と職業を混同しないでください。それらは同じものではありません。
私にとって、ソフトウェアの開発は非常に素晴らしい仕事ですが、それだけでなく、まあまあの職業です。
他の人のアドバイスを受ける際にも、相手が仕事に関するアドバイスをしているのか、職業に関するアドバイスをしているのかに注意する必要があります。それらを混同すると、そのアドバイスはあまり意味を持たなくなります。
- 学ぶ順序は重要ではない
初心者の時には、最初にどの言語や技術を学ぶべきかについてさまざまなアドバイスを受けることがよくありますが、それは実際には重要ではありません。
あなたが古いやり方に従わず、自分自身の道を切り開いた場合でも、それは基礎を学んでいないことを意味するわけではありませんし、あなたがひどい状態になるわけでもありません。
なぜなら、本当に重要なことは、いずれ気づくことができ、再び学び直すことができるからです。
- 優れれば優れるほど他とは異なる
初期のプログラマーの職業教育(ブログ記事、大学の授業、書籍など)は、あらゆる側面での基本的な能力を育成しようとする流れ作業のようなものです。
また、初心者はしばしば、主任エンジニアには多くのスキルが必要で、それぞれのスキルレベルも高くなければならないと誤解していますが、実際にはそうではありません。
あなたは非常にシンプルなコードを書き、それを詳細に説明することで、Patrick McKenzie が「Bingo Card Creator」で行ったように、尊敬を得ることができます。また、本当に利益を生むものを書くことでも尊敬を得ることができます。
基本的な能力以外に、これらの道筋にはほとんど共通点はありません。
これがなぜ、あなたが就職活動中に「私は 15 年の経験を持つソフトウェアエンジニアですが、通常の給与はいくらですか?」という質問をするのは愚かなことなのです。15 年というのは非常に長い時間ですので、他の人とは異なる優位性を持っているはずです。本を書いたことはありますか?収益を上げる大規模なプロジェクトに携わったことはありますか?興味深いオープンソースプロジェクトを統合したことはありますか?これら 15 年間、あなたは何をしてきたのですか?
もちろん、これは給与の問題だけではありません。あなたは「私は 15 年の経験を持つソフトウェアエンジニアです、つまり私はこのプロジェクトをリードする能力があるのですか?」と尋ねることもできます。答えはもちろん「可能性がある」となります。次の質問は「15 年間で何をしましたか?」です。
- 実践から学ぶ
私は人々にソフトウェア設計の深層原理を学ぶことを最初に勧めることはありません。なぜなら、それらを純粋な理論として学ぼうとすると、ほとんど間違いを com