よく分からないけど、ドメインの専門知識があってもスキルがないと、すごくテクニカルデットが溜まるポイントがあるよね。実際、私のキャリアの約半分は「ドメイン知識があって、チケットやエピックを閉じるには十分だけど、テクニカルデットが多い」っていう状況に対処してきた。つまり、私の仕事のかなりの部分は、こんな感じだった。 - ドメイン知識があっても、人間だからミスをしたり、フィードバックを受け入れなかったり、最悪の場合はコーディングエージェントが書いたものを二重チェックすることを拒否したりするから、PRを細かくレビューすること。 - 「これをリファクタリングして、技術的には正しいけど、書き方がひどすぎてタイムアウトになったり、マネージャーやDBAが叫んでる」っていう状況。
私たちはいつも冗談で、シニアファンドアカウンタントを雇ってプログラミングを教えたいって言ってるけど、問題はそういう人が全然いないことなんだ。エンジニアにファンド会計の細かいところを理解させて、こういう会社のためにソフトウェアを作るのは難しい。真に優れたソフトウェアエンジニアは、ドメインを学ぶ意欲があるけど、学ぶ方法が必要だよね。そう言うのは、いろんなレベルでそういうことをやってきた会社にいたからなんだ(たまに会社自体、たまにチーム、たまに同僚)。逆に、すべてが口先だけの会社にもいたことがある。そういうところでは、JIRAにあることや、IT以外の人が会議で言うことからしか情報を得られないことが多い。
ベンチャーキャピタルとプライベートエクイティのためにソフトウェアを作ってきた5年間、この記事には本当に共感する。コードを書くのは、仕事の中で一番簡単な部分だし、顧客が私たちに何を求めているのか、その背後にある金融工学やニュアンスを理解するのが難しい。特に過去5年間での大きなパラダイムシフトは、多くの会社が人を骨の髄まで働かせることを期待していることだと思う。それが逆効果になって、重要な会話ができなくなってしまう。文化も大きな要因で、少なくともサイドコンバセーションやミーティングが簡単にできる会社もあれば、ちゃんと話すためにchange.orgの請願書にサインしなきゃいけないような会社もある。結局、君の言う通りだね。要件はコードよりも重要だ。私がいた会社では、「正しい」という人の定義が、すべての要件が満たされていても、実装されている間ずっと不在だった人が書いたものの書き方が気に入らないから、機能が遅れたこともあった。
次のことを知ったら、「バッチプロセス」が%numberOfRecord%*10の挿入を持っていて、設計が悪いデータモデルのせいでSQLのアップサートを最も間違った方法でやっていることが分かる(つまり、DBから取得して、存在しない場合に挿入するレコードを追加する)ってことがある。そして、データレイヤーのクエリパターンを見直すのではなく、「パフォーマンスを改善する」ためにますます疑わしいことをやり続けるのを何度も見てきた。