Life Literacy

エンジニアの生活の質を向上させる方法について整理中

初級プログラマから中級プログラマになるための方法

スポンサード リンク

僕の個人的な感覚ではあるが、近頃はソフトウェアの重要性が会社の偉い方々の中にも浸透しつつあるようだ。そのため、スキルの高いプログラマを自社で持つべきだという声が業界全体で高まりつつあるように感じる。

会社側もさまざまな施策でスキルの高いプログラマを育成しようとしているようだが、育成によって高スキルプログラマになるのではなく、個人の努力によって高いスキルを持つに至った人が多いように思える。

結局のところ、スキルが高いプログラマは、日々の業務を遂行したり、研修を受けたりするだけではなく、自宅でも勉強や趣味でソフトウェア開発を行っているから高いスキルを持っているのだと思う。

本記事では、まずは初級プログラマを脱して中級プログラマになるためにやるべきことについて紹介する。

アルゴリズムとデータ構造を勉強する

lifeliteracy.hatenablog.com

でも紹介したように最も重要なのはアルゴリズムとデータ構造である。体系的に勉強するのは大変だが、資格の勉強や滅多に使わない英語の勉強に時間を費やすのであれば、こちらに時間を割くべきである。

まずは、

アルゴリズムC・新版―基礎・データ構造・整列・探索

アルゴリズムC・新版―基礎・データ構造・整列・探索

を一冊、たっぷりと時間をかけて勉強してみることからおすすめする。この一冊をやり切るだけで、レベルが数段上っているだろう。

競技プログラミングに参加する

アルゴリズムとデータ構造を十分に学んだら、次は実践の場へと移ろう。現在はとても便利なサイトがいくつもあるが、その中でも僕が利用したことがあるのは、 トップコーダー [topcoder]HackerRank | Technical Recruiting | Hiring the Best Engineersである。

TopCoderは老舗のサイトで僕が学生の時から存在しており、よく友人と問題を解いて競い合っていた。また、今はどうかわからないが、Googleの採用サイトでもTopCoderの問題を解くことを推奨していたくらいで、質の高い問題が数多く揃っていた。

HackerRankは、確か2012年ごろにローンチしたサイトである。個人的にはどちらの問題を解いても良いかと思うが、これら以外のサイトも含めて、いろいろと試してみて、自分にあったものを見つけることをおすすめする。

重要なのは、問題を解き続けるということだと思う。

オープンソースソフトウェアから学ぶ

世の中には、質の高いコードが数多く公開されている。自分の興味のある分野や言語のソフトウェアのコードを読んでみよう。もし、余力があれば開発に参加してみるのも良いだろう。

GitHub · Where software is builtでは、注目のプロジェクトが言語ごとに探すこともできるので、自分の好きな言語で人気のソフトウェアについて学んでみることをおすすめする。

仕事で作ったもの以外の自作ソフトウェアを他人に使ってもらう

他人に使ってもらってフィードバックを得るというのは、自分を大きく成長させてくれる機会となるので、時間がある人は挑戦することをおすすめする。

まずは、自分の仕事を楽にする簡単なツールスクリプト言語で作ってみることから始めてもいいだろう。自分のためになるということは、他人のためになることも多い。

これらを職場の人間に使ってもらうことから始めてもいいし、Githubなどで広く公開するのでも良いだろう。

おわりに

中級プログラマになれば、食べていくことに困ることはなくなるだろう。また、ソフトウェア開発が自由自在にできれば、世の中のさまざまな問題を解く能力を得たということになる。僕は、仕事以外で開発したソフトウェアを多くの人に使ってもらうまでには至ってないので、いつかそうなれるように今後も頑張っていきたいと思う。