たいむかぷせる2

何年か後に見なおして頭を抱えてくなるものたちのあつまり

だれのためになにをつくるのか

Webエンジニアとしてのアルバイト

さて,ここには書かなかったのですが,Webエンジニアとしてアルバイトを始めてからそろそろ1年くらいになります。なんだかんだ3つの会社を渡り歩いて来て,色々と思うこともありました。1つ目は大手IT企業を脱サラした2人が立ち上げたガチガチのスタートアップベンチャーで,2つ目は社員50人くらいのそろそろミドルに行きたいベンチャー企業,3つ目は社員数400人くらいのメガベンチャーでした。

ぼくがしていた仕事は,ちょっとむずかしく言うと「バックエンドWebエンジニア」という役割です。ものすごく大ざっぱに言うと,Webページの見た目を作るのではなくて,ユーザーごとに異なる動作をするとか,データベースを操作するとか,そういう「裏側」を作る人のことですね。 具体的にぼくがどんな仕事をしていたかというのは今回ほとんど関係がないので,まあそんな仕事もあるんだなくらいに思っておいてもらえば問題はないです。

今回はこのあたりにからめて なにかをつくるとはどういうことか ということを書こうと思います。

マニュアルを読めば

1つ目の会社で作っていたWebアプリは,主に官公庁や古くからある企業むけのものでした。基本的には「今まで紙ベースで行なっていたものをWebベースにしよう」という姿勢のもので,具体的には業務支援サービスや勤怠管理システムのことを示します。 そこでは ユーザーのことを考える ということは,残念ながらほとんどありませんでした。 「どうすれば使いやすいか」を考える暇があるならマニュアルを書けばいい といったような感じで,悪く言えば殿様商売といったところですね。

ここから先はぼくの邪推だけれど,開発者とユーザーの間にはこういう心理があるのだと思っています。

  • 開発者
    • どういう風に使っても案件が決まってしまえば使ってもらえる
  • ユーザー
    • どれだけ使いにくくても結局それを使うしかない

というもので,もう少し言い方を変えると,両方とも「天から降ってくる」ようなものだといえます。 ユーザーにとってそのサービスは, 天から降ってきたのだから仕方なく使うもの であるし,開発者にとってそれは 天から降ってきた案件なのだから最低限の仕様さえ満たしておけばよいもの でしかないということです。

こんな風に書くとSIerとか業務アプリといった業界を批判しているかのように見えるかもしれないけれど,そういうわけでもないのです。そこにコストをかける必要がないのであれば,そこにコストをかけないのはごく自然なことだからです。 そのシステムではそれは求められていない。

見たところ使いにくいなあ,と思っていたシステムではありましたが,それを使いやすくするためには時間もコストもかかります。まだまだ下っ端エンジニアだったぼくは「これはこういうものだ」と言い聞かせ,ひたすら上に言われた通りにプログラミングをしては,マニュアルを書いていました。 ほとんど「ログアウトボタンを押すとログアウトできます」なんてことが書かれたマニュアルを作らなければいけないことはそれなりに悲しくはあったのですが,そういう仕事なんだと思うしかありませんよね。学生アルバイトができることなんて,本当に微々たるものなのです。

新しい技術を取り入れていくべきか

その会社で使われる技術は,お世辞にもそこまで最新のものとはいえませんでした。ぼくはそこそこギークな人間で,はてなブックマークやらなんやらで「流行り」を追っかけるということが好きです。その会社ではその記事でもう時代遅れだと批判されているような技術やフレームワークがまだまだ現役でした。 そこにはバージョン管理という概念はなく,全員が本番サーバにターミナルからSSHでログインし,vimで直接ソースコードをいじるといったような環境です。

けれどこれも,それが必要とされていないから,変わることはないんですね。いわゆる「技術力が高い」と言われるITベンチャーなんかだと,最新の技術やフレームワークをどんどん取り入れていきます。

なるべく少人数でスピーディーに開発できるシステムを用いれば,人件費を下げることができます。どんどん効率化していかないと,競合するサービスに敵わないからですね。また頻繁な新機能の実装とテスト,セキュリティの維持,バグの修正,負荷対策などなど, 様々な問題をその高い技術力で解決していかなければいけません。

けれど,二回目になりますが,ぼくがかつて作っていた業務アプリケーションでは,そういうことは必要とされていなかったんです。いわゆる「作りきり」でお金もぽーんともらえるので,最新の技術を使う必要はないし,使われる場面も限られていますから,新機能が追加されることもほとんどありません。セキュリティだってお世辞にも強化されているとはいえませんでした。

まったく毛色の違う2つの会社で働いてわかったことは,結局 技術力は必要とされなければ高まらない ということでした。今となっては当たり前のように思えますが。新しい技術をどんどん取り入れていくことは,一見するとすばらしいことのようにも思えます。しかしそこにはドキュメントが少なかったり,開発できる人が少なかったり,導入コストが高かったり,色んな障壁も存在するのです。

なぜ技術が必要か

結局のところ技術力って「だれのため」のものなんでしょう。また「なんのため」にあるんでしょうか。 ぼくは結局それは 「ユーザーのため」であり,最終的には「エンジニアのため」 なんだと思っています。

エンジニアには大きく分けて2種類の人がいると思っています。技術が大好きって人と,ユーザーが大好きって人ですね。ぼくは残念ながら前者ではなくて,後者のエンジニアです。 じぶんの作ったものをなるべく多くの人が楽しく使ってくれたらうれしい。そういうエンジニアです。

結局そのために技術は必要なんです。 ユーザーに合わせて,速いスピードでプロダクトを評価,改善していって,どんどん使ってもらう。そういうことを繰り返していかないと,ユーザーに価値なんか提供できません。ユーザーから挙がってくる「ここは使いにくいな」とか「ここがもっとこうなるといいのに」ということを無視していたら, なるべく多くの人が楽しく使って くれることはないからです。

ぼくにとって技術は,ユーザーを喜ばせたいエンジニアのためにあるものだ,ということです。

なぜエンジニアなのか

ひとことに技術技術と言われるエンジニアがどんなことを考えているのか,一例としてなんとなくわかっていただけたんじゃないのかなと思います。

ぼくはエンジニアのすごいところ,おもしろいところは

少数の力で速いペースで世の中を良くすることができること

なんじゃないかなと思っています。医者とか政治家とか教師とかに比べて,圧倒的速いペースかつ,小規模のチームが世界に大きな影響を与えてきました。

これがぼくがエンジニアを選んだ理由でもあります。世の中にたくさん仕事はあるけれど,エンジニアならなるべく多くの人をなるべく早くハッピーにできる,と本気で考えているからです。

もちろん技術を使って仕事をする会社はたくさんあるのですが,やっぱり「なにか作ってだれかをしあわせにする」っていうことからは離れたくないな,といつも思っています。

予告みたいなもの

さて今回はいつも通りビジョンばかり書いて終わってしまいました。3つの会社を経験してきたことがあんまり活かせていないので,今後はそのことを書いたり,もう少し「はたらくとはどういうことか」ということを書けたらいいなと思っています。