こんにちは、CureAppの新卒1年目、@imoansです。私は新卒ではありますが、実は会社の古株でもあるんです。
あれは2年前、まだ会社が設立してまもない頃。プログラミング駆け出しの学生だった私が、開発メンバーとして放り込まれました。
そこから現在に至るまで、目まぐるしく進化するJavaScriptに目を回しながら食らいついていった実体験を紹介します。
放り込まれる前の話
プログラミング、本気でやってやろう
2年前の私は、重たいWindows機でインターネットとレポートを書くだけの学生でした。
プログラミングを始めるきっかけとなったのは、CTOの@shinout氏との出会い。
もともとWebサイトやアプリを作りたいとぼんやり思っていたので、相談すると「本気でやるなら色々教えるよ」とのこと。早速Windowsを売り、勧められたMacBook Airを買って覚悟を表明しました。すぐさまMacBook Airは、氏によってなにやら色々インストールされカスタマイズされました。振り返るとここでhomebrewやらXcodeやらが入っていたのでした。
基礎の基礎から
これでやっとプログラミングができる!とワクワクしていた私ですが、甘かった...。タイピングは遅すぎるし、ブラウザのショートカットも使えないなど、基礎ができていない状態だったのです。1ヶ月「すし打」でタイピングを鍛え、ショートカットもひたすら使って覚えて、今度こそプログラミングだ!
マウス禁止のあのエディタ
そう思っていたのも束の間。次の課題は、マウス禁止のあのエディタ、「Vim」でした。
Sublime TextやAtomなどという選択肢を知らないまま、プログラミングに必須の技術ということで叩き込まれました。2週間もすると、矢印キーを使う意義も感じなくなり、これもクリア!にしてもいつコードを書けるんだろうか...。
プログラミング開始!
いよいよプログラミング開始。お手軽に学べて、CureAppでも使っているというJavaScriptをやってみることにしました。文法はネットで勉強してねと言われ、ドットインストールとschooを紹介されました。そこで基礎的な文法を一通りやった私は、なにかコードが書きたくてウズウズするようになりました。もともと、サイトの文章を自動で持ってきたい(スクレイピングのことです)、と思っていたので、それに挑戦しようとしたのですが、あっさり挫折。まずは世にあるプログラミングの問題でも解いてみようということで、paizaをやり始めました。
お題は簡単なのに...stdinってなんやねん
paizaの問題は、難易度がいろいろありますが、簡単なものは例えば「数字の文字列を受け取って、それを足し合わせましょう」のようなレベルのものでした。これぐらいなら解けるだろと思い、自分の得意な言語 = JavaScript を選択。すると現れたのは...
え、なにこの呪文。
得意な言語を選んだら、見たこともないコードが現れ、「あ、これ初心者厳しいわ...」。
結局当時は、「そういうもの」として受け入れるしかありませんでした。
「そういうもの」で解けない問題、現る
しかしpaizaを進めていくと、このprocess.stdin.on(‘data’
を理解しないと解けない問題が出てくるのでした。
今でも忘れられないのが、paizaのストーリー型の問題で、うまく解けると主人公の男性が憧れの女性とハワイ旅行に行けるというもの。しかし、どうしても最後のケースがうまく通らず、ストーリーがいい感じに進まなくて、箱根旅行になってしまっていました。
で、この上手く行かない理由、なんと、
「標準入力のサイズが大きくprocess.stdin.on(‘data’, fn)
が2回実行されたから」
でした。当時、そんな事情など全く知らず、@shinout氏に「これはひどい…」と言われながら解いてもらいました。解けた後、種明かしをされても理解できず、プログラミングは奥が深すぎる、とおののくばかりでした。
そんなこんなで徐々にJavaScript力をつけていった私は、プログラミング開始してから約半年、ついにCureAppで働かせてもらえるようになります。
さらにJSに打ちひしがれる日々が始まるのです。
続く...。
この時期を振り返って
プログラミングの醍醐味を味わうまで
try & errorが最もしやすいプログラミング。しかし、その醍醐味を味わうには、様々な障壁がありました。
タイピングやショートカット、エディタなどの基礎力、そして環境構築。これらを飛ばしてtry & errorをしても、醍醐味には辿りつけなかったでしょう。ドットインストールやschooをやり始める前に、基礎力がついていたことが自分を後押ししていたなと思います。
JavaScriptからプログラミングを始めるということ
JavaScriptは、よく「手軽に始められる」というメリットが挙げられています。Chromeのデベロッパーツールなどが引き合いに出されて。それはそのとおりなのですが、今のJavaScriptは初心者にも「環境」への理解を強いる言語です。ブラウザとコマンドラインの違いが分からないと、同じJavaScriptでも全然実行できません。検索しても、それがどの環境のものなのかを考える必要がでてきます。paizaの簡単な問題に答えるにも、Nodeの複雑な標準入力の仕組みを利用する必要があります。
そこを乗り越えるのは、「手軽」の一言では片付けられない難しさがあったなと思います。
次回は、会社にアルバイトとして入ってから、Promiseやbrowserifyに出会った、JS初心者の思いを綴ります。乞うご期待ください。
明日のCureApp Advent Calendarは@fitzrさんです!