スタートアップでソフトウェアエンジニアとして10年たって大事にしていることリストを読んだ

更新: 2024/04/07, 作成: 2024/04/07

みなさんこんにちは、かじりです。10年たって大事にしていることという記事を読んでほぼ一緒だなと思ったので、自分なりに思ったことを追記しました。

ソフトウェアは他者の価値(i.e. 課題を解決する/コストをカットする)を生み出してなんぼ。コードが綺麗でも売上は立たない。

→ かなりそう思う。綺麗でも売り上げはたたない。綺麗じゃないから売り上げがたつわけでもないが、ほどほどのコードにしてとにかく早く作りたい。金がなくなったらそれまでに作ったものが終わる。

アーキテクチャやプログラミング言語のトレンドは変化する。追いかけるよりも、その時々のチームやプロダクトに合った設計やプログラムを選択する。

→ 最近とてもそう思う。どうやってもトレンドは変化し続けるので追いかけるのは大変。

遊び心は大事。チームやプロダクトにそれほど合ってなくても新しいパラダイムやプログラミング言語を試してみる方が楽しい。

→ 上に関連するかもしれないけど、遊び心は必要だと思う。つまらないのはよくない。楽しくやりたい。社内利用するものとかあればそういうやつで試せたらいいな。社外向けはリスク高い。

抽象化はよくよく設計しないと負債化しやすい。設計に十分な時間がとれるか? 3ヶ月後に読み直して不自由なく使えそうか? 依存するライブラリやフレームワークは大きく変わることはないか? ひとつでもNOならやめておけ。

→ とてもそう思う。抽象化しなければ、DRYにしなければと思っていた時期があったが、関係ないDRYは後から機能追加する時に辛い。影響範囲を調べる中で関係箇所が多いと本当に辛い。結局分割することになったらさらに辛い。

賢いコード/設計よりもみんながわかりやすいコード/設計。

→ とてもそう思う。1人でやることなんてまずないし、1人でやるとしても1年後にそのコードのことを覚えているのは難しい。

誰しもスキルセットは異なる。チームへのデザインや原理原則の啓蒙活動は大事。

→ まだそこまで感じたことはない。しかし、今の人数ならPRの度に指摘できていることが、人数が増えて続けられるとは思えないので必須と思う。

誰しもスキルセットは異なる(2回目)。自分自身も学び、考えをアップデートする。

→ とてもそう思う。1ヶ月前に思っていたことが全く異なる考えになることはよくある。学び考え続けていきたい。

LOGAF(https://blog.danlew.net/2020/04/15/the-logaf-scale/)ルールを周知する。自分はLintは気にしないが、パフォーマンスと理解しやすさは大切にすると伝える。

→ 良さそうに見えた。sentryのもあった1。確かにPRのレビューは白熱する可能性が高い。

YAGNIとKISS、次にDRY

→ 2年くらい前からそう思ってる。プロダクトのREADME.mdに書いた。DRYは難しい。

とにかく手順書や作業メモを残せ。人とのやりとりは議事録を書け。これらはいつも自分や誰かを助ける。

→ とてもだいじ。commitメッセージに残してる。github blogの記事2とか、aaronjensenさんの記事3を参考に、最初の方に大事なことを持ってくるコミットメッセージにしている。それに伴って、不要なコミットはrebaseしてる。議事録も残す。話した内容をまとめて、確認をとるようにしている。

ベストプラクティスや世の中の人の知見に頼れ。大体の問題は誰かが取り組んでいる。

→ そうやって作業してる。ないものはなんとかする。ただ、そのまま取り込まず、ちゃんと理解してから使うようにする。

盲目的にベストプラクティスや世の中の人の知見に頼るな。頭を使ってどう自分の課題に活かせるか考えろ。

→ 一つ上に書いたように、ちゃんと理解して使う。

エラーは隅々まで読め。

→ とてもだいじ。これをやってもわからないときはログを仕込む。

難解なバグは寝るか散歩か風呂に入ってから見直せ。

→ 今はまだ気合いで読み続けて解消することが多いが、心身の負荷が高いと感じているので気分転換したほうが良さげ

コミュニケーションにコストをかけろ。大体のことは一度で30%も伝わらない。何度でもメッセージを伝える。

→ だいじ。コミュニケーションを必要なだけ行う。作るのは最後の最後にしたい。できれば作らないで解決したい。

大きなことをするには人を巻き込む。人を巻き込むには、誰よりも説明ができる必要がある。何度でもメッセージを伝える。

→ 自分だけで完結することはあまりないので基本やらなければいけない。そして、誰よりも理解して説明できないと話が進まないし、間違った方向にいく可能性があるので理解に時間がかかるがしっかり理解したい。その瞬間ではその理解が無駄になる可能性もあるが、後々役立つことが多い。

新しいことにチャレンジするときは素振りをしまくれ。頭と手を動かせ。ハマった数だけうまくいく。

→ とてもやってる。頭だけだと無理。手も動かさないと理解しきれない。しょうもないところでハマっている可能性もあるけど、それによって周辺を調べまくるので結果詳しくなる、強くなる。

好奇心が原動力。読んだり話を聞いてわかったつもりにならない。手を動かせ。

→ そう、手を動かさないと雰囲気しかわからない。

元気よく返事。

→ 集中した後とかによく忘れる。元気にいきたい。基本他者から見るとテンション高くないと思うので、気をつけたい。

tomoima525さんの記事4を読んで似ているなと思ったので書いてみました。

脚注

  1. https://github.com/getsentry/sentry-javascript/blob/develop/CONTRIBUTING.md

  2. https://github.blog/2022-06-30-write-better-commits-build-better-projects/

  3. https://github.com/aaronjensen/software-development/blob/master/commit-messages.md

  4. https://tomoima525.hatenablog.com/entry/2024/04/01/150049