最近、学生さんから将来の方向性についてメールで相談を受けることが多いのですが、その大半が「特に優れたプログラマーになるためにはどうしたら良いか」という内容です。
そこで本記事では、そうした質問に私なりの視点からお答えします。
ここで示されるような道を選ぶ必要はなく、ご自身の道を切り開くのが一番ですが、この記事を通じ、あなたにとって正しい道を開拓するための知識や経験をご提供できたら幸いです。

 

学生は何を学ぶべきでしょうか?
知識は常に必要ですし、役に立つものです。
それはつまり、何を学ぼうといつかどこで役に立つということ。
私にしても、学生時代は自分の学んだ会計や販売、プレゼンテーションに関する知識なんて役に立つことはないだろうと思っていました。
しかし今になって、商品開発の際、こうした知識を使うどころか学習し直しているくらいです。
学習もやり過ぎてしまうと、抜け殻のようになってしまって全く役に立たない時もあります。
深さと広さのバランスは、人それぞれの選択と判断によるので、何とも言えないところです。
優秀なプログラマーになるために習得しなければならない4つの科目を選ぶとしたら、私は以下の科目を選びます(以下、優先順位の高い順に列記):

 

英語
私の考えでは、英語は一番重要です。
IT業界で学び仕事をする、より具体的にはプログラマーとしてということですが、インターネット上で且つ英語で技術やその背景、知識を定期的に読んで学ぶ必要があります。
やれやれですが、ベトナム語のドキュメントは大抵少し(あるいはものすごく)古過ぎて、日々変化する世界についていけていないのです。
仕事に行けば、お客様や海外のワーキンググループとコミュニケーションをとる機会が多いのは言うまでもありません。
こうしたことから、英語が下手だとあなたの仕事の能力も制限されてしまうわけです。
英語が得意な人は、外資系企業に就職するか、少なくとも外資系のクライアントと仕事をして、20%程度高い収入を得るチャンスがあると言っておきましょう。(ただし、日本の顧客を抱える一部のアウトソーシング会社を除く)

 

オブジェクト指向プログラミング言語:Java または C ++
プログラマーであれば、勿論プログラムの書き方を知らねばなりません。
ですよね?さて、問題はなぜこれら2言語のうちのいずれかなのか?

後にあなたがプログラマーとしてフロントエンドで働く場合は、JavaやC + +を使用する必要はありません。ウェブ上でプログラミングする場合は、PHPを知っていれば十分です。
そのため、プログラミング言語を選ぶ際には、将来の進路を考慮して選ぶようにしましょう。
一般的かつ通常のレベルでは、私は個人的に学生にC ++かJavaを選択するよう勧めています。なぜなら、これら2つの言語はより高度なプログラミング言語の本質を十分に、且つ適切に表現していると思うからです。
これらの2つのプログラミング言語に精通していると、他の言語も学習しやすく、変換もできるようになります。
加えて、これらの2言語は最も人気で広く応用されている言語のうちの2つにも挙げられます。

 

データ構造とアルゴリズム
ほとんどのプログラマーは、この科目については無視するか、真剣に受け止めていません。
職業訓練所によっては、この科目を全く教えていないところもあります。
それはこの科目が難しいから。
このブログに、アルゴリズムの重要性について書いた記事もありますので本記事では踏み込んで書きません。
ですが、アルゴリズムについてしっかり学び、アルゴリズム的な思考を持つことができれば、いつもより精度の高い、良いソフトウェアを作ることができるのではと個人的には思います。
実際、私の友人たちがGoogle、AWA、Grabといった大企業と面談する際には非常にアルゴリズム的な課題を解決し、プレゼンしなければならないのが実情です。
アルゴリズムの実装の仕方までは思い出せなくても、その存在については意識し、そして開発するソフトウェアにとって必用ならば柔軟にアルゴリズムを活用しましょう。

 

データベース
学生時代、私はこの科目を見くびっていて、勉強しませんでした。
大きな過ちでした。

ご存知の通り、今日、全てのソフトウェア製品がデータベースを利用しています。
モバイルゲームにしても、販売用ウェブサイトにしても、ユーザー情報を保存しておく必要があります。
特に、大規模なシステムとなると、データベースは必用不可欠で著しく需要なものになってきます。
データベースは、ソフトウェアのユーザーが10人や100人のときには、工程も非常に少なく、学生の指導記録や従業員の勤務時間管理のように単純なもので済みます。

しかし、数百万ユーザーを抱える大規模システムを考えると、毎秒生成されるレコード数は、関係やビジネスも重複して数千万となる。どうやって対処したら良いのでしょう?

私の同僚や私自身も、必用な情報を取り出すためのクエリの書き方を知っています。
ですが、データがあまりにも膨大だと一つのクエリを実行するだけで何十秒もかかってしまい、問題になります。
データベースとクエリステートメントの性質を学び、理解すれば、非常に優秀なプログラマーとして、多くのユーザー向けの製品を構築するうちのひとりとなれるでしょう。
————————
「コンピュータネットワーク」、「コンピュータアーキテクチャ」、「オペレーティングシステムの原理」など、価値ある学ぶべき科目はたくさんあります。

これらの科目を飛ばすことはお勧めしませんが、そこはあくまでも枠と時間の許す範囲で。
要するに、個人的には上記の4つの科目が優秀なプログラマーになるために最も必要な科目だと思っています。

 

そして最後のアドバイスはというと?
最後お伝えしたいアドバイスは、自発性です。
プログラマーとしてプログラムの書き方を学ぶには、最大限、自発的でなければなりません。
主体的に学ぶ(ウェブサイトで検索しに行く、学習書を買う)、積極的に尋ねる(フォーラムに行く、オフラインで参加する、セミナー)、積極的に行動する(自らプロジェクトを発案して実行する、自分でいじってみる)…
そして可能であれば、卒業年度にソフトウェア会社のインターンシップに応募しましょう。
外注か内製か、あるいは会社の大小も気にする必要はありません。どんな会社かに関係なく、学校では教えてくれない部分の知識を学ぶことができるでしょう。

技術について学べる場所があれば、プロセスについて学べる場所、そして情熱や創造性を得られる場所があるということです。
無駄なことは何一つありません。
そして、本当に良いプログラマーになりたい、普通の人より早く実践したい、という方は、いつでもご連絡ください。
あなたにその資質があれば、どこか希望するソフトウェア会社のインターンシップに参加するお手伝いができると思うので、それだけでも十分なはずです。

皆さんの成功を祈ります!

Comments are closed.