結論から言うと、答えはでてないです。でも、なんとなくの方向性とイメージはできてきたので、仲間と一緒に進んでみますっていう話です。

はじめてのYAPC

YAPC2014に行ってきました。前々から存在は知っていて、行きたいなーと思っていたものの、実際に会場に足を運んだのは今回が初めてでした。

というのも、僕自身Perlを書いたのは中学生から高校生くらいの時で、まさにPerl=CGIみたいな時代でした。そこからもう15年以上たってPerlMongerでもないし、Perlな会社でもないしなぁと思って変に遠ざかっていたのかもしれないです。去年、行こうと思って忘れてて、思い出した頃にはチケットが買えなかったのが悔しくて、今回はTwitterで情報が流れてきたら、即購入しました。

YAPCの各セッションで色々自分の中で役立てられるものは、いくつかあったんですが、それらは恐らく他のブログでも紹介されるであろうということで、とりあえず割愛。YAPCに行って、色んな人の話を聞いて、最近僕が考えていることが、少しだけ見えてきたので、ちょっとまとめてみます。

常に動き続けるサービスを作るために、常に選択し続ける必要がある

色んなセッションを聞きました。共通して言えるのが、皆とにかく動いているということ。けんじさんのセッションで完成されたシステムなどない。完成された人間もいない。あるのは成長し続ける未完成なシステムと、それを支える未完成な人間だけだとありましたが、自分たちが提供しているサービスを、いかに継続し続けられるか、そのために技術的にどんなアプローチが出来るのかを日々模索しながら動く必要があるなぁと思いました。

選択肢の重要性

ここで思ったのが、選択肢の重要性です。あんちぽくんさんのセッションでもありましたが、資産と負債のバランスの戦略。選択肢がなければ、ある意味迷わず一本道で行けるので良いかもしれないですが、その道は行き止まりかもしれないし、落石とかあるかもしれない。未来は誰も確定できない。でも、別の道があるっていうことを知っているだけで、心の平穏が訪れるし、冒険心も湧くと思います。

選択肢を増やすには、当然ですが、知ること。知るためには、先入観や妙なこだわりをすてて、素直に他人の話を聞くこと。これが必要なのかなと思います。逆に、スポンジのように素直なんだけど、きっかけがないという状況もありえますね。それらを解消するためにできることは、かなりあると思っていて、実際会社でも社内勉強会や、Qiita投稿イベント(*)などを通じて、少しずつ埋められてきています。

でも、それだけだとなんか片手落ち感あったんですよね。というわけで、プログラミングそのものを楽しめる環境にしたいなぁと思っているわけです。

(*) Qiitaに記事を書いて、ストック数月間1位の人に、回らない寿司をおごるというイベント

プログラミングを楽しめる会社にしたい

良くも悪くも、僕が所属している株式会社ベーシックはエンジニアリング主導の会社ではないです。代表はコードを書けませんし、プログラマ視点プロダクトアウトな会社でもないです。かといって、プログラマが生きづらい会社というわけでもないです。日々、新鮮なアイデアや企画の中で、どう実現するかを楽しめる、そんな会社です。

受託や1個のサービスだけをずっと叩き続けるものとは、また違った面白さ/刺激があると思っています(個人的には会社名=サービス名な感じは大好きです/ここらへんの楽しさは自社サービスやっている所はだいたいそうかな)。

でも、もっとプログラマが楽しめる会社に出来ると思っているわけです。正確に言うと、外部のプログラマから「ベーシックで働きたい!」と思うような会社にしたい。でも、今の状態はそこから、かなりギャップがあります。なんだろ、そのギャップ…。って最近ずっと考えてます。

プログラマが楽しいってなんだ?

今回、YAPCで登壇している人、参加している人(必ずしもプログラマだけじゃないと思うけど)を見ていると、皆楽しそうです。僕も楽しかったです。今まで自分があまりふれてこなかった領域に、おいでおいでと誘ってくる雰囲気がそうさせるのか、わからないですけど、とにかく活き活きとしてました。なんかスピリチュアルなトークセッション(けんじさんです)もあって「宗教か、これは」と思ってしまいましたが。

「Perlが好きなので、Perlが書ける仕事がしたい!」っていうのは、とても分かりやすいし、プログラマ募集要項を作る際も開発環境なんかは、わりと意識して明確にアピールしようとするけれど(Ruby|Scala|Haskell書けるよって謳ってPHPしか書かせないとか論外として)…好きな言語で、好きなことが100%書けるわけじゃないんですよね。だって、仕事だもの。

そうなると、言語や開発環境の多様性とか深堀りはプログラマの生存にはとても大切な要素だけれども、それだけじゃないと。その道具で、何をどうやって作るかのプロセスと結果もやっぱり大事だよねってことになります。

普段の業務を楽しくしよう

例えば、全然楽しくないコードを書かざるをえない仕事があったとします。もうコピペです。コピペプログラマです。くそですね。真心込めて写経しろ!と、まぁ、そんな単純な仕事は、そんなないわけですけど、似たようなことを作る仕事はあります。ここはもう、あれですよ、共通化して自動化するっていう定番のやつですね。

自分が面白く無いと思える仕事を、面白いと思える仕事に置き換える、もしくは面白くない仕事を圧縮して、面白いと思えることをやるっていうのが、普段の業務を楽しくする方法かなぁと思ってます。すごく単純ですね。こんなんで良いのか?

結果がすぐ見えるようにする

最初プログラミングをやり始めた頃は(今でもそうかも)、コードを書いて、実行して、エラーを吐かずに動いた瞬間、感動してめっちゃ楽しいってなってたと思うんですけど、それを仕事にも再現できるといいなということで、自分たちが作っているサービスの結果をとにかくすぐ見えるようにした方がいい、と思います。これは、小さい意味でも大きな意味でも。

数年間作り続けて、ようやくリリースなんて今どきWeb/アプリ・サービスではあまりないと思うけど。ビジネス的にもヒットするかどうかなんて誰にも保証できないわけで、ちゃんとコンセプトを実現できているのであれば、すぐにユーザに届けて反応を見たほうが楽しいし、有意義です。

ただ、スケジュール優先で中身スカスカのカスサービスを作る事は、本当にクソでやめたほうがいいと思うので、神は細部に宿るというわけじゃないけど、そこのバランス感覚を会社全体で、どう共有するかこれは1つ課題だと思っています。

常に変わる前提で考える

仕事をしていく中で、わりとよくある「さっきと言ってること違う!」パターン。偉い人は言いました「昨日の自分は赤の他人」。この世の中、状況は常に変わっていくわけですね。なので、状況に合わせてやることを変えるのは、自然なことで、変化は必ず訪れるわけです。

となると、変化を避けていても辛いだけなので、変化を受け入れることが必要になります。変わることを前提で考え、作る。まぁ、言うと簡単なんですが、実践するには高度なものが求められますよね。そんなシステム簡単に組めたら、世の中ももっと効率的に動いてるっつーの。でも、そう考えているかどうかだけでも、だいぶ差は出てくるのかなぁと思います。

それからそれから…

うーん、どうしよう。まとまりがなくなってきた。

つまり僕が何をしたいのかというと、プログラミングを楽しめる人たちと、プログラミングを楽しみながら、面白いプロダクトを作っていきたいっていう、ただそれだけのことなんです。うむむ、難しいけど、やり続けるしかない。