読者です 読者をやめる 読者になる 読者になる

GoTheDistance

ござ先輩と言われています。(株) クオリティスタートという会社をやっています。

コードで周りを動かせるエンジニアになろう

CAREER HACKさんというWEBサイトに掲載されている、エンジニアのキャリア論レポートが盛り上がっていると聞いてやってきました。

で、盛り上がっている論点は「技術以外のことも出来るように vs ゼネラリストなんて目指すな」と、「汚いコードでも稼いだもん勝ちってそりゃあんた」っていう2点なので、その辺書いてみたいと思います。

ゼネラリストなのかスペシャリストなのか

自分で論点を立てておいて大変恐縮なんですが、結論から言えば、スペシャリティのないヤツがどうやってゼネラリストになれるんだっていうのが僕の見解です。

まずは、自分の得意分野を磨くことが全てだと思います。プロジェクトの成功という目的を達成する為に何をもって自分が貢献できるのかってことが一番大切ですし、その貢献できるポイントなんてそうそう多くない。ライバルはたくさんいるんだから。まずは出る杭にならないと始まらないと思います。そこで芽を出す。芽を出していく中で、自分以外の仕事の意味というのが、自分の仕事を通じてわかるようになる。自分以外の仕事の意味を自分の仕事を通じて理解しているから、他人のやっていることの凄さもわかってくるし、自分の引き出しも増えていく。そうやってゼネラリストってのは生まれてくるんじゃないかと思います。なので、まずは牙を磨けっていう意見には大賛成。自分が何を持ってチーム・プロジェクト・社外に知られてたいのかっていう視点を時々でいいから振り返りたいよね。

また、自分の作ったアウトプットでビジネスをしたいと思っているのなら、重要なことが1つあります。前にもブログに書いたのですが能力が高くても仕事を請けることは出来ない - GoTheDistanceっていうこと。自分の能力が高くても、能力を買ってくれるのはその能力が分かってくれる人だけ。つまり、同業だけ。同業だけを対象にビジネスをやっても先がないわけですから、問題は自分の能力を注ぎ込んだアウトプットを自分を知らない人に売ることができるかどうかになります。スペシャリティがあるだけでは足りなくなる。なので、けんすうがその点を強く補完して話してくれている。アウトプットの技術的難易度・高度さっていうのは、さしたる意味を持ちません。それが問題になるのは、アウトプットが受け入れられてから。マーク・ザッカーバークが「Done is better than perfect」って言ってるじゃない。そーゆーことなんじゃないかなぁ。

汚いコードでも動作させることが勝ちなのか

スタートアップに焦点を絞れば、その通りです。PythonRubyだなんてことはどーでもいい、目の前の道を開いたヤツが勝ち。なので、金山さんというチャラい社長さんに賛成です。

僕の事例で恐縮ですが、昨年の夏頃に利用していた徒歩圏内の倉庫が使えなくなり、色々あって10月末に某所に物流センターを構えることになりました。10月末には40ftのコンテナが数本入ってきます。1週間弱で本社と物流センターとの間で仕事が出来るシステムを作らなきゃ行けなくなり、確信犯的に非常にドブ臭いコードを書いて1週間で仕上げました。何がこれから求められるかわからないし、そこで仕事を回さないことにはこれからのことも決められないので、スピード重視で動くモノを用意しました。わかっているものだけを先ず作って何を改善するかを考える。Whatがブレるのが当たり前なら、スピード命でしょ。品質?そんなのWhatが変われば全部変わるから考えるだけ無駄。他人に納めるなら話は別。

その後、年明けから弊社の取り扱いアイテムが爆発的に増えてしまい「倉庫だけじゃなく複数の仕入先から商品を引く」ことを行うようになりました。倉庫にあるモノを出せば良いってもんじゃなくなり、業務の複雑さは飛躍的に上がりました。元が元なんで大改造も出来ずひょうたんツギのようにパッチを当てて運用でカバーという呪文を唱えて逃げていたのですが、今年のGWちょい前にこのままでは崩壊することがわかりました。ここまで聞くと「ほらみたことか、汚いコードを書いたからだ」って思うかもしれません。でも、求められるモノが違えば綺麗でも動かないコードになり、会社から見ればゴミにしかなりません。

ということで、これらの課題を解決して新しいステージに登るためには、ヒョウタンツギのコードを捨てて設計からやり直して全く新しいものを作るしかなかったので、GW明けから着手を開始して7月中頃に原型が出来ました。求める動作がほぼ確定したので、それから1ヶ月かけて徹底的にリファクタして機能は一緒だけど内部は別人のものを作り、8月にリリース。様々な仕入先からなる顧客の注文を今のメンバーで確実にデリバーできるようになり、売上もあがりました。

なので、僕は常々思うのはコードの汚さが問題になるのはコードでまわりを動かしてからでしょってこと。お仕事でやってる以上、自分の仕事の成果を元に誰かが動くわけです。誰の得にもならないものを綺麗なコードで作っても会社は回らない。自分が満足するだけなら額縁に入れて飾ればいい。でも、それって仕事とは言わない。

自分の価値を決めるのは自分以外の方々なので、エンジニアならば自分のコードで周りを動かしてみんなでハッピーになろうぜって思います。