読者です 読者をやめる 読者になる 読者になる

paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

あなたは自分がエンジニアに向いていると思いますか?適性を知らないままの就職が招く不幸とは

f:id:paiza:20161130144125j:plain
Photo by David A Ellis
f:id:paiza:20140916135428p:plainこんにちは。谷口です。

近年、エンジニア不足がたびたび話題になっているため、就活生の中にも就職課やエージェントの人にすすめられるまま応募をしたり、「不足してるなら簡単になれそう」「手に職がついて将来安泰そう」という考えだけで、プログラミングにふれたこともないまま、安易にエンジニア職を目指す人が増えています

もちろん情報系が専門ではなかったとしても、勉強と経験を積んで素晴らしいエンジニアとして活躍されている方はたくさんいらっしゃいます。

しかし一方で、システム開発の適性がないにも関わらずエンジニアとして就職してしまったがために、開発スキルがなかなか向上せず、苦労をしている人も少なくありません

就職後に後悔や苦労をしないためには、まずご自分の「エンジニアとしての適性」を見極めてから、「エンジニアを目指すかどうか」を決めた方がよいかと思います。

「適性を見極めるってどうすればいいんだ?」と思われた方は、以下にご紹介していきます方法を参考にしていただければと思います。

目次

■エンジニアの適性って?

f:id:paiza:20161130144235j:plain
Photo by Gergely Schmidt
エンジニアに向いている人と向いていない人では、仕事の生産性に大きな格差がある…という話は、かねてから多くの技術者や研究者たちによって叫ばれてきました。

ソフトウェアのコンサルタントだったデマルコ氏とリスター氏は、著書『ピープルウェア』で、プログラミングコンテストのデータをもとに、優秀なプログラマと成績の悪いプログラマの生産性には約10倍の差があることを示しています。フレデリック・ブルックスソフトウェア工学とソフトウェアプロジェクト管理について書いた有名な書籍『人月の神話』にもこの話は出てくるため、ご存知の方も多いかもしれません。

また、『ピープルウェア』より過去に発表されていたサックマンの論文では「プログラマ個人の能力差は28倍の差」があるという研究結果が出てきますし、最近では、奈良先端科学技術大学院大学の森崎修司氏が、個人によって同じソースコードを理解するための時間に6倍の差が出た事例を示しています。

実験により差は出るものの、オーストラリアのグリフィス大学名誉教授であるロバート・L・グラス氏も、著書『ソフトウエア開発 55の真実と10のウソ』の中で、エンジニア個人おいては、5から28倍のスキルの差があるとまとめています。

ピープルウエア 第3版

ピープルウエア 第3版

人月の神話【新装版】

人月の神話【新装版】

ソフトウエア開発 55の真実と10のウソ

ソフトウエア開発 55の真実と10のウソ

【読者参加型企画】2,000行のJavaソースコードを読むのに何分かかりますか? (1/2):CodeZine(コードジン)

これらの格差に関する話は、少しでも学校の授業などでプログラミングを習った経験がある方や、開発経験のある方はすぐに実感がわくかと思います。

プログラミングに関して同じ授業を受け、同じ課題が出されたとしても、適性のある人は短時間で課題をクリアできるのに対し、適性のない人の中には時間をかけてもほとんど進まない…という場合があるのです。

これが仕事となると、できる人がやれば一日で終わる業務を、適性がないのにエンジニアになってしまった人が担当したせいで、一週間経っても終わっていない……できている部分もクオリティが低い……納期が迫ってきて、結局はできる人が時間を捻出してほとんどの部分を作らざるを得ない……といったことにもなりかねません。

こうした不幸なミスマッチは、「エンジニアの仕事をよく知らないまま目指す」のではなく「少しやってみた上で目指す(自分には合わないと思ったらやめておく)」ことで、ある程度は防げるはずです。

では、「エンジニアとしての適性があるかどうかを知るには、何をすべきなのか?」をこれからご説明していきます。

■1.プログラミングの基礎を学んでみる

まずはプログラミング言語の書き方を学んでみましょう。

プログラミング初心者が学ぶのであれば、比較的コードが書きやすくて学びやすいのはPHPかと思われます。PHPは大抵のレンタルサーバで動きますし、参考になる学習サービスや書籍も多い言語です。

もちろん、既に作りたいものがある!学びたい言語がある!この言語に詳しくて教えてくれる人が周りにいる!という人はこの限りではありません。

全くの未経験からプログラミング学習を一人で始める場合、下記のような学習サービスが役に立ちます。複数言語に対応していますから、いくつかの言語で入門コースをやってみるのもよいかと思います。

Progate

f:id:paiza:20150204125057p:plain

paizaラーニング

f:id:paiza:20160830130051j:plain


プログラミングの基礎を習得して、自分のスキルを試したくなった人や、既にある程度プログラミングの勉強ができている人は、paizaスキルチェック問題をぜひ解いてみてください。

paizaのスキルチェック問題

f:id:paiza:20150205133638p:plain

paizaでは、プログラミングスキルをはかる問題の回答結果によって、S・A・B・C・D・Eの6段階でスキルランクを判定しています。Dランクが取得できると、プログラミングの本当に基礎の基礎に当たる概要は理解できているという目安になります。

このスキルチェック問題も、エンジニアとしての適性を見る目安になります。もちろん勉強を始めたばかりの頃はD問題でも難しいかと思います。しかし、しばらくちゃんと勉強を続けていったとして、どんなに頑張ってもCランクの問題が解けない…という人は、恐らくエンジニアとしての適性はないと思います。

■2.動くものを作ってみよう

f:id:paiza:20161130144427j:plain
Photo by Mark Turnauckas
基本的なコードが書けるようになってきたら、何か動くものを自分で作って、できれば完成させてみましょう

コードの書き方や作法は、初心者向けサイトや書籍を見て勉強すれば多くの人が身につけられます。しかし、作品を一つ完成させようと思ったら、コードの基本的な書き方だけでなく、システム作りにおける様々な分野を勉強したり、仕様を考えたりしなければなりません。思うような機能が作れなかったり、わけのわからないエラーが出たり、詰まってしまうこともあるかと思います。

少し大変かもしれませんが、ここでどうしたら解決できるか調べたり、人に聞いたりして、何とか解決を目指してください。そうやって調べる中で「この機能を追加したかったけど、思いのほか複雑な作業が必要みたいで今の自分には無理かも……」と思ったら、そこは飛ばしても大丈夫です。(そこでストップしてしまわないよう、「この日までに解決策が見つからなかったら飛ばして次の作業に取り掛かる」と決めておいてもよいでしょう)

ただ、とにかく作品としての完成を目指して、試行錯誤してみてください。

実際のエンジニアの業務でも、問題が起きる→解決策を調べる→実行する…という流れは同じです。

ここで「調べるのが億劫でこれ以上進めたくない」「問題解決に興味が持てない」と感じる人は、恐らくエンジニアとしての適性はないと思います。

動画でプログラミングが学べるpaizaラーニングでは、クラウド上に用意されたエディタとWebサーバ、DBサーバを利用し、ブラウザだけで動画を見ながらWebアプリケーション開発を学べる「Webアプリ開発入門 PHP+MySQL編」を公開しています。

Webアプリ開発入門 PHP+MySQL編
paiza.jp

■3.IT系の勉強会に参加してみよう

f:id:paiza:20161130144612j:plain
Photo by ITU Pictures
IT業界では、未経験者・初心者でも参加可能のオープンな勉強会が日々開催されています。

プログラミングの勉強になるのはもちろんですが、経験者や現役エンジニアの人と話せるよい機会です。というか知り合いやOBでもいない限り、現役エンジニアと直接話せる機会って、就活の説明会や面接以外では勉強会ぐらいしかないかと思います。

前述の作品作りや勉強でわからないところを聞いてみるのもよいですし、エンジニアの仕事や企業について聞いてみるのもよいでしょう。やはり現役の方からは、ネットで調べるだけでは出てこないリアルな話を聞くことができます。

最初は緊張するかもしれませんが、「自分はいま学生で、将来エンジニアになりたいと思って勉強をしているのですが…」と言って質問をすれば、結構皆さん優しく教えてくれるかと思います。


【勉強会を探せるサービス】

■4.自分の書いたコードや作品を公開しよう

f:id:paiza:20161128212352j:plain
Photo by othree
自分で作った作品やコードをGithubやWeb上に公開してみましょう。

企業の面接でいくら「プログラミングの勉強をしています!エンジニアになりたいです!」と言っても、「本当にコードが書けるのか?」「どれぐらいのプログラミングスキルがあるのか?」といったことは証明できません。

自分の作品やコードが公開されていれば、企業としても評価がしやすくなりますし、「プログラミングの勉強をしています」と口で言うだけで作品がない人よりも、説得力が出てアピールしやすくなります

「まだしょぼいものしか作れないし…」と思われて、公開をためらう方も多いのですが、企業だって、すべての応募者が完璧な素晴らしい作品を持っているとは思っていません。

自分なりに調べながら作ったものを通して「なぜこれを作ろうと思ったのか」「どこを工夫したか」「どこが楽しかったか」「どこが難しかったか」など、自分の考えや想いを説明できれば、多少うまくできなかった部分があったとしても、立派なアピールポイントになりますし、熱意が伝わります

特に情報系が専門ではない人がエンジニア職を目指すのであれば、既に自分で勉強を始めていることをアピールするのに、ポートフォリオがとても役立ちます。

GitHubでは、ほかの人が公開しているコードを見ることもできますので、それもまた勉強になりますよ。
github.com

■プログラミング、楽しかったですか?

f:id:paiza:20161130144743j:plain
Photo by Gordon
ここまで、コードの書き方を学んだり、動くものを作ってみたりして、「楽しい」「もっとやりたい」と思われましたでしょうか?

「まったく楽しくなかった」「大変なだけだった」「一つのところでずっと詰まっていた」という人は、恐らくエンジニアとしての適性はないと思います

「楽しかった」「もっとやりたい」と感じられた人は、「プログラミングが好き」というエンジニアとして大変重要な素質があると言えます

ただ、実際の業務では、「一人でガリガリコードを書いたら完成!」ではなく

  • グループでの開発
  • 最適なアルゴリズムを考える
  • 一つの言語だけでなく、複数言語やツールの使用
  • コーディングだけでなく、サービス企画から考える開発
  • エラー処理やセキュリティ対策
  • あらゆるパターンを網羅した動作テスト
  • 人のコードを読んで修正するリファクタリング

…などなど、さまざまな作業が発生します。

求人応募の際は、「ちょっとプログラミングやってみたら楽しかったからエンジニアになりたいです!」だけではなく、エンジニアの業務内容についてもある程度把握しておいた方がよいでしょう。

書籍やWebサイトで学ぶのもよいですが、これも先輩や勉強会で会った人に話を聞くと、普段どんな業務をこなしているか(もちろん会社にもよりますが…)がよくわかるかと思います。

また、paizaラーニング就活パックでも、業界構造やキャリアについてがわかる「IT業界の構造とエンジニアのキャリアについて」の動画学習講座を公開しています。

paiza.jp

■まとめ

前半に言いましたとおり、エンジニアは適性が物を言う職業です。

別に適性があるから優れている、ないから劣っているという話ではありません。適性がなさそうだと感じる職業は、先に選択肢から外しておいた方がいいという話です。

例えば、話すことが苦痛な人が進んで営業職を目指すことはあまりないと思いますし、計算が苦手で仕方ない人は、経理に応募するよりも別の仕事を選んだ方が幸せかと思います。

よく知らないまま適性のない仕事を選んでしまうと、合わない仕事に苦労が重なり、限界を迎えてから退職……といった不幸な結果にもなりかねません。

情報系が専門でない人の中には、エンジニアについて「なんとなくよさそうで、だけど実態がいまいちわかりにくい」と思っている人もいるでしょう。

そんな中で「なんとなくエンジニアを目指そっかな」と考えていた人には、ぜひ上記を参考にして、少しでもプログラミングやエンジニアの業務について知ってから、改めて考えていただければと思います。

その上で「楽しい、もっとやりたい」「やっぱりこの仕事につきたい」と思われましたら、ぜひエンジニア職に応募してください!


paiza新卒は、paizaがITエンジニアを目指す学生の皆さんに向けてオープンいたしました、規定のプログラミングスキルがあれば大手企業からベンチャー企業までエントリーシート選考なしで応募ができる就職活動支援サービスです。

プログラミング問題を解いてスキルランクを獲得した上で企業に応募ができますので、自分のプログラミングスキルのレベルが明らかとなり、プログラミングができる人ほど有利に就活を進めることができます。

また、paiza新卒の学習コンテンツ「paizaラーニング就活パック」は、企業からの「こんな開発スキル・知識を身につけている学生がほしい」という要望と、ITエンジニア志望の学生からの「就活を上手に進めるためにはどうしたらいいのか」という悩みに応えるための特別コースです。

単純なプログラミングスキルだけでなく、業界・キャリアに関する知識やWeb周辺の知識の習得、ポートフォリオとして応募時に提出できるようなサービスの作成までを行える就職特化型の講座内容になっております。

paiza.jp

paiza.jp

youtu.be




paizaでは、スキルのあるエンジニアがきちんと評価されるようにし、技術を追い続ける事が仕事につながるようにする事で、日本のITエンジニアの地位向上を図っていければと考えています。

paizaではITエンジニアとしてのスキルレベル測定や、プログラミング問題による動画学習コンテンツ(paiza Learning)を提供しています。テストの結果によりS,A,B,C,D,Eの6段階でランクが分かります。自分のプログラミングスキルを客観的に知りたいという方は是非チャレンジしてみてください。

http://paiza.jp

プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編