paiza開発日誌

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

文系出身おじさんがプログラミング未経験からGASおじさんになるまで

f:id:paiza:20081220180034j:plain
Photo by Matthew Keefe

どうも、小松です。paiza(ギノ)では編集担当をしています。

今はエンジニアや企業のエンジニア採用担当にインタビューをしているほか、このブログの校正なども担当しています。

ごくまれにブログの記事も書いています。最近だとこの記事を書いたのは私です。
paiza.hatenablog.com
この記事の最後にも後ろ姿だけ出ています。そしてそこにも書きましたが、こう見えて実はpaizaのプログラミングスキルチェックではAランクです。今はそれなりにプログラミングもできます。(スキルチェックについて詳しくはこちら

とはいっても、この会社に入るまではプログラミングなんてまるでしたことがありませんでした。そもそも文系出身ですし、大学を出てからは記者や編集者といった文系ど真ん中みたいな仕事しかしてませんでしたから、対極だと思っていました。

今回は、そんな自分がプログラミングをやってみた経緯や、どうやってAランクまでたどり着いたか、そしてプログラミングができるようになってどんないいことがあったかなどを書いてみます。

これからプログラミングを始めようか迷っている人や、スキルチェックを始めてみたけどつまずいている人たちへのヒントになるといいなと思います。

 
目次

 

■ 簡単な経歴

現在30代半ばの文系出身編集者です。ギノに入社して2年ほど。それまでは紙媒体の記者やWeb媒体の編集者などをしていました。

ギノに入社するまでプログラミングはまったくの未経験。これまでの仕事でも業務上エンジニアの人と話すことはありましたが、技術的な話をされても正直何を言ってるのか、半分くらいは分かってませんでした(きっと世の中の非エンジニアの多くはそうではないでしょうか……)。

■ プログラミングをやろうと思ったきっかけ

一言で言うと「エンジニアを取材しないといけなかったから」です。

誰を取材する場合でもそうですが、取材対象の話すことをある程度理解できていないと内容のある質問なんてできません。政治家を取材するなら政治を、スポーツ選手を取材するならその競技を、しっかり勉強してから臨むのが鉄則です。

もちろんギノに入社して以後はエンジニアのことを調べて取材に臨むようにしていたのですが、残念ながらなかなかうまくいきませんでした。質問をしていても記事を書いていても「いまいち勘所がつかめないな……」ということが多かったのです。そこで、もういっそのことプログラミングをやってみるのが一番手っ取り早いのではと考えました。

さらにそれ以外にも、エンジニア志望の学生の前でpaizaについてご紹介させていただく機会などもあったので、どれくらい勉強したらどのランクが取れるのかのレベル感をある程度つかんでおきたかった、というのもあります。

ただ当時は「Bランクが取れたら十分だろう、Cランクで終わる可能性もあるだろうな」くらいに思っていました。

 

■ 学習の流れ

勉強は終業後にちまちまやりました。勉強時間は概ね1日おきに1時間、長くて2時間程度。「疲れたらおしまい」というくらいのゆるい感じでスタート。以後、あまりペースは変えませんでした。こういうのは何よりも続けることが大事だと思いますので、つらくなるまでやらずに「次の日の自分に任せる」くらいの温度感でいいと思っています。
 

学習を始めてからランクを取るまでの期間

  • 初日にDランク
  • 3日目にCランク
  • その3週間後にBランク
  • さらにその2カ月後にAランク

と、スタートから3カ月ほどでAランクを取得できました。結果的にはすごく順調だったと思います。「こんなことならエンジニアになっておけばよかったのでは……」と思わなくもないです。30代半ばで新たな自分の適性を見つけましたが、できればもっと早く気付きたかったですね。
 

プログラミング言語

Rubyを選びました。エンジニアから「とっつきやすい言語」だと言われていたことと、paizaがRuby(Rails)でできているから、という理由から選びました(C言語もちょっと触ってみましたが、「おまじない」が多すぎたのでやめておきました)。結果的にとてもやりやすかったのでこの選択は運が良かったと思います。

理由は後述しますが、明確に作りたいものが決まっているなど学ぶ言語をしっかり決めている人以外は、最初はRubyかPythonあたりがいいと思います。
 

学習法

メインはpaizaのスキルチェックを解くこと。それだけです。何かを作りたいという起点ではなかったので「プログラミングの何が面白いのか/難しいのか」が分かればそれでいいと思っていました。スキルチェック問題を解くために、必要な知識を本やWebの情報を使いながら調べていく形で進めていきました。

最初はもちろん、自社のサービスですし、paizaラーニングをやってみました。霧島ちゃん(CV:上間江望さん)、かわいいですよね。

ただ、個人的には動画学習は合っていないなと感じました。自分にとってはスピードがのんびりしすぎていたんです(今は有料会員だと再生速度を変えることができるようになりましたが、当時はまだできませんでした)。

「本を読むほうが自分のやりたい速度で学習できそうだな」と感じたので、まずはこちらの初心者用の本を1冊買いました。

3ステップでしっかり学ぶ Ruby入門

3ステップでしっかり学ぶ Ruby入門

プログラミングについて書かれた本はたくさんあるので、どれを選べばいいか迷うかもしれません。自分の場合は、大型書店に行って初心者向けの本を片っ端から開き、それぞれ最初の10ページくらいを読んで、一番フィーリングが合ったこの本を選びました。

どの学習方法が合うか、どの本が合うかなどは、学習する人によってそれぞれ違うと思います。自分が一番続けられそうなものを選ぶといいでしょう。

次に、どのタイミングで問題に挑戦するか。paizaのスキルチェックは各問題1回ずつしか挑戦できない仕組みになっており、悩みどころだと思います。

自分は極力無駄打ちをしたくないタイプだったので、どのレベルでも本問題は「いけそう感」が出るまで触りませんでした。そして「いけそう感」の判定には練習問題が役立ちます。この練習問題はランクも本問題と同じように設定されていてレベル感がつかめるほか、何度でも提出できて制限時間もありません。慎重派の方におすすめです。なお、練習問題はここからいけます

 

■ 3カ月の戦いを振り返る

D〜Cランクを取るまで

Dランク問題は初日、2時間くらい勉強して取りました。

最大の難関は入力・出力の理解だと思います。Rubyでいうところの「gets」でもらって「puts」で返すことさえ分かれば、その間の部分は難しくありません。四則演算などの基礎的な文法さえ書ければ解けます。実際、買った本を半分も読まずともDランクは解けました。ここでつまずいている人はまず「入り口と出口」を理解することから始めるといいでしょう。

次にCランク問題。Dランクが思いのほかあっさり取れたので、その後はDランクだけでなくCランクの練習問題もいくつか解いてみました。そうすると、さすがにすぐにCランクは解けないけど、一方でDランクはあっさり解けるようになっていきます。Dランクの問題は超初心者向けだけあって難易度も低いので、手が慣れてくればそれだけで速く解けるようになります。

それで2日目も同じようにDランク問題とCランク問題を見ていたところ「Cランク問題ってDランクの解答を2〜3個くっつける感覚でコードを書けば解けそうだな」という手応えが得られました。それに気付いて「いけそう感」が出たところで本問題に挑戦。するとCランクもあっさりとクリア。

「おっ、こんなに簡単に取れるとは、もしかして私って才能あるんじゃないか?」と若干天狗になりかけました。

 

甘くなかったBランク

意気揚々とBランクにも挑戦しましたが、現実はそんなに甘くありませんでした。実際にやってみると分かりますが、DランクとCランクのレベル差よりも、CランクとBランクの差のほうがだいぶ大きいです。完全に鼻をへし折られました。

具体的にいうと、Cランクは少し慣れればDランク問題×2(3以上の場合もあります)に因数分解することができるのに、Bランク問題では問題をどう因数分解すればいいかが見えにくいんです。さらに、多次元配列を使うなど、解くのに必要な知識レベルも上がってきます。

Bランクの練習問題を見たとき「これは解き方の見当すらつかないな」と思うものもちらほら。明らかに実力が足りていないなと感じました。

ここで基本に立ち返って、半分しか読んでいなかった本を最後まで読みました。さらにその後もBランク問題とCランク問題を中心に解く日々が続きます。しだいにC問題は比較的解けるようになりましたが、一方でB問題はそれほど解けそうな感じはしていませんでした。

そんな状況が続いたある日、覚醒のときが訪れます。

とっつきやすい問題と苦手そうな問題が見分けられるようになってきたのです。具体的には、自分は整数問題や法則性を問う問題は得意で、逆に経路問題や配列を操作する問題が苦手だということが分かってきました。今振り返ると、これに気づけたのがとても大きかったです。そして、その後は得意そうなもの(問題名である程度類推できます)に絞って攻めていくようになりました。

覚醒から1週間ほど、本問題挑戦3問目で無事にBランクもクリアに成功。未経験から1カ月足らずでついにBランクまで到達しました。ここでCランク時と同様「これはAも取れちゃうんじゃないか?」と再び天狗モード突入です。

 

死闘の果てのAランク

せっかくなので、Aランク問題もやるだけやってみようかと、いつもの通り練習問題を見てみました。得意ジャンルの問題であれば、一見してなんとなく「できそう感」があったのですが、実際にやってみると解き方はさっぱり。一向に糸口がつかめません。その後思い知らされることになったのですが、BランクとAランクにはさらに大きな差がありました。結局Bランクに挑んだとき以上に詰まることに。比較的得意なジャンルを選んだにもかかわらず解けなかったので、心が折れそうになりました。

Aランクの練習問題が解けたのは挑戦開始から2週間後。このときの達成感は半端なかったですね。そして、大きな気付きもありました。その解答を振り返ってみると、法則性こそ見つけるのに苦労したものの、コード自体はまったく難しいものではなかったんです。Bランク以前を解いていたころと大差ありませんでした。「これならうまくハマればAランクであってもなんとかなるのではないか」と、弱いながらも「いけそう感」が出てきたのです。

以後はRubyそのものの勉強以上に、解くための筋道を大切にするようにして問題に臨むようにしました。具体的には、紙に流れを書いてからコーディングすることを徹底したのです。すると不思議なくらいに正答率が伸びました。徐々にAランクでも「いけそう感」を感じ始めたので、いよいよ得意なジャンルの問題に絞って本問題への挑戦を始めました。

クライマーズ・ハイというか意地っぱりというか、最後はとりつかれたように週末に挑戦していました(Aランクは1問あたりの解答時間が長いので週末じゃないとできないんですよね)。そしてAランクが取れたのはそれからさらに数週間後。通算8問目か9問目でした。解答も100点じゃありません。86点。ケースは1つ通りませんでしたし、時間も少しオーバーしていました。

死闘の果てに、ギリギリのギリで取った泥臭いAランク。ここに1人のおじさんのプログラミング戦争は終結したのでありました。

 
なお、一応Sランクの問題もいくつか見ました。しかし、これはもはや一朝一夕に取れるレベルではないと感じたので、今のところ挑戦していません。今は半ば習慣化した状態で定期的にAランク以下の問題を解いています。現在もAランクは時間内に解けないことのほうが多いくらいです。Sランクはいつか挑戦するかもしれませんし、このまましないかもしれません。

 

■ プログラミングができるようになっておじさんは

そして今。そのおじさんがどうなっているかといいますと。

エンジニアの取材をいいものにするという目標は、達成できていると思います。プログラミングにこれでもかと触れ、面白さや難しさも肌で感じましたし、学習の過程でいろいろ周辺知識も勉強したので、取材中に「??」となることは激減しました。やったぜ。それにプログラミングができる編集者は比較的レアだと思いますので、自分の市場価値的にも上がったのではないでしょうか。

あとは、社内のエンジニアたちとも距離が縮まりました(たぶん)。プログラミングをやって初めて「現役のエンジニアはすごい」と理解できるようになりました。「なんかよく分からないけどきっとすごいんだろうなあ」くらいだったころと比べると、見え方がずいぶん変わりました。他方、エンジニア側も自分のことを「ただのおじさん」ではなく「プログラミング好きなおじさん」として認識してくれるようになったと思います(たぶん)。

さらに最近は、日曜大工的に業務に関わる簡単なbotとかも作るようになりました。エンジニアの手を煩わせるほどでもないレベルなら自分で作っちゃってます。

最近はGoogleAppsScript(略して「GAS」)を使うことが増えています。このブログを読んでいる人にとっては釈迦に説法になりますが、botを作ったり、既存のWebアプリと連携させたり、スプレッドシートを自動更新させたりといったことが環境構築なしでできるスグレモノです。非エンジニアでもこれを使いこなすためにプログラミングをやる価値があると思います。

なお、GASはほぼJavaScriptです。Rubyじゃありません。GASを使ってみようかと思い立って、改めてJavaScriptを学び直しました。ただ、大して苦労はしませんでした。というのも、先に1つの言語でプログラミングの考え方そのものを理解してしまえば、たとえ文法が違う他の言語であっても応用がききます。例の「おまじない」にしても、初学でいきなり触れるよりも圧倒的に拒絶反応がありません。最初にC言語をやったときのような感覚はなく、すんなり入っていけました。その経験もあるので、もし最初に何を選ぶか迷っているのであれば、まずはRubyかPythonをおすすめしたいですね。はじめに書きやすい言語でプログラミングの考え方を学び、そのあとに他の言語をやるほうが楽だと思います。

botやデータ更新の自動化で、手作業でやっていた部分を大きく減らすことができました。その分だけ他のことに時間を割けるようになり、仕事の質も上がりました。一見、自分の仕事からすごく遠そうなところにあったプログラミングですが、やってみたら想像以上にメリットがあったと思います。

■ 最後に

というわけで、プログラミングをやったおじさんのお話でした。

ここまで読んで「お前はプログラミングの適性があっただけで、みんなそんな簡単にできるわけないだろ」と思った方もいるでしょう。実際、それはその通りだと思います。みんながみんな、同じようにやればプログラミングができるようになるか、Aランクが取れるのかというと、きっと違います。

記事を書きながらいろいろと振り返ってみましたが、自分はプログラミングやpaizaのスキルチェックとの相性が非常によかったです。問題を解くために筋道を立てる作業そのものが楽しかったですし、ゲームの制限プレイのような、限られた持ち駒で何ができるかを考えることももともと大好きでした。このあたりがうまくハマった結果だと思います。

一方で、もしこれを読んで「私もこのおじさんの気持ちが理解できるかも」と思った方がいたら、あなたはプログラミングの才能があるかもしれません。もし興味があるならぜひやってみてください。

特に若い人には試していただきたいですね。自分自身が想像している以上にプログラミングの適性を持っていて、エンジニアとして成功する可能性のある人が、まだまだ世の中にはいっぱいいるはずです。そういう方々にぜひ才能に目覚めてもらいたい。そしてエンジニアになって、世界をびっくりさせるものを作ってください。

一流エンジニアになったころに、きっとおじさん(そのころには初老かもしれませんが)が取材に行きますから。




現在paizaラーニングの学習動画1,000本突破記念として、6/4(火)23:59までにスキルチェックを受験&結果をツイートしていただくと、抽選でAmazonギフト券が当たるキャンペーンを実施中です。

全ての問題がキャンペーン対象となっていますので、プログラミング初心者の方もぜひ挑戦してみてください!問題一覧と詳細はこちら

 
また、プログラミングを勉強してエンジニアを目指そうと思っている方には「EN:TRY」がおすすめです。paizaが運営する、これからエンジニアを目指そうと考えている若い人のための転職サービスで、開発の実務経験が少ない人でも応募できる若手チャレンジ求人を中心に掲載しています。上で紹介しているプログラミングスキルチェックの獲得ランクしだいで、書類選考なしで複数の会社へ応募ができますので、ランクが取れたらぜひのぞいてみてください!

“EN:TRY"



 

paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

詳しくはこちら

paizaラーニング

そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

詳しくはこちら

paizaのスキルチェック





※このブログで紹介しているキャンペーンやイベント、およびサイト内の情報については、すべて記事公開時の情報となります。閲覧されたタイミングによっては状況が変わっている場合もございますのでご了承ください。

ITプログラマー・エンジニア転職・就活・学習のpaiza

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

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編AI機械学習入門

エンジニアのためのプログラミング転職サイト|paiza転職

プログラミング スキルチェックエンジニア求人一覧

未経験からエンジニアを目指す人の転職サイト|EN:TRY

プログラミング スキルチェックエンジニア未経験可求人一覧

エンジニアを目指す学生の就活サイト|paiza新卒

プログラミング スキルチェックエンジニア求人一覧

ブラウザを開くだけで エディタ、Webサーバ、DB等の開発環境が整う|PaizaCloud