メインコンテンツまでスキップ

Software Design 202401

ハピネスチームビルディング

報連相を受けたときは、毎回感謝を添えつつ、必要に応じてタイミングの善し悪しをフィードバックしよう。そもそも、知識やスキルが足りないことによる手戻りは必ず発生することを肝に銘じよ。報連相が遅いことによる手戻りを防げれば十分である。

開発者体験

狭義の開発者体験は、開発生産性のことをさす。例えば Four Keys のようなデリバリのパフォーマンスなどである。

一方、広義の開発者体験は「単にエンジニアが働きやすい環境を作ることではなく、周囲のメンバーと融合したうえで、よりよく組織の目的を達成するために必要な取り組み」といえる。例えば、組織の垣根が低くなり、エンジニアのエンゲージメントが向上し、開発スピードが上昇していくことなど。

実践データベースリファクタリング

ゴッドテーブルとは、さまざまなところから参照され、多くの個所から依存されたテーブルのこと。軽微な変更であっても意図しない影響を及ぼす可能性が比較的高い。

ゴッドテーブルが生まれる代表的な原因は、主語の大きいテーブル(e.g. user,company)を作ってしまうことと、安易にテーブルにカラムを追加することである。いずれも、責務があいまいになり、最終的にはゴッドテーブルになってしまう。

対処法としては、テーブルを適切に分割したり、アプリ側のコードを変化に強い書き方にすることが挙げられる。

なにより、まずはすでにあるゴッドテーブルをいま以上に肥大化させないことが重要である。

Go 言語 / 並列処理(後編)

以下、並列処理を行うときのちょっとした心構え

ゴールーチンをキャンセルしたいときには context を使おう。ゴールーチンにできる操作はgo文による起動のみだが、context を使うことで、キャンセルやタイムアウトを簡単に実装できる。

ゴールーチンは確実に終了させ、リークを防ごう。チャンネルの受信元がいないのに送信を試みたり、送信元がいないのに受信を試みたりして、リークが発生することが多い。

ちなみにゴールーチンに親子関係はなく、すべて等しく扱われる。つまり、親ゴールーチンが終了しても、子ゴールーチンはそのまま動き続ける。