見出し画像

ソフトウェアエンジニア 【求人】

皆さん、転職活動していますか?どうも。CTOの戸澤です。私は技術が好きですね〜。いえ、単に技術が好きなのではないのかもしれません。根本的には、問題解決が好きなのだと思います。問題解決の手段で、私が一番使いやすかったのが、コンピューターだったというだけの話。もし、私が人との関係構築が得意だったら、営業チームを率いていたのかも知れません。私の場合は、コンピューターとの会話が得意だったということですね。

つまり、ソフトウェアエンジニアというのは、コードを書いて問題解決をする仕事です。しかし、今は、AIもコードを書ける時代です。国内でのエンジニア採用が難しくなりオフショア開発も盛んな時代です。そうなると、コードを書くだけでは大変になってくると思います。

社内の日々の業務に目を向けて見たときに、いくつものスプレッドシートを利用している業務があります。でも、会社のシステムを熟知しているエンジニアであれば、恒常的な業務であればスプレッドシートを使用しつづけるのではなく、どんなシステムを用意すれば業務効率があがるかと言った解決方法はすぐに思い浮かぶと思います。そこにAIやオフショアでは発揮が難しい、エンジニアの価値があるわけです。

ですから、私は問題解決をしたいエンジニアを求めています。昨今の生成AIなど新しく登場した手段も含めて開発のネタは沢山あります。現在、コンサルタントを100名規模にするという大規模な組織改革が進んでおり、従業員数が増えて、出店数やカテゴリが増えていくと、課題も増え同時に業務を効率化してコストを下げる必要も強まります。それらをコードで解決するソフトウェアエンジニアが必要になります。

繰り返しになりますが、単にコードを書くことだけが仕事ではありません。言われたことだけをやるという人は求めていません。実際に使っている人のことを想像し、どう技術で解決できるのかを考えられる人を求めています。その解決方法が正しいかどうかは問わないので、自分の考えを提案して欲しいです。特にコードを書くことは今後はAIとの競争になるわけですから、コードを書くだけではなく提案もできないとまずいのではないかと思います。利用者のことを想像して、問題解決のできる技術力の高いソフトウェアエンジニアを求めています。

おりゃー!BCGの痕を見よ!(?)

チームの紹介

テクノロジー本部は24名体制です。テクノロジー本部の中にプロダクトチームとエンジニアリングチームがあります。プロダクトチームはPMとデザイナー、エンジニアリングチームはエンジニアとQAがいます。エンジニアは現在12名。内訳は兼務も含めて、バックエンドエンジニア6名、フロントエンドエンジニア4名、スマホアプリエンジニア2名、SRE2名です。また、ベトナムの子会社にもエンジニアが居ます。

得られるスキル・経験

当社の場合は、世の中に広く使ってもらえるサービスを開発するので、社内でしか使われていないシステムを作る会社とは違って、「くらしのマーケットをつくる仕事をしています」と言いやすいです。そして、自分の作った機能が何万人に利用されたということも説明しやすいと思います。

入社した人が皆さん言うのは「思っていたよりもシステムの規模が大きい」ということです。他の会社だと家事代行とか、引越しとかで一つのシステムを作っていますが、当社の場合は、それらの1つ1つの集合体がくらしのマーケットというサービスとなっています。そのような仕様が個別最適化されている、複雑で巨大なプロダクトの開発経験は他ではなかなかできないはずです。

カテゴリ単位での個別最適化により料金の計算方法や検索条件がカテゴリごとでバラバラとなっていますが、その一方で、決済システム、会員登録、メッセージなど、カテゴリごとの違いが無い仕様もあり、それもそれで全てのカテゴリに合わせないといけないので難しい部分でもあります。あまりこのような規模の大きなシステムは無いはずなので、技術的な複雑さも経験できます。また、仕様が多岐に渡るので、設計をちゃんと考えないと後々破綻します。そのため、PMやコンサルタントなど関係する様々な人と会話をして将来どうしていきたいか認識を揃えつつ仕事を進めていくことになります。そのような経験ができることも、あなたにとって大きな成長の機会となります。

左が真面目な片山さん。右がお調子者の阿部さん。

活躍しているメンバーの紹介

こんにちは!SREをしている片山です。入社して1年半位はバックエンドエンジニアとしてアサインされたバグの修正や機能開発などを行っていました。そこからインフラに近い開発や障害対応に興味津々で首を突っ込んでるうちに、SREを兼務するようになりました。

SREの仕事に慣れてからはシステム全体を俯瞰するようになり、セキュリティや可用性などの問題のある場所や、将来的に枷になりそうな場所を勝手に整理しメンバーに共有して議論することもありました。

他にも見つかった問題を良いタイミングを見計らって改善するようなことをしていました。最近だと、肥大化していたElastiCacheの分離を行ったり、負債化を実感していたECSデプロイの仕組みを、ベトナムでの開発が活発になることに合わせてリプレイスするような事をしました。発展し続けているプロダクトではありますが、システムとしては不完全なところが多く残っており、まだまだ改善の余地だらけだと感じています。

この会社のテクノロジー本部には全体をリードするマネージャーやリーダーの役割を持つ人がいません。また、ルールや仕組みが成熟しきっておらず、システムに関しても継ぎ足しで開発する必要があるため、レガシーな部分とモダンな部分が混ざっていて混沌としている部分が残っています。全体を理解して俯瞰してみると問題点に気づけると思います。複雑に絡み合った問題を発見し整理したり、解決するために時には周りを巻き込み進めることで問題解決をリードするような機会や、技術的に難しい課題解決に立ち向かうような経験を得られたと思っています。

エンジニアリングチームは「バックエンド」「フロントエンド」「スマホアプリ」「SRE」みたいに分かれてはいるものの、役割は非常に曖昧で関係はフラットです。違いは得意なことと、タスクのバックログのスプレッドシートとAWS権限くらいです。その中でやっていきたいことがあれば周りに持ちかけて議論してみたり、なんなら勝手にやっちゃったりして(謝って済む程度の範囲でですけど)、メンバー間で影響を与え合えることが面白いと思っています。そのあたりの心理的な壁はある程度慣れたら思い切って外してしまったほうが楽しめると思います。もちろん論理的に説明できる必要はありますけど!

具体的な業務内容

基本的には報告されているバグの修正、プロダクトマネージャー(PdM) や他の部署の方がまとめた要件の開発を進めていきます。

基本的に1〜2人で以下のような開発を行います。大きい開発プロジェクトではもう少し人数が関わります。

  • マーケティング本部が企画したキャンペーンの開発

  • PdM が考えた新しい機能の開発

  • 報告の上がったバグの修正

SRE の場合は主に以下のような開発があります。

  • サポートが終了しそうなリソースの更新作業

  • 新しく開発した microservice や microapp のデプロイ

  • インフラ〜アプリケーションレベルでの技術選定、設計、ミドルウェア開発

  • 負荷改善や障害対応

主な技術スタックは以下のようなものになります。

結構いろいろ使っています!

エンジニア人生を愉しむ片山さんの一日

【10:00 出社】
Slack で毎日、即応チーム、SREチームのスレッドでやることを箇条書きで宣言します。
昨夜〜午前中に出たエラーなどがあれば問題ないかを確認したり、SNS やニュースで流れてきたセキュリティ情報があれば共有したり確認したりをしてます。

【11:00~11:30 デイリー】
SRE、決済チーム、即応チーム、ベトナムと共同開発するチームの4つのデイリースタンドアップミーティングに出席しています。そこで今日やることを共有したり、問題や相談があれば話をする場になっています。

【11:30~プランニングポーカー】
タスクをやる前に、概要設計や開発方針などをレビューしてストーリーポイントを出すような会があります。スタンドアップミーティング後にやることが多い気がします。

【13:00~14:00 休憩】
休憩時間は自由なので、大体13時から15時の間に取ることが多いです。
僕はリモートワークがメインなので家の近くの商店街によく行きます。

【14:00~17:00 自分のタスク】
最近はインフラの設計や開発を主に担当しています。アーキテクチャ図をかいてみたり検証したり、実装を行ったりしています。

また、SRE は AWS 権限が必要になるワークフローや差し込みタスクが発生することがあります。そういったものも都度対応していきます。

【17:00~19:00】
基本タスクを進めたいですが、この時間帯は集中力が切れることが多いので中抜けして少し散歩をしたり、コードレビューをしたり、slack や issue を眺めてなにか課題などが無いかなとネタ探したりすることもあります。

【19:00~退社・オンコール対応】
障害アラームがなった際は問題を確認したり対応したりします。

僕はこの会社の混沌としているシステムの中に具体的な問題を発見して、それをどうするべきかを話し合ったり考えたり整理してる時間が一番楽しいです。

進めていく上で困難な点

CTOの戸澤にバトンタッチします。入社したばかりで情報量が少ない時は言われたことをそのままやる、というのが主だと思います。でも、言われたことをそのままやるのは最初だけです。時間が経って、情報量が他の人と同じになったら、自分からベストな解決策を考えて行動できなければいけません。

400を超えるカテゴリがあり、仕様が膨大です。全部を知る必要は無いですし、細かい仕様を理解する必要はありませんが、なぜそのような仕組みになっているのかという抽象的な部分は理解しないといけません。例えば、社内のシステムであれば、なぜ出店者のサービス品質を担当している品質管理チームが使う社内システムで出店中、掲載停止中、審査中…などの複数のステータスを必要としているのかはその業務に関わるときに理解すればいいですが、品質管理チームがどんな目的でどんな業務をやっているかと言った仕事の中身を分かっていないと自分の開発がどう影響するかしないのか考えられないと思います。

やりたいことがある人にとっては凄く良い環境です。興味を持ったことを自分がリードしてより良い方向に解決しやすい環境です。

困難を乗り越えるために組織として取り組んでいくこと

参加するかどうかはその人次第ですが、出店者のイベントに参加できたり、エンジニア同士で出社して話せる日があったり、meetで聞いたら誰もが教えてくれる環境があったりと様々な情報にアクセスできる機会は沢山あります。

エンジニア同士もかなり協力的な環境だと思います。ただし、みんながあなたをお客様扱いして、一方的に協力してくれるというのは誤りです。道具は用意されていますが、それを使うのは自分です。その道具を用いて、何を作るのかはあなた次第。あなたの意志が求められる環境です。

システムは問題解決の手段に過ぎない!

給与について

ソフトウェアエンジニアの給与についてですが、基本的には現在の年収と希望年収を加味して、相談しながら決めていくことになります。例えば、現年収が700万円の方の場合、ワークサンプルテストや面接にて、経験や能力を確認させていただき、現年収に見合う能力があれば変わらず700万円を提示させていただきます。

また、現職にてご本人の能力よりも低く評価されている場合は、ご希望の年収に見合った能力があるかどうかを確認して、能力に相当する年収をオファーさせていただきます。

あなたの年収は、現在の勤務先のあなたの能力に対する評価です。能力が高い人には、それだけ高い給与が支払われているはずです。そういう意味で、現年収の高い人からのご応募は、望ましいことだと思っています。

はいっ!ビズリーチッ!!(どうしたの?)

ちなみに私は新体制で、テクノロジー本部長から、R&Dの立ち上げをすることになります。CTOであることは変わりませんので安心してくださいね!みんなで一緒に問題解決をしていきましょう。

⬇︎下のフォームから応募して、入社お祝い金最大20万円をゲット!