Webエンジニアというナイスな職種 ―業務未経験から1年が経って―

前職を辞めてRailsを独学し、業務未経験からWebエンジニアになって7月で1年になり、なかなか順調なので、Webエンジニアという職種(実際には私の個別の働き方に関する内容を含むけれど)の良いところを書いてみたい。

何をしているか

家事代行サービスを提供するベンチャー企業で、ユーザー向け予約マッチングシステムと、家事代行を実際に担うスタッフ向けのスケジュール管理システム、社員向け業務管理システムの開発を行っている(BtoCの事業会社のシステム開発部門)。

サーバーサイドはRails、フロントエンドはTypeScript/Backbone.js/jQuery/Reduxという謎構成のSPAで開発を行っている。分業はエンジニア/デザイナーという程度で、社員エンジニアには、インフラ含めてフルスタックな役割が求められている。

最近の業務の流れとしては、事業計画に沿って新機能の開発をビジネスサイドの関係者とチームを組んで進めている感じだ。ベンチャーらしく、事業の推進にあたってもエンジニア/ビジネスサイドの区別は曖昧で、エンジニア主導で機能の要件が決まることも多い。

Webエンジニアの良いところ

コードがたくさん書ける、ゴリゴリ開発できる

前職はIT企業にも関わらず業務でプログラミングする機会がまったくなかったけれど、現職では入社直後から毎日ゴリゴリコードを書く機会に恵まれている。

すべてのコードを書くのに長年の経験が必要なわけではない。良いコードを書く場合にだって必要ない。すべてのプログラムには、ありふれたやり方で入力と出力を結びつける「にかわのようなコード」が存在する。こういうのは誰が書いたって大差ない。時給 $28 の人に頼んでも時給 $59 の人に頼んでも結果は同じだ。もし熟練エンジニアしか雇わないのなら、そういった軽い仕事に余分なお金を払っているということになる。

上の記事でRailsの生みの親のDHHも言っているように、プログラミングの仕事というのは簡単なタスクから難しいタスクまで様々で、開発リソースと費用対効果の兼ね合いで手付かずで放置されているタスクも大量にあるので、業務未経験から入ってもすぐに取りかかれる開発タスクはいくらでもあるのだ。少しずつレベルを上げて、段々と難しいタスクが出来るようになって行くのは楽しい。

裁量が大きい

個別の機能開発のコーディングは基本的に一人のエンジニアが担当して行い、ビジネスサイドと話し合って大枠の仕様を決定した後は、「あとはエンジニア判断でいい感じに作って」という感じなので、自分で決めて開発できる範囲が非常に大きい。また、このような実装方法における裁量に限らず、そもそもベンチャーは発言力があれば何でもできるようなところがあるので、「自分のアイディアで、より良いサービスを作る」ということにかなり主体的にコミットできている感覚がある。

健全な議論ができる

議論はあくまで前提を共有した人間同士が目的をもって行うものであり、前提も目的も共有しない他者との議論を活発化させても議論は無限に後退するだけである。

京太郎さんが上の記事で、ネットでは目的を共有しない者同士による、議論として成立していない議論が横行しているという分析を書いているけれど、逆にエンジニアの議論は目的を高度に共有しているので、極めて健全にわだかまりなく行えることが多い。技術的な観点でどのような方法が望ましいかについては、世界中のエンジニアに共有された前提が豊富に用意されているためだ。

自由度の高い働き方

これは会社にもよるだろうけれど、今は週3リモート、週2出社の働き方で、11時までに出社すればOKなフレックスタイム制なので、かなり伸び伸びと働けている。毎朝目覚まし時計をセットしないですむ生活は素晴らしい。エンジニアは成果さえ出していれば文句は言われないので、全般的に柔軟に働ける部分が大きい。

まとめ

前職では、仕事というものは「嫌々やらされるつらい営み」という感じだったけれど、Webエンジニアになってから、主体的に働く感覚がつかめて、労働者として本当のスタートを切れたと感じている。仮に今の会社での労働環境が悪くなっても転職が容易にできそうな点も安心感があって良い。