今から10年前の2014年4月に、いわゆるIT系大企業のDBエンジニアを辞めてメルカリでソフトウェアエンジニアとして働き始め、そこから紆余曲折を経て10年たった。
当時の予定通り、まだ現役でコードを書いている。海外に拠点は移り、色んな国の人たちと仕事をするようになり、役割もテックリード、マネジャー、CTOと変わってきた。ソフトウェア開発について考え方もさまざまな変遷を経ているが、少しずつ培ってきた、大事にしていることをあげてみる。
ソフトウェア/アーキテクチャ/コード
- ソフトウェアは他者の価値(i.e. 課題を解決する/コストをカットする)を生み出してなんぼ。コードが綺麗でも売上は立たない。
- アーキテクチャやプログラミング言語のトレンドは変化する。追いかけるよりも、その時々のチームやプロダクトに合った設計やプログラムを選択する。
- 遊び心は大事。チームやプロダクトにそれほど合ってなくても新しいパラダイムやプログラミング言語を試してみる方が楽しい。
- 抽象化はよくよく設計しないと負債化しやすい。設計に十分な時間がとれるか? 3ヶ月後に読み直して不自由なく使えそうか? 依存するライブラリやフレームワークは大きく変わることはないか? ひとつでもNOならやめておけ。
- 賢いコード/設計よりもみんながわかりやすいコード/設計。
- 誰しもスキルセットは異なる。チームへのデザインや原理原則の啓蒙活動は大事。
- 誰しもスキルセットは異なる(2回目)。自分自身も学び、考えをアップデートする。
- LOGAF(https://blog.danlew.net/2020/04/15/the-logaf-scale/)ルールを周知する。自分はLintは気にしないが、パフォーマンスと理解しやすさは大切にすると伝える。
- YAGNIとKISS、次にDRY
行動
- とにかく手順書や作業メモを残せ。人とのやりとりは議事録を書け。これらはいつも自分や誰かを助ける。
- ベストプラクティスや世の中の人の知見に頼れ。大体の問題は誰かが取り組んでいる。
- 盲目的にベストプラクティスや世の中の人の知見に頼るな。頭を使ってどう自分の課題に活かせるか考えろ。
- エラーは隅々まで読め。
- 難解なバグは寝るか散歩か風呂に入ってから見直せ。
- コミュニケーションにコストをかけろ。大体のことは一度で30%も伝わらない。何度でもメッセージを伝える。
- 大きなことをするには人を巻き込む。人を巻き込むには、誰よりも説明ができる必要がある。何度でもメッセージを伝える。
- 新しいことにチャレンジするときは素振りをしまくれ。頭と手を動かせ。ハマった数だけうまくいく。
- 好奇心が原動力。読んだり話を聞いてわかったつもりにならない。手を動かせ。
- 元気よく返事。
なんか、もっとある気がするけど、ぱっと思いつくくらいだから、これらは骨身に刻まれているんだと思う。さて、次の10年ではどんなアップデートがあるかな...?