プログラミングの天才ってどういう人なんでしょうか?
当ページでは、天才プログラマー認定や、最高レベルのプログラマーのコードが実際に見られるサイトを紹介しています。
- IPAに天才プログラマー認定がある
- 実際に天才プログラマーと呼ばれたのは、Facebookのマーク・ザッカーバーグ、任天堂の岩田聡など
- プログラミングコンテストで、天才プログラマーのコードをチェックできる
プログラマー、エンジニアの人達の中にも、他の職業と同じように天才はいます。同じ時期にプログラミング学習を始めても成長の速度が違う、特別な人は確かに存在します。
こちらの記事では天才プログラマーの認定制度、また有名な天才プログラマーなどについて詳しく紹介します。プログラミングの技術向上のためにもぜひこちらの記事を参考にしてみてくださいね。
目次
IPAによる天才プログラマー認定というものがある
プログラマーの中での天才を認定する制度があります。それは経済産業省の外郭団体である情報処理推進機構、「IPA」が推進する天才プログラム認定です。
つづいてIPAの活動内容、また天才プログラマー認定制度について詳しく紹介します。
IPAとは?
経済産業省の外郭団体であるIPAですが、普段はどのような活動をしているのでしょうか。
IPAでは個人情報保護の推進、また最新の情報処理技術の開発など、活動分野は広く、ITの普及、情報保護などに大きく貢献しています。
そしてこのIPAが年度の事業が終わったときに、優秀であると判断した開発者を天才プログラマー、もしくはスーパークリエイターとして認定します。
天才プログラマー(スーパークリエイター)認定基準
つづいて天才プログラマーの認定基準について紹介します。天才プログラマーの基準項目は大きく分けて以下の3つの項目になります。
・新規性(未踏性)
・開発能力
・将来の可能性
「新規性」ではアイディア、発想力、独創力という基本認定基準があります。また「開発能力」では設計能力、企画力の高さ、また創造力という基本認定基準があります。
そして「将来の可能性」では末恐ろしさを秘めているか、これが基本認定基準です。
天才プログラマー(スーパークリエイター)はこれらの基本認定基準のどれか一つでも該当していることが最低限の評価対象になります。
経済産業省が「未踏ソフトウェア創造事業」というものを行っている
つづいて経済産業省が公募している「未踏ソフトウェア創造事業」について詳しく紹介します。
未踏ソフトウェア事業は2000年度から開始された事業です。こちらはITを利用して革新的なイノベーションをつくりだすことができる若い人材を発掘し育成するための事業です。
この未踏ソフトウェア事業によってこれまで約1,600人のクリエイターが輩出され、多方面で活躍をしています。
未踏ソフトウェア創造事業は25歳未満の人たちからテーマを公募し、人材発掘と育成事業を進めています。25歳未満の人でプログラミングに自信がある人は企画だけでも立ててみてはいかがでしょうか。
技術力のあるプログラマーの特徴5つ
天才と言われるプログラマーはどの人も技術が高く、新しいプログラミング言語の習得も早いです。天才と言われるプログラマーと、通常のプログラマーはどこが違うのでしょうか。
天才と言われる、技術力の高いプログラマーの特徴2つを詳しく紹介します。
勉強熱心である
技術力の高いプログラマーの人は知的好奇心が強く、どの人も休日や仕事が終わったあとにプログラミング学習を継続しています。
もともと賢くてプログラミングの上達が早いわけではなく、継続して学習したためにプログラミングが上達している人がほとんどです。
一つの言語を習得すると、言語を習得するコツを掴むことができます。プログラミング学習は経験値をコツコツと積んでいくことで上達し、天才と言われる人たちであってもそのことは変わりません。
例えば、プログラミングスクールのポテパンキャンプは、未経験から就職できるレベルまで学習できるカリキュラムを組んでいます。
先輩エンジニアがあなたのコードをレビューするスクールはこちら
論理的思考力が備わっている
コードを書いている時に出るエラーを解決するのに大切なのが論理的思考力です。論理的思考力とは、物事の筋道を立て、論理的に考える力のことを指しています。エラーを解決するにはこの論理的思考力がとても重要です。
そして論理的思考力はもともと備わっていなくても鍛えることができます。エラーに限らず、日常で起きた問題をどう解決すればいいのか、常に考え仮説となる解決方法を紙に書き出す癖をつければいいのです。これが習慣になれば自然と論理的思考力は鍛えられます。
論理的思考力はプログラミングの技術を上げるだけではなく、普段の生活でも役立ちます。プログラミング技術を上げるためにも論理的思考力を伸ばしましょう。
知識量が多い
天才と言われるプログラマーの特徴は、解決する課題にぴったりなプログラムを瞬時に作れることです。例えば、あらゆるアルゴリズムをプログラミングで瞬時に実現できたり、あるシステムが通信するプロトコルに合わせたプログラミムを瞬時に書いたりできます。これは、それだけプログラミングに関連したことの知識量が多いためで、そのおかげでプログラミングの速度も速く、また、最適なプログラムを作成できるのが天才の特徴の一つです。
基礎能力・専門的なスキルを持っている
プログラミングの天才と呼ばれる人たちは、いろいろなツールを使いこなしています。そして、そのツールの多くは、プログラミングの基礎能力に加えて、専門的なスキルを必要とするものばかりです。なお、その
ようなスキルを身に付けられる理由は、自分が使っているスキルに常に興味を持っているためで、新しいツールや考え方にもすぐに対応できます。さらに、興味を持っている分、学ぶのも早く、新しい言語もすぐに使いこなせるのがプログラミングの天才と言えるでしょう。
意味のある行動をする力
簡単な処理を一度だけやるなら、人がコンピュータを操作してもできますが、何度も同じことをするのであれば、プログラムを書いて自動でやらせる、というのがプログラマーの考え方です。
普段から自分の行動をプログラミングしたら、と考えて生活していれば、どうでしょうか。プログラミングの天才は、自分の全ての行動をプログラムで書けるかのように、意味のある行動をしているので、どんな問題でも瞬時にプログラムが書けてしまうのです。
- 勉強熱心である
- 論理的思考力が備わっている
- 知識量が多い
- 基礎能力・専門的なスキルを持っている
- 意味のある行動をする力がある
天才プログラマーになる方法3つ
今、天才と呼ばれているプログラマーは、最初から天才としての能力を発揮していた訳ではありません。プログラミングに興味を持ち、最初は基礎的なことを、さらに実践的なプログラムを作るスキルや、関連する知識など多くのことを学び、そのうえでプログラミングを楽しんでいる方が天才と呼ばれています。
もちろん誰でも天才プログラマーになれる訳ではありませんが、可能性に挑戦してみませんか。次から、プログラミングを楽しめる、天才プログラマーになる方法についてご紹介します。
初心者はコードの写経から入る
プログラミング言語は、文法を理解したからと言って、実際のコードを書ける訳ではありません。文章を書くように、意味のあることを書く作業がプログラミングです。最初のうちは、教科書に載っているような正しいプログラムコードを写経のように書いてみましょう。
天才プログラマーは正しいプログラムを瞬時に書けるスキルを持っていますが、このように正しいプログラムコードを何度も書くことでそのスキルを身に付けています。ぜひ、真似してみてください。
スピードだけは最速でやる
ベテランのプログラマーでも、仕様を読んですぐにそのプログラムを想像できる方は多くありません。しかし、プログラミングの天才は、瞬時に思いつき、頭のイメージをキーボードで入力するだけでプログラムが作れます。
それだけのスピードでプログラミングするためには、プログラムをイメージする訓練を積む必要があります。他人のプログラムをコピーするだけでなく、何をするためのコードかを理解しながらプログラミングを学習していきましょう。
とにかくコードを書く
プログラミングの天才でも、一度も見たことのないコードを瞬時に書くことはできません。過去に見たことがあったり、似たコードを書いた経験があるからこそ、仕様から瞬時にプログラムが書けます。
プログラミングの天才を目指す方はもちろん、初心者の方も最初はプログラムコードを書きましょう。また、ベテランプログラマーが書いたいろいろなプログラムを読むのも有効です。そして、もっと良いプログラミングの方法が無いか、興味を持って取り組んでください。
先輩エンジニアがあなたのコードをレビューするスクールはこちら
- 初心者はコードの写経から入る
- スピードだけは最速でやる
- とにかくコードを書く
天才プログラマーと呼ばれた人
つづいてこれまでの間に天才プログラマーと呼ばれた、有名な天才プログラマー2人を紹介します。
マーク・ザッカーバーグ
マーク・ザッカーバーグは世界最大級のSNSである「Facebook」をハーバード大学在学中に立ち上げた人です。
Facebookのサービスはハーバード大学在籍中の2004年にマーク・ザッカーバーグが大学のルームメイト数名と前身であるthe Facebookを立ち上げたことから始まっています。
そしてFacebookのストーリーは「ソーシャル・ネットワーク」という映画にもなっています。マーク・ザッカーバーグ氏についてもっと知りたい人はこちらの映画を観ることをおすすめします。
岩田聡
岩田聡さんはゲームが有名な任天堂の元代表取締役社長だった人です。すでに亡くなっている方です。
岩田氏は高校時代から独学でプログラミングを学び、大学生の時もプログラミングのアルバイトをしていました。そして大学卒業後、アルバイトとして働いていたHAL研究所にそのまま就職し、「ピンボール」、「ゴルフ」などのファミコンソフトのプログラミングを担当します。
そのあと岩田氏は任天堂に入社し、最終的には代表取締役社長に就任しました。任天堂のゲームへの貢献度がとても高い、天才プログラマーでした。
おすすめプログラミングコンテスト5選
プログラミングの技術を鍛えるためにおすすめしたいのが、プログラミングコンテストに参加することです。コンテストでは参加者が皆同じ問題を解き、スコア等を競います。
コンテストに参加することで自分の技術レベルを知ることができ、また他のプログラマーの解答を知ることができます。なのでプログラミングのレベルを上げるのに最適です。
最後に参加するのにおすすめのプログラミングコンテストを2つ紹介します。
Atcoder Beginner Contest(ABC)
「Atcoder Beginner Contest(ABC)」はプログラミング初心者向けの、アルゴリズムのプログラムコンテストです。なので最初に参加するプログラミングコンテストとして大変おすすめです。
またAtcoder Beginner Contestでは企業などのコンテストを実施しています。プログラミング学習を始めたばかりの人でも参加できる問題もあるので、一度参加してみることをおすすめします。
SamurAI Coding
「SamurAI Coding」は人口知能(AI)のプログラミングコンテストです。AIプログラムををつくり、戦わせる対戦型AIプログラミングのコンテストです。アルゴリズムや設計スキルなども持っている必要があるため、高いプログラミング技術が求められます。
使用するプログラミング言語はC++、Java、Pythonなどになります。これからの言語を現在学習している人は、一度参加してみてはいかがでしょうか。
TopCorder
「TopCorder」は、定期的にプログラミングコンテストを開催している、世界的に有名なサイトです。コンテストの中には賞金も出る競技プログラミングもありますが、プログラマのレベルを示す指標を目当てにコンテストに参加しているプログラマーもたくさんいます。
天才プログラマーを目指すなら、このような世界的なプログラミングコンテストのサイトで日ごろの練習の成果を、世界と比較してチェックされてはいかがでしょうか。
Google Code Jam
「Google Code Jam」は、Googleが主催する国際的なプログラミングコンテストです。2003年から開催されており、最近は2万人を超える世界中のプログラマーが参加しています。
なおコンテストの問題は英語で出題されるので、英語が苦手な方にとってはハードルが高いかもしれません。しかし、多くの日本人も参加しており、過去の入賞者には日本人もいるので、天才プログラマーを目指す方は、ぜひ、挑戦してみてください。
Facebook Hacker Cup
「Facebook Hacker Cup」は、Facebookが主催している国際的なプログラミングコンテストです。2011年から開催されており、Facenbookが優秀なプログラマーをリクルートする手段として活用されています。
このコンテストも英語で問題が出題されることから、英語の読解力が求められます。なお、過去の入賞者は母国語が英語でない方がたくさんいます。ぜひ、世界で活躍する天才プログラマーを目指して、挑戦されてはいかがでしょうか。
天才プログラマーと自分の実力を比較したいならプログラミングコンテストの過去問を解こう
プログラミングコンテストの中には、Codilityのように、過去の問題と優勝した方の回答時間を掲載しているサイトがあります。もし、プログラムに自信のある方は、ぜひ、そういった過去の問題に挑戦して優勝した天才と比較してみてください。
注目してほしいのは、回答のプログラムを作成した時間です。驚くほど短時間で回答を導き出しています。プログラミング経験者なら時間をかければ正解のプログラムを書けるとしても、これだけ短時間では作れません。この時間で正解が作れるのは、天才の証と言えるでしょう。
自分がどれだけ天才に近づけるか、時間を測定しながら過去の問題に挑戦することで、天才のすごさとその差を実感できることでしょう。
先輩エンジニアがあなたのコードをレビューするスクールはこちら
まとめ
天才プログラマーというのは確かに存在しますが、プロのミュージシャンやアスリートと同じように、もともとの素養が高くても継続して学習をつづける必要があります。天才であっても、コードを書きつづけなくては技術を維持することはできません。
天才プログラマーを目指すのであれば、一日30分でも良いのでコードを記述する時間を増やしましょう。毎日コードを記述することで技術は確実に上がります。ぜひ少しずつでいいので技術を上げて、天才プログラマーを目指してくださいね。