11年自社開発の会社のエンジニアをしてから受託開発の会社へ転職
2020年4月から受託開発の会社に転職し、3ヶ月が経ちました。
入社当初は、どう振る舞ったらいいものか。どう成果を出したら良いものかと焦りに焦りまくっていたのですが、あっという間の3ヶ月でした。
今は少し落ち着いてきて、どんなペースでどうアウトプットをしていけばよいか、少し整理がついてきたので、このタイミングでブログを書いておこうと思います。
はじめに
この記事は、自社開発の会社と受託開発の会社を並べて記事にしていますが、どちらが優れている。ということを主張するものではありません。
後で記事中にも記載しますが、私の感覚ではそもそも働き方が別物であり、比べるものではない。という印象です。
また、世の中にはたくさんの会社があり、それぞれのシチュエーションがあることも理解しています。 「私はこう思う」ということを書いていきますが、そうではないケースも多々あることも理解の上、記載していますので、どうぞ優しい目でお読みいただければと思います。
自社開発の会社ってどうなんだろう。 受託開発の会社ってどうなんだろう。と思っている方にとって、参考になる記事となれば幸いです。
概要
自社開発の会社から受託開発の会社へ転職してみて、私の感覚で双方に違いがあると思ったことは以下になります。
- 技術選定の仕方
- 長期的なサービス運用
- 開発に対する時間軸の違い
一方で、そこまで差がないと思ったことも以下のようにあります。
- 顧客への向き合い方
- 技術の鋭さ、アンテナの貼り方
- 短期的なプロジェクトの進め方
以上の点について、それぞれコメントしていきます。
違い: 技術選定の仕方
もちろん、会社や関わる案件には関わるのでしょうが、自社開発の会社ではよっぽどのスタートアップでない限り、技術選定は一段落ついている状態でジョインすることが多いと思います。 どこかで時期を見て、技術選定を見直すこともあると思いますが、これまで私が関わってきた自社開発の会社3社では、ベースとなる技術は決まっていて、そこからどう肉付けしていくか。というところが主眼におかれていました。
更に、会社規模が大きくなればなるほど、より多くの人がメンテナンスしやすい技術を選択することが多くなる傾向にあると思います。
一方で、受託開発の会社では、案件ごとに異なる技術を使っている場合や、まっさらな状態からどの技術を選定するかを選ぶ場合もあり、技術選定をする機会は自社開発の会社より多くあるように感じています。
またその選定の際には、要件に見合うもの + 世の中のトレンドを見ながら、割とエッジなものを取り入れることも多いように思います。
個人的には、転職して3ヶ月、これまでだったら触らなかったであろう技術に対して、調査やプロトタイピングをしてみて、久々にエンジニア的な楽しさを切に感じているところです 🥰
そして、この技術選定の差には、プロダクトをどれだけ長くメンテナンスするかという視点の違いがありそうです。
違い: 長期的なサービス運用
まだ転職して3ヶ月ということもあり、想像の域もでないところがありますが、開発した一つのサービスをどれだけ長く運用(メンテナンス)するかというのは、大きな違いなのだろうと思っています。
自社開発の会社ほど、長期的なサービス運用を見据えた技術選定や開発を行っていくでしょうし、受託開発の会社では自社開発の会社ほどは長期にサービスを運用しない可能性もあります。
もちろん、長期的なサービス運用をしないからといって、ないがしろに開発されているわけではなく、Infrastructure as Code を心がけたり、品質の高いコードとなるようレビューをしたり。というところは、双方変わりありません。
ただ、時間軸が違うことから、前段に上げた技術選定の仕方というところに差が出る印象です。
また、この時間軸の違いは3つ目の違いによるものかと思っています。
違い: 開発に対する時間軸の違い
自社開発の会社と、受託開発の会社、最終的にはどちらもリソースのしっかりした管理をしなければならないことには変わりがないのですが、受託開発の会社のほうが、より細かな管理を求められるため、リソースや時間軸への考え方もシビア(より短期に注力)になってくるように思います。
例えば、自社開発の会社はエンジニアが開発するものを資産とし、四半期、半年、1年、3年、5年〜くらいを見ながら開発を進めていきます。 売上が安定してきている会社であれば、短期的にメンテナンス性の低いものを作るより、将来的にメンテナンスしやすいシステムを組むという選択も可能です。その優先順位の付け方や、時間のとり方は、中長期を含め検討の余地があるため、長めの時間軸となりそうです。
一方で、受託開発の会社となると、(案件にもよりますが)速いもので1, 2ヶ月くらいで開発完了を目指すものもあります。 そうなったときに、決められた期間で中長期(3~5年)を見越したような技術選定や、開発基盤の準備は難しいものもあります。
中には中長期を見据えながら開発をする案件もありそうですが、自社開発の会社よりは、短い時間軸で物事を判断する必要があり、それによって、全体的な違いが生まれてきていそうです。
同じ: 顧客への向き合い方
では、受託開発の会社は受注して、言われた通りものを作ればよいのか。ユーザーに向けてものづくりはできないのか。と思ってしまうかもしれませんが、そこは自社開発の会社と変わらないと私は思っています。
製品は誰のために作るのかと問われれば、最終的にその製品を使う人であることは変わらず、双方に違いはありません。
また私が強く実感するのは、自社開発の会社で、周囲や上司と調整をしながらものづくりをすることと、受託開発の会社でお客様と調整しながらものづくりすることは、そう大きく変わるものではないということです。 作っていく製品について、考え、議論し、結論を出すというところは、どちらも変わりません 😇
自社開発の会社だから、自由にものづくりができる!ということもないですし、受託開発の会社だから、お客様の言う通りにしなければ。。というものでもありません。
チームや組織で製品を作るなら、必ず周りには人がいるものであり、どちらのケースであれ、周りとの調整は必須ですね。
同じ: 技術の鋭さ、アンテナの貼り方
前述で少し触れましたが、技術に関する鋭さや日々のアンテナの貼り方はどちらも同じように鋭く、感度高めであることが求められることは変わりありません。 (むしろ、今の職場は皆さんめちゃツヨな感じがして、頑張る日々)
新しく出た技術、ブラッシュアップされた技術をキャッチアップして、プロダクトに活かせないか。プロトタイピングして、実際に使えるか試してみる。という風景はどちらも変わらずありますし、そうあり続けたいですね!
同じ: 短期的なプロジェクトの進め方
最後の項目になりますが、時間軸の違いから、長期的なプロジェクトの進め方こそ違えど、短期的なプロジェクトの進め方は双方変わらない印象です。
アジャイルに進めるにしても、ウォーターフォールで進めるにしても、要件定義をして、お客様と調整して、軽く製品を作ってみて、修正して。。という開発の流れもそうですし、プロジェクトのTODOを洗い出し、アサインをし、プロジェクトをマネジメントしていくという点でも、変わりありません。
どちらに在籍していたとしても、プロジェクトの進め方については、スキルとして十分役立つものになるかと思います。
まとめ
最後のほうが雑多となってしまいましたが、私が感じたところを中心に書いてみました。
繰り返しになってしまいますが、どちらが良い。優れている。というのは、何度思考しても感じられませんw (そもそもビジネスモデルが別モノですし)
それぞれに違いがあり、今の自分にはどちらが向いているのか。という観点ならあるのかもしれません。
では、どちらが自分に合っているか。というのは正直まだまだわからない部分も多いですが、様々な技術に触れ、開発した製品をお客様に使ってもらって喜んでもらえる。というのを今も実感できており、楽しくやってます。