退社します(ワラビモチから2年)

この度、1年10ヶ月ほど勤務した会社を退社*1することになりました。会社や一緒に働いた仲間達への謝辞の気持ちを表すとともに、今までのプログラマとしての人生を振り返って自分語りをしてみる、いつもと違った少し長めのエントリです。なお、ここに書かれていることは個人の見解であり、所属する(していた)組織の意見を代表するものではありません。


文学部書道学科卒という、ちょっと変わった学部をでてすぐに、新卒で、ある会社に就職しました。今年で社会人4年目の1986年生まれです。


もともと、学生時代にプログラミングはほとんど経験がなく、高校から大学はずっと書道に明け暮れる日々でした。*2

初めてプログラミングを勉強したのは大学3年の就職活動が始まる少し前です。文学部書道学科という経歴では、高校や中学の教師になるくらいしか学部時代の経験を直接活かすことができる道がなく、教師になる気がなかった自分は、なんとなく「プログラマという職なら、自分でもできそうかな」という、あまり根拠のない直感のもと、勉強をはじめたのがきっかけです。あとその頃読んだ ハッカーと画家 コンピュータ時代の創造者たち に結構影響されたような気がします。*3 最初は、C言語の本をとりあえず近所の本屋で一冊だけ買って、それを見ながら独学でちょっとずつ学びました。


就職活動はそれほど頑張ったわけではないですが、運良くある企業に採用されました。「今回退社しようとしている会社」とは違う会社です。その会社は、20名ほどの小さな会社で、主に組み込みやWindows上のデスクトップアプリの受託開発を行なっていました。主要な言語はCもしくは、C++(Visual Studio 6.0)です。社会人になって最初に勤務したその会社には、1年8ヶ月という短い期間しかいませんでした。とあるきっかけで、違う会社に移ることになったからです。そのきっかけとは、2010年9月に、とある関数型都市名古屋にて行われたScala座というイベントです。


http://scalaza.com
http://togetter.com/li/47287


当時の社会人1年5ヶ月ほどの自分は、「勉強会」というものの存在をやっと知り始めたところで、実際に行ったことはまだ一度もありませんでした。しかし、blogやtwitterを始め、独学で勉強をやりだしたScalaという言語に興味を持っていた自分は、最初の勉強会をなぜか名古屋で体験するということになります。そこが「なごやこわい」といわれる恐ろしい都市とは知らずに・・・



Scala座では、様々な発表があり、最初の勉強会でとても楽しく感動して興奮したのを覚えています。当時も今もScala界隈で有名でblogやtwitter上で知っていた @yuroyoro さんや @kmizu さんに初めて会い、緊張しながら話しかけたのを今でも覚えています。


そのScala座で、


「発表しようとしたんですけど・・・ちょっと完成しなくて・・・誰か動かない原因わかりませんか?わかる人にはワラビモチをあげます!」



_人人人人人人人人人人人人人人人人人人_
> 突然のワラビモチ! & ライブデバック <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄ 

という「なごやこわい(?)」と、@hito_asa さんの 「Scala2.8でひるまのおしごとしてみたよ」という発表があり、その際 twitter 上で以下のようなやりとりがありました。



というわけで、なんと人生で初めての勉強会



_人人人人人人人人人人人_
> 突然のソーシャル転職(?) <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y ̄ 



となり、2010年12月からいまの会社に務めることになりました。Scalaを勉強し始めて、Scalaにハマっていた自分としては「Scalaで仕事できる!」という驚きと喜びとが入り混じった感情でした。今回退社することになり、1年10ヶ月ほどしか在籍しなかったわけですが、その中で一番多く関わり時間をかけたのが以下のシステムです


MongoDBではじめるカジュアルなタイムラインシステム


なんだか一言では云い難い、よくわからないバックエンドのシステムです。上記のスライドでは、MongoDBのことがほとんど*4Scalaの部分に触れていませんが、具体的には


といったライブラリを使い開発を行いました。途中に他の仕事もはさみながら、1年くらいこれをつくりました。すべて*5、自分と @hito_asa さんで作りました。最初の設計は @hito_asa さんが考え、色々大胆な設計変更*6しながら、ペアプロしたりTDDしました。*7


あ、すべて2人でつくったのはちょっとだけ語弊があり、当時高校3年生だった、最近は日本一Scalaz に詳しいねこはる先生こと @halcat0x15a拉致して誘って、インターンをさせ手伝ってもらったという、楽しいイベントもありました。


上記のタイムラインシステムが一番主となるものでしたが、これ以外にも、レコメンドシステムの一部や、細かいツールや、簡単なプロトタイプ作成などにScalaを使用しました。


その後、そのタイムラインシステムが終わると、自分はある Android アプリや iOS のアプリに半年ほど関わりました。AndroidScalaでやれないこともないような状況でしたが、結局 Java で書きました。


あと途中に、Pigでのデータ解析なども少しやりましたが、自分のやった作業を中心に述べると概ねこんな感じです。




話をちょっと変え、会社自体や、チームのことについて書こうかと思います。

会社は、blog、チャット、メーリングリスト、画像投稿サービス、ゲームなどなど、B to Cのプロダクトばかりです。最初の会社では、B to Cの経験はまったくなかったので、それがまずとても新鮮で面白かったです。とくに自身が所属していたチームでは

設計書が存在せず、とにかくどんどん実装し常時細かくリリースして、ユーザーの反応を見ながら作り変えていく

というWeb系企業らしいスタイルでした。自身はバックエンドでScalaを書いていたわけですが、それと連携するフロントエンドはPHPJavaです。いわゆる、アジャイル?な開発スタイルで、みんなで激しく議論したり、ときにはUXのためにユーザーテストを行ったり。


社内やチーム内には、UXにとても力を入れているエンジニアがいたり、とても決断が速くて頼もしいリーダーがいたり、(自分は技術ばかり追い求めていましたが)技術だけではなくビジネスやマーケティングの優れた視点をもった仲間がたくさんいたり、自分とは違った様々なタイプの尊敬出来る仲間と出会えて楽しく仕事ができました。みんなそれぞれが、とにかく「どうすればユーザーに喜んで貰えるか?」を真剣に考えていたので、意見がぶつかって、激しい口論になるようなことが多々ありましたが、その「言いたいことをはっきり言える」という雰囲気がとても楽しく心地良かったです。


そんな素晴らしい仲間達に恵まれながら、自分は気づいたら気持ち悪いほどScalaマニアになっていたりとかよくわからない状況でした。技術ばかり追い求めて、チーム全体のことにはあまり気が配れず、自分勝手な言動をとり迷惑をかけたことも多々あったと思います。



そんななか、もともと睡眠がとても不規則(それがどんどんエスカレートしていた)だったり、夏バテだったり、個人的な事情もあったり、最近社内で改革があって慣れない仕事になったり、とにかくいろんなことが重なり、無理をしすぎたのか自分が体調を崩しました。7月半ばから休職して通院することになり、それをきっかけに、「今後社内で自分がやるべき仕事、できる仕事、向いている仕事はなんなのか?」ということや、自分のスキルセット(Scalaに偏りすぎている)や、数年数十年先のキャリアプランをゆっくり考えなおすこととなり、その結果退社するという結論に至りました。



正直、とくに今後技術的にも業界的にも「これがやりたい!」ということがあまりはっきりは定まっていません。勿論、就職先の会社が決まっているわけでもありません。とりあえずニートになります。だいぶ回復しましたが、まだ体調が万全ではないので、すぐには就職活動せず、色々な人と会ってゆっくり考えながら探そうと思っています。ただ、この「プログラマ」という職業は大好きなので、一度「転社」(会社は変わる)することにはなりますが「転職」(プログラマという職業をやめる)をしないことだけは確実です。おそらく一生プログラマをやるつもりです。



ここまで長い文章を読んでくれてありがとうございました。というわけで、退社して一旦無職になります。就職活動の状況や、その後のことが決まったら、またblogに書くつもりです。→ かきました



改めて最後に。
体調をくずし休職することとなり色々な方々に迷惑をかけて申し訳ありませんでした。今までお世話になった皆さん本当にありがとうございました。一緒に仕事ができてとても楽しかったです。

*1: タイトル退職でもよかったか・・・ 言葉難しい・・・https://twitter.com/xuwei_k/status/242632646759419905

*2: 下の写真は大学4年頃書いたもの

*3:当時も今も芸術とか好きだったので。

*4: LTなので、わざとネタっぽく、設計で残念になった部分だけ話したらしい。今も動いてるはずです

*5: DB の設定周りや、運用などは他にも関わった人がいましたが、「Scalaを書いた」という意味では

*6:もともとMySQLを使用していたものを、MongoDBに変えた

*7:このタイムラインシステムを作った際に得た経験や、設計の詳細については、かなり詳しく話せるので直接あったときに聞いてもらえば、答えられる範囲内で話します。