こんにちは。CTOの上本です。
今回は、「自社サービスを運営する企業がエンジニアに求めること」をわたし目線で書いて行きたいと思います。
※あくまでいち個人としての意見と捉えてください。
最新技術は必要ない
まず日本のIT企業は、大きく2つの種類、「自社サービス企業」と「受託開発企業」に分類されるのかなと考えています。
企業の経営方針によって変わってくるかと思いますが、自社サービス型ではアイディアを早期にビジネスへと変えて行く必要があるので圧倒的にスピード重視、受託型ではあらゆる方面の業務をシステム化する必要があるため、より技術力を重視しているように思えます。
弊社のように自社サービス開発を運営していく場合、全くと言っていいほど最新技術は必要ありません。
例えば、最近で言えばGoogleが推進しているFlutter(iOSやAndroidを同時開発できるフレームワーク)が3系にバージョンアップしましたが、弊社では「よし!Flutterの技術検証と採用検討をしよう!」とはならないんですね。(きっと殆どの企業がそうだと思います)
理由はシンプルで、以下のような理由です。
- 新技術の検証に回すほど人材リソースが足りていない
- Android・iOSネイティブで同じことができる
- 新しすぎて不得意な部分が見えない(得意な部分はサービスサイトに明記してある)
つまり、これまでの開発で培ってきた言語やフレームワークのノウハウで、 ほとんどの開発要件を実装することができるのに、あえて不確定要素が大きい新技術を採用する理由はないということです。
初期の自社サービス企業に限っていえば、安定していて確実に実装でき、開発に速度が出る、そんな枯れた技術を好むのではないかなと思います。
保守できること
Webサイトやサービスは作って終わりではないですから、保守の要素も重要になってきます。
特に自社サービスにおいては、マーケットの流行りやニーズで機能開発が左右され、その日々情勢が変わる中での開発を継続させていく必要があります。
この状況下の中で開発を遂行して行けていることが「保守できている状態」だと考えています。
では、なぜ保守ができている状態を作らないといけないのか?それは、プロジェクトは外的要因で性質がかなり変化するからです。
特に多い要因が、要件や期間に対しての人材リソースの問題だったりします。
- エンジニアの人数が足りるのか
- エンジニアの技量は足りるのか
- 調達できる人材はいるのか
などです。
バックエンドにしても、フロントエンドにしても、いくら制約とルールを設けて実装を進めていても、タイトなスケジュールや少ない人材リソースで開発を進めた場合、結果として納期ファーストとなり、ルールや制約は簡単に破壊されてしまいます。
プロジェクトが破綻する原因は、人材リソースだけではないですが、上記のようなケースが多いのかなと思います。
保守に関しては、各個人に求める要件ではありませんが、全員が「なぜこの言語で開発しているのか」「なぜこのフレームワークなのか」を共通して認識することが大切だと思います。
市場に興味を持っていること
「市場に興味を持っていること」は、自社サービスを開発する上で、ある意味技術力よりも大切なことだと考えています。
継続してサービスを運営していくに当たり、エンドユーザーが何を考え、何を求めているのかを常に意識して開発に取りくみ、積極的にアイディア出しや実装を行えるエンジニアはその市場においては最強の人材だと考えています。
アイディア出しやPR方法などが総括してできる、いわゆるマーケティングに強いエンジニアはそう多くなく、それができるエンジニアは、あるアイディアを思いついたときに、瞬時に「どのくらいのコストが必要でどの程度の効果が見込めるのか」がわかるようになり、優先するべき機能、そうでない機能の取捨選択ができるようになります。
「いや、それはマーケターの仕事でしょ!」とと言われればそれまでですが、実際のタスク量や懸念点などの洗い出しも併せて考慮ができるので、同じアイディアを出すとしても時間短縮ができ、同じレベル感の人が周りにいれば、実装を前提とした範囲の広い議論も行うことができます。
まとめ
いかがでしたでしょうか。
「企業がエンジニアに求めること」とタイトルを打ちましたが、「私がエンジニアに求めること」になってしまいましたね。
現在、就職や転職活動をされている方は、自分のやりたいことと企業の方針にマッチしているのかなど、一度改めて考えてみても良いかなと思います。