無知がバレるけど「ああ、去年の私は無知だったなあ」と思ったりもしたいので少しメモしておこう。

database Link to heading

最近あったjob interviewの場でテーブル設計で一番気をつけていることはなんですかと聞かれて、「…動けばいいんじゃないですか」みたいなことを言ってしまった。

機能拡張の想定だの巧みなインデックスの組み合わせだの、熱く語られるのをたまに聞く機会があるけど、ここだけの話あまりピンとこない。どんな生き物をどんな目的で保存したいのかさえはっきりしていれば、大体大丈夫じゃないかなという気でいる。そしてテーブルを作りたい人がそれを考えないはずがない。

あんま考えなくても大丈夫なものしか作ってこなかったんだろう。多分経験が足りない。

Java Link to heading

interfaceで作っていくと実装が隠れて将来の変化に強くていい感じということを熱く語られるのをたまに聞く機会があるけど、ここだけの話あまりピンとこない。interfaceを使って書けると気持ちいいけど、interfaceを使ってたから拡張・修正が楽だったぜ!という経験をしたことがない。実装の変更が予期できないんだったら振る舞いの変更だって予期できないじゃん、という気持ちでいる。私は、一振る舞いに対して複数の実装が存在することが最初から分かっているときにinterfaceを使う。「こういう生き物として扱ってほしいならこの規約を満たしてね」という、どちらかというと開発者間の連絡みたいな目的で使って気持ちが良い。

これも多分経験が足りない。

languages Link to heading

あと最近職場でJavaScriptとPythonが嫌いという話を聞いた。ダックタイピングが嫌いなのと、Pythonについてはmagic methodsが多すぎて覚えられねーよ、という話だった。ここだけの話あんまり理解できない。覚えきれないことは他にいくらでもあって既にどうせ苦しい。Pythonは痒いところに手が届く標準ライブラリが多いのと、書く量が少なくて済むから好きだ。一方、Javaは型があって安心だなあと感じることがある。

これについては経験積んでも変わらない可能性が少しある。例えば英語は日本語と語順が違うので、調子が悪い時は特に、言いたいことの全貌をちゃんと把握してないと喋りにくいと感じるときがあるけど、まあそんなもんかねえで済んじゃう。あー、でも自然言語は人間が理性的にデザインしたものではないから話が違うかな。

まあとにかくこんな感じで人々が語ることがわからないことが多く、心配になって身動きが取れない気持ちになってばかりだから、あるとき「とりあえず同じこと二回書かなきゃいいよ」と先輩エンジニアが言ってくれたのはすげーグッジョブ。