前回、第一巻(俺は悪くない)を書きました。特に反響ないですが備忘録として書いておく。
僕のざっくりレベル感
- エンジニア歴は5年ほど。
- おもにバックエンドの開発を中心に行なっており、Rails歴が一番長い。
- 超独特で複雑な要件でもない限り、依頼される開発は問題なくこなせます。少なくとも今まで「わからないので実装できません」はありませんでした。
- パフォーマンスに関する「経験」は↓の感じ
- N+1の解消(Preload, EagerLoad)
- データの性質を考えて正規化すべきかどうかなど、データ構造について考えて実装する。
- パフォーマンスに関する「知識」は↓の感じ
- 都道府県・市区町村などのほぼ変わらないデータに関してはRedisなどでキャッシュしておく
- 数億コードなど、馬鹿でかいデータ量になるとパーティショニングなどをしてテーブル・DB分割をする。
- レコード数の増加に伴い、データサイズがデカくなってきた場合は、VBCなどで圧縮をかけて持つようにする
- プログラムには計算量というものがあります。O(N)とかO(log N)とか。これはデータの持ち方などによって変わってくるので、場面に合わせて適切なデータ構造を選択し、極力対数時間で処理できるプログラムを意識する。もっと複雑なプログラムになると多項式時間で処理できると御の字らしい。
- 個人開発もしています
- 大抵は勉強がてらで簡単なCRUDを作って終わりだと思いますが、ビジネスとしてスケールするようプロダクト設計・戦略を立てています。リリースして1年数ヶ月目。
- SNSやアプリストアなどで広告運用しています。どう言った広告の打ち方をすると、自分が求める数値がでるか考えながら試行錯誤中。
- インフラはAWSで、
Route53 ~ ALB ~ ECS on EC2 ~ RDS
というような基本構成。 - NextJSでWebフロント、ReactNativeでアプリを書いています。
- フロントに関しては初心者レベル。
- MVCでやってればスケールさせられるっしょと思い、hookをコントローラと見立てて、zodをAPIレスポンスなどのスキーマ検証を行うModelに見立てています。
- NextJSとReactNativeを採用した理由は、個人開発なので開発コストを削減する必要があります。なので、hookや一部のライブラリなど、共通で使いまわせるReact系の技術を採用。
受けた企業のレベル感
- 香水のtoC向けサービス
- HR系の大手
- 会計ソフトの大手
- 人材系の大手
- 食に関するtoC向けサービスの中〜大手
- 在庫管理サービスの中手(表現合ってる?)
考察(第二巻 〜俺が悪かった〜)
自分にも至らなかった点、うまく伝えられなかった点など、反省点がたくさんある。
1.馬鹿正直すぎた
面接は騙し合い、盛ったもん勝ちみたいなことが言いたいわけじゃない。
エンジニアの技術力や経験なんて深掘りすればすぐボロが出るからね。
ただ正確に自分のことを伝えようとして、「立ち上げフェーズのスタートアップの開発に携わってきました。大規模なデータ量・トラフィックを抱えたサービスに触れたことはありません」と馬鹿正直に伝えていました。
相手の企業がスタートアップならまだしも、今回受けている企業は中〜大手。
「あー、大した開発経験なさそうだな」ってバイアスを与えてしまい、面接官の深ぼらせる気力を削いでしまった可能性がありそう。
嘘をつく必要はない。ただ、マイナスイメージを与えるような表現をする必要もない。
2.会社に尽くし”すぎた”
大前提として会社には尽くすべき。
フリーランス経験のある方ならわかると思いますが、、、お金になるお仕事を頂けるのは本当に本当に有り難いことです。
個人的な(立派な社畜の)考え方ですが、サラリーマンはお給料を「稼いでいる」のではなく、「稼がせて頂いている」のです。稼いでると思うなら独立しry
今の会社では、自分の成長よりも、会社が何を求めているのかを考えながら働いてきました。
その結果は↓のような感じ。
- 新規機能の開発
- ビジネスサイドとコミュニケーションをとり要件定義や必要な調整を行う
- 新人教育・未経験者のフォロー
まさにスタートアップのような働き方。
この中でももちろん学びはありましたが、中〜大手で求められるような、保守やパフォーマンス改善といった能力は全く身につきませんでした。
【極論】 就職した直後から転職のことは考えろ 【極論】
もちろん、会社に尽くすことは大事ですが、自分の大事な人生の時間を使っています。
上長とキャリアプランを相談しながら、会社に尽くしつつ、ある程度自分の身にもなる働き方も考えた方が良かった。
3.慢心していた
ほんまに慢心してた。 まぁ人ってそういうもん
開発するにしても、「実装方針が立たない。。。設計がわからない。。。」なんてこともないし、PMやデザインなど幅広い分野を見ているし、、、
あれ、俺って結構いけてる感じ?
って無意識のうちになっていました。
大手会計ソフトの面接を受けて
そんな勘違いも1発目の大手会計ソフトの面接を受けて打ち砕かれます。
井の中の蛙どころかオタマジャクシでした。。レベル高え。。
すごく丁寧に見てくださって、どうにかいいところを見つけようとしてくださってるのがヒシヒシと伝わってきたのですが、、
何も応えられてねぇ。。。
外の世界に触れて、自分に足りていないところが見つかる見つかる!!
面接受けてるだけでめちゃくちゃ勉強になってモチベが上がりました。(もちろん落ちてます!)
結論
場面で生きるのではなく、しっかり先を見据えて生きるようにしましょう。
僕の場合、ざっくり大規模サービスの開発に携われたらいいなーという展望はありました。
ですが、目の前の仕事ややるべきことに目を向けすぎていて、何年以内に具体的にどれだけのことが必要なのかみたいな計画が一切立てられていませんでした。
そしてなにより
”常に学べ”
人間、一つの環境にいるとその環境が全てであり、標準だと勘違いしてマンネリ・慢心してしまいます。
上には上がいますし、世の中は広いです。常に学べるよう、外の環境・人間に触れて視野が狭くならないようにすることが大切です。