長年やってた自営業をやめてAutifyに転職した

ひょんなことから、長年やっていたフリーランスプログラマをやめて、 Autify というE2Eテスト自動化サービスを運営している会社の社員になり、一年が経った。

フリーランスプログラマ雑感 では、フリーランスプログラマ生活を振り返って、フリーランスプログラマの実態に興味がある会社員に向けて書いたけど、今回は逆に、会社員をやったことがないとか、ぼくのように、会社員だったのが昔すぎてどんなものだったのか忘れてしまったという方に向けて、会社員プログラマとはどういうものか説明する。

目次

Autify入社のきっかけ・動機

Autifyの開発には、正式リリース前から業務委託のパートナーとして携わっていた。で、しばらく働くうちに社員になりませんかという誘いを受けた。

その時点で、Autifyは事務所も引き払って全社員フルリモート体制に移行していた。保育園の子供2人いるのもあって、社員になったからといって働き方を変えることはできないけど大丈夫か確認したら、成果さえ出してくれればなんでもいいとのことだった。

以前の記事で書いたように、フリーランス自体、なんとなく流れでなったのを惰性で続けていただけで、とくにフリーランスでなければならないという強いこだわりもなかったので、まあやってみるかということで軽率に入社した。

自営業→会社員

自営業から会社員になったことで、実感する変化がいくつかあった。

業務委託として手伝う中で、slackに入って#engineeringチャンネルとかも見ていたし、外部の人間なりに、ちょっとしたチームの一員みたいな気分でいた。だけど中に入ってみて、わかった。外の立場でいたときには、整理された後の情報だけを受け取っていたということが。外と内だとだいぶ見えかたが違う。打ち合わせも、まったくないわけではないにしろ、ほんとうに必要最低限、結論が出た後の情報伝達だけで、フリーランスのときは、なんの割り込みもストレスもなく、ただひたすら集中して実装するという作業だけをやっていた。

社員になると、ほぼ毎日なんらかの打ち合わせがある。いまではだいぶ慣れたけど、入社した当時は、こんなに打ち合わせするんだと驚いていた(それでもぼくは打ち合わせ少ないほうだと思うけど)。

それから、半年毎にコミットメントシートと言って個人の目標を決めなければいけないし、360度評価というのもあって、自分以外の社員への評価も要求される。ぼくはシニアエンジニアとして採用プロセスにも関わっているので、入社希望者のコードの評価や面談もする。顧客から問題が上がってくれば、問題の重要度によっては、機能開発を中断して原因調査と修正をする。スプリント毎に取り組む課題を決めて、スプリントの終わりには振り返る。チーム外にチームとしての成果をどう見せるか考える。会社員ってこんなにいろんなことしてたんだっていうのは、ほんとにおどろいた。そうか、これが組織の一員になるということなのか。

一方で、なにもしてないのに給料が(かなり大幅に)上がったのにもおどろいた。いや、なにもしていないというと語弊があるんだけど、自営業の場合、自分から何らかのアクションを起こさない限り収入が増えることはけっしてない。正直、べつに給料上がらなくても、下がりさえしなければいいやくらいの気持ちでいたので、上げてと言ったわけでもないのに、なぜか急にもらえるお金が増えたというのは、すごく新鮮だった。

受託→自社事業

ぼくは、これまでのプログラマとしてのキャリアを通してずっと、受託開発をやってきた。フリーになる前は会社員だったけど、その会社も受託開発の会社だった。だから、自社サービス一本でちゃんとまわしている会社というのは初めてだ。

受託開発は、一括請負と準委任で大きく分けられる。準委任の場合との比較で言えば、正直、プログラマとしてだとそこまで違いはない感じがしている。作るものは決まっているし、どういう優先順位でこなしていくかもプロダクトオーナーを中心にチームで決めている。

一括請負の場合は納期と仕様がわりとかっちり決まってることが多いので、だいぶ違う。受託開発は短距離走もあるけど、自社サービスの開発だと常に長距離走になる。

とくにAutifyについて言えば、業務委託の立場でも、中に入って自社事業としてやっていても、ほとんど同じ意識で開発してて、劇的な変化みたいなのは感じてない。ひたすら実装したり不具合を修正したりする。

ただ、踏み込もうと思えばいくらでも踏み込める立場にはなった。あと、わかりづらい問題の原因調査みたいなのは、フリーランスの受託の立場だとあまりまわってこないのかもしれない。やることが曖昧気味で、必要期間も読みづらく、タスクとして切り出しづらいなどの理由があると思う。結果的に、より広範囲の仕事をカバーするようにはなった。

Autifyはどんな会社か

2021年9月現在、組織として28人。うちエンジニアリングチームが12人。

社名と同名のE2Eテスト自動化サービスでグローバル市場を取ることを目指している。なので、公用語英語。エンジニアチームに関しては4割が非日本語話者。海外の顧客も徐々に獲得しつつある。

フロントエンドエンジニアとして入社したけど、とくにフロントエンドに限ることなく、アプリケーションプログラマとして幅広く開発できている。業務委託のころも含めて、長らくAutify for WebというWebサービス用のテストシステムを開発してきたけど、ここ半年くらいはチームを移って、モバイルアプリをテストするための Autify for Mobile の立ち上げをやっている。

経歴的に他の会社のことはよくわからないので比較はできないけど、エンジニアリングチームは、ふつうのWebエンジニアが知恵を出しあって日々開発している。GitHub上で開発して、CIがあって、AWS上で動いてて、RailsとReactで書かれてて、毎週イテレーション回して、KPTやって...。そんな感じで、ふつうのプラクティスをふつうにまわしている。

AutifyのValue は、以下の三つ:

とくに、CEO近澤さんが国内に広めたと言っても過言ではない Burning needs は、社内に浸透していると思う。次に取る選択肢が本質的な問題解決になるか、不要なこと・後回しにしても問題ないことに時間を割こうとしていないか、失敗の中に次の行動に活かせる点が含まれていないか。とくに意思決定層は、こういった思考を元に日々行動を選択しているのを感じる。

あと、Autifyは、CSチームがめちゃくちゃ強い会社な気がする。一時期、テクニカルサポーエンジニアの助っ人みたいなこともやってたのだけど、顧客の問題解決に真摯に向き合って取り組んでる姿が、まさにAutifyの顔って感じですごいなあと思った。同時に、いかに効率的に対応していくかみたいなとこも、いろいろ工夫してがんばってるように見えて、そこもすごい。

Autifyは、子育てしている人の率がわりと高くて、CEO、CTO含め、自分と似たような年齢の子供を育てている人が多い。だから、子供が熱を出して仕事ができなかったり、場合によっては子供の面倒を見ながら仕事をするといった状態も、当たり前のように理解してもらえる。驚くべきことに、子育て中の人は必要な分だけ育児に充てていいという制度まである。それから、通常の有給に加えて、子の看護休暇というのも5日間付与されている。

制度面で言うと、エンジニア以外も含めて全社員が実質的に成果ベースで働けるように、裁量労働制ではなく、フレックスタイム制を採用している。ここらへんは、なんか 日本の労働制度とかが関係していてめんどくさいらしい んだけど、Autiyでは、全社員について、何時から何時まで、一日何時間働かなきゃいけないという縛りはない。

それから、フルリモートなので東京付近に住まなければいけないという決まりもなく、実際に、国外も含めいろんなところから働いている人がいる。

他の転職エントリ:

英語

前述のように公用語英語なので、すくなからず英語ができないといけない。これは、英語ができなければ世界は取れないというCEOの考えからそうなっている。

ぼくは、入社前、英会話がまったくできなかった。どのくらいできないかというと、英語でリクルーティングの電話が突然かかってきたときに(なぜかときどきかかってくる)、まず「やっべー英語だよどーしよ」となる。で、相手がしゃべり終わると、"I don't speak English"と言って即会話終了。街で外国人旅行者に電車の行き先を聞かれたときとかも、同様に断って、そのたびもうちょっと英語やらないとなーとか思ってた。そういうレベル。

業務委託のときは、基本的に日本人の特定の社員としかやりとりしていなかったので、英会話能力は不要だった。が、社員になってチームに入るなら、英語は避けられないと思った。

ということで、入社1ヶ月前くらいから、付け焼き刃でDMM英会話をはじめてみたりした。

Autifyでは、入社すると英会話能力のテストを受ける。その結果に応じて、会社から英語勉強の支援を受けられる。具体的には、週一回30分の英語セッションで、英語の疑問点について質問したり、直すべき点の指摘を受けたりする。それから、Slackに#english-learningっていうチャンネルがあって、ネイティブの講師が英語の疑問に答えてくれる。

それに加えて、年間6万円まで英語学習に使える予算が出る(これはレベルに依る)。ぼくは、いま現在は、 My Brighture っていうサービスを使っている。

そんな甲斐もあって、いまではそこまで英会話に怖気付くこともなくなった。たぶん街で道を聴かれたら教えてあげられるし、海外旅行にいってもどうにかコミュニケーションを取れるような気はしている。入社時に受けたテストではCEFR A2 mid判定だったけど、いまではCEFR B1 midまで伸びた。

とは言え、やっぱり同僚の言ってることは半分以上わからない。ぼくの場合、読み書きはそんなに苦がないんだけど、リスニングがとにかく弱く、ネイティブにふつうのスピードでしゃべられると、ほんとに聴き取れない。

なお、仕事では基本的にSlackやGitHubのテキストベースでのコミュニケーションだから、いまのところそこまで支障はない。

技術周り

技術的におもしろいところはいろいろある。

E2Eという性質上、実際のブラウザの上で顧客サービスを走らせるのが前提になる。クラウド上でクロスブラウザでテストスクリプトを走らせるワーカーと呼ばれる仕組みとか、簡単にテストシナリオを作成できるようにするためのレコーダーと呼ばれるブラウザ拡張とか。Autify for Webの開発をやってると必然的にブラウザのAPIとか仕様とかに詳しくなってくる。

Autify for Mobileは、ブラウザのマニアックな知識とかは要らないけど、今度はモバイルアプリの挙動とかAppiumというモバイルテスト用のプロトコルについても知らなくちゃいけないし、VM上で動作するモバイルアプリとブラウザごしにリアルタイムで対話するためのUIの実現とか、こっちはこっちで別のおもしろさがある。

まとめ

この記事では、フリーランスプログラマをやめて、Autifyの会社員になって感じたことをまとめた。 一開発者としての意識はそれほど変わらないものの、開発以外のやることの多さや、勝手に給料が上がることの驚き、Autifyという会社に持っている印象、入社して英語力が上がったことや、技術的なおもしろさなどにふれた。