熟練したプログラマーは、テクノロジー業界では依然として高く評価されています。開発者の仕事は一般的に最も埋めるのが難しい仕事の1つであり、このタイプの専門家の需要は減速していないようです。
しかし、急速に変化するテクノロジーの世界では、新人プログラマーもベテランプログラマーも様々な困難に直面しており、業界で存在感を保ちキャリアアップすることがますます難しくなっていると、Vydiaのウェブ開発者であるダン・ヴァサロ氏は指摘する。「新人もベテランハッカーも、常に最新のホットなテクノロジーを習得し、LinkedInのプロフィールに新たなスキルを加えようと努力しています」と彼は言う。「これは良いこともあれば、悪い影響を与えることもあります。」
キャリアのチャンスを広げるために役立つ、より優れたプログラマーになるための 10 のヒントを紹介します。
参照: プログラミングを学ぶ方法: 始めるための3つの言語
1. ソフトスキルを磨く
エグゼクティブ コーチのデブラ ベントン氏によると、コミュニケーション、共感、ユーモアなどの対人スキルは、キャリアを築き昇進する際に、他の有能なプログラマーと差別化するための鍵となります。
「カリスマ性、好感度、その他のソフトスキルは重要です」と、シニアAndroid開発者兼コーチのジム・バカ氏は述べています。「カリスマ性がなく、好感の持てない人と働きたいと思う人はいません。これらのスキルは技術スキルと同じくらい重要であり、実際、キャリアが進むにつれてさらに重要になります。これらのスキルはより多くの機会をもたらすので、軽視すべきではありません。」
YourParkingSpaceのプログラマー兼SEOスペシャリストであるグレゴリー・ゴリンスキー氏は、プログラマー以外の人と話すことを学ぶことも仕事に役立つスキルだと述べています。「彼らが使う専門用語は、プログラミングについて何も知らない他のチームメンバーにとっては非常に難解なものになることがあります」とゴリンスキー氏は言います。「プログラマーは、ほとんどの人が配列や関数が何なのか知らないことを常に覚えておく必要があります。」
2. 現実世界をコーディングし、頻繁にコーディングする
「現実世界の問題に対するコーディングによる解決策と、そこから得られる実践に代わるものはありません」と、IBMのチーフ・デベロッパー・アドボケイト、ウィリー・テハダ氏は述べた。「何を書くかよりも、できるだけ頻繁にコーディングし、自分自身に挑戦することの方が重要です。」
フラットアイアン・スクールの共同創設者兼学長であるアヴィ・フロムバウム氏は、プログラミングスキルを向上させるには時間をかける必要があると述べています。「何かの使い方を学ぶだけでなく、それがどのように機能するかを理解することが大切です」とフロムバウム氏は言います。「使い方を学ぶだけでなく、物事がどのように、そしてなぜ作られているのかを学ぶことに多くの時間を費やしてください。常に最も重要な概念を一歩深く理解するように努めてください。」
GitHub を使用すると、合格したプロジェクトや演習を公開し、ネットワーク内の他の開発者にコードをレビューしてもらい、改善できる点や別のアプローチ方法についてコメントしてもらうことができると、LaSalle Network の技術採用サービス部門マネージャー、ポール・ワレンバーグ氏は述べた。
「新しい仕事を探しているプログラマーは、これまで携わってきたプロジェクトをアピールする必要があります」と、Clearbridge Mobileのモバイル開発者であるマヌ・シン氏は言います。「そうすることで、競合他社との差別化を図ることができます。具体的には、どんなプロジェクトに携わってきたかだけでなく、あなた自身がどんな人間なのか、どのように仕事を成し遂げたのか、そして将来どのような道を歩みたいのかをより深く理解することができます。ポートフォリオを作成することで、パーソナルブランドを構築できるのです。」
3. 言語にとらわれない
テハダ氏によると、テクノロジーの進化と新しい言語の開発が続く中、複数のプログラミング言語を学ぶことで、キャリアのチャンスと収入の可能性が劇的に高まる可能性があるという。「言語はツールなので、新しい言語を学ぶことは非常に重要です」とテハダ氏は述べた。ある言語で深い経験を持つことは重要ですが、幅広い言語を習得し、仕事に適したツールを選ぶことも重要です。
4. オープンソースコミュニティに貢献する
オープンソースコミュニティに貢献することで、力を得ることができるとテハダ氏は言います。「プロジェクトに貢献する際は、ユーザーや他の開発者から得られるフィードバックに注意を払ってください」と彼は付け加えました。「コミュニティに貢献するなら、受け取る機会も必ず活用してください。」
GoDaddyのエンジニアリングディレクターであり、Node.js Foundationの元理事であるチャーリー・ロビンズ氏は、プロフェッショナルコミュニティとの交流の重要性を認識すると同時に、自分がどのような役割を担いたいのかをじっくり考えるべきだと述べています。「『スーパースター』開発者の名声を追いかけるのではなく、カンファレンスで講演したり、ブログを書いたり、本当に情熱を注げるメンターシッププロジェクトに参加したりすることが大切です」とロビンズ氏は言います。「コミュニティでアイデアを交換し、新しいことを学ぶことは、燃え尽き症候群を防ぐのに役立ちますが、それは真摯に取り組む場合に限られます。」
参照: Python プログラミング完全ブートキャンプ: 初心者から上級者まで (TechRepublic Academy)
5. 地元のユーザーグループやメンターシッププログラムに参加する
多くのユーザーグループがメンターシップ プログラムを提供しており、通常は初心者または初級のプログラマーと特定言語の上級ユーザーをペアにして、多くの場合無料で提供するとワレンバーグ氏は述べた。
「より優れたプログラマーになる上で最も役立ったのは、非常に熟練したプログラマーたちと仕事をしたことです」と、VR開発者でありVRブログ「The Ghost Howls」のオーナーでもあるアントニー・ヴィティロ氏は語る。「常に自分よりも熟練した人たちと仕事をするように心がけてください。そうすれば、多くのことを学べるはずです。」
アディソン・グループのIT部門マネージャー、ブラッド・デイビス氏は、プログラミングのキャリアをスタートさせる際には特にこれが重要だと述べています。「規模の大きいチームを探してください。そうすれば、あなたの能力を伸ばすのを助けてくれるベテラン開発者が確実にいます」とデイビス氏は言います。「また、同僚と直接顔を合わせてコミュニケーションを取れるポジションに重点を置くことも重要です。リモートワークにはメリットもありますが、オンサイト勤務による直接的なサポートがなければ、スキルを伸ばすのは難しいでしょう。」
Stack Overflowの開発者マーケティングコンテンツライター、アリッサ・マッツィーナ氏によると、他の開発者とペアプログラミングを行うことは、瞬時のフィードバックを通して学ぶための優れた方法です。この方法では、片方の参加者がコードを書き、もう片方の参加者が作業の進捗を見守ります。2人は数分ごとに役割を交代し、プロセス全体を通して話し合います。「この方法は、完全に没入型の学習体験となり、チームへの迅速な統合と開発者としてのより大きな成長につながるため、成功への道筋となる可能性が高いでしょう」とマッツィーナ氏は述べています。

6. サイドプロジェクトに取り組む
サイドプロジェクトは難しそうに聞こえるかもしれませんが、楽しみのために始めることを検討してみる価値はあるとマジーナ氏は言います。「情熱を注げるプログラミングは開発において不可欠です。ただ楽しみながら学ぶことだけを目的としたサイドプロジェクトに挑戦すれば、自分がどれだけ成長できるかに驚くでしょう」とマジーナ氏は言います。「新しいプログラミング言語を学んだり、アプリを開発したりして、スキルを磨き、能力を広げてみましょう。」
IntuitのMintデータエンジニアリングおよびアナリティクス責任者であるCynan de Leon氏は、GitHubには貢献を歓迎する大小さまざまなプロジェクトが数多くあると述べています。「GitHubは、誰かが既にあなたのアイデアを実現し始めているかどうかを確認し、どのように改善できるかを確認するのに最適な場所です」とde Leon氏は言います。「また、他の人があなたの貢献を見てくれるというメリットもあり、そのサイクルが継続されます。数独ソルバーのような小さなものから、Apacheのトップレベルプロジェクトのような巨大なものまで、何でも構いません。情熱があれば、ぜひ挑戦してみてください。」
7. 専門分野を開拓する
プログラミングは非常に急速に変化します。ある技術を学んでも、翌週にはもっと優れたものに取って代わられていることがよくあります、とRefersionの開発者兼創設者であるアレックス・マルコフ氏は言います。「私のアドバイスは、データベース管理やフロントエンドWeb開発など、技術の小さな分野に特化することです。そして、その業界の動向に遅れずについていき、あらゆることを学び、最高の人材になることです。それがキャリアで成功する方法です」とマルコフ氏は言います。「『他のことは分かりませんが、XYZのことならいつでもサポートします』と言えば、雇用主はあなたをより尊敬してくれるでしょう。」
そもそも言語選びに悩んでいるなら、まずは一つを選んでしっかり学ぶべきだとヴァサロ氏は言います。「プログラミングの達人になるには様々な言語を習得する必要がありますが、一つの分野で本当に輝く努力をすることは価値があります」とヴァサロ氏は言います。「何でも屋であることは全く問題ありません。むしろ歓迎されます。一つもマスターしていない人は、望ましいスキルセットとは言えません。」
参照: 2017年最も人気の開発者職トップ10
8. コードレビューを真剣に行う
コードレビューはバグを見つけるための効果的な方法であるだけでなく、チームメンバー間で議論を活発にし、知識を共有する素晴らしい方法でもあると、CodeFightsのCEOであるティグラン・スロヤン氏は述べています。「レビューを受ける側は、建設的な批判を受け入れ、レビュー担当者の経験を活用して、自分一人ではできなかったより良いものを作りましょう」とスロヤン氏は言います。「レビューする側は、建設的な姿勢を保ちつつ、ベストプラクティスや蓄積された知恵を広める機会を活用すれば、レビュー対象のコードから新しいことを学ぶことさえできるでしょう。」
9. ビジネス面についてもっと知る
営利組織であろうと非営利組織であろうと、ソフトウェアはビジネス目標の達成を支援しているとスロヤン氏は言います。自社がどのように収益を上げ、顧客にサービスを提供しているか、そして競合他社と比較してどのようなコアコンピタンスを持っているかを知ることで、ビジネス面を支援する新たなアプローチや改善点を発見できるでしょう。
「ビジネス部門の同僚と話し、上級管理職に厳しいビジネス質問をしてみてください」とスロヤン氏は言います。「例えば、広告のパーソナライゼーションをコアテクノロジーとするオンライン広告プラットフォームで働いている場合、広告の関連性アルゴリズムの定義と革新がビジネスの成否を左右します。」また、ビジネスに合わせて迅速に拡張できるシステムを設計するための先見性を獲得し、技術に詳しくないマネージャーには見えないビジネスチャンスを特定することもできます。
10. 貪欲に読書する
優秀な開発者になるために必要なスキルの多くは大学では教えられないとスロヤン氏は言います。しかし、開発者が書いた多くの書籍は、そうでなければ実務で習得するには何年もかかるかもしれない実用的な情報を提供してくれます。スロヤン氏は、スティーブ・マッコーネル著『 Code Complete』、ロバート・セシル・マーティン著『Clean Code』 、フレッド・ブルックス著『The Mythical Man-Month』を推奨しています。
この分野の初心者には、フロムバウムはクリス・パイン著『 Learn to Program』 、アンディ・ハントとデイブ・トーマス著『Programming Ruby: The Pragmatic Programmers' Guide』 、デイビッド・ハイネマイヤー・ハンソン著『 Agile Development with Rails』、ティム・バーナーズ・リー著『 Weaving the Web』を推奨しています。