Magnolia Tech

いつもコードのことばかり考えている人のために。

初手を速くすることで、全体を速くしていく

初手が速いことと、ゴールをどこに置くかを最初に考えておくと、多少の問題が有っても軌道修正ができるけど、手をつけるタイミングが遅いと、これはもうどうしようもない。 だから仕事ができる人は「先を見通している」し、そこに最短で到達するための「初手」が速い。

でもじゃあ闇雲に何かすれば「初手が速い」状態になるかというとそんなことはなくて、「初手を速くできる準備、環境」を整えているから速くできる。普段から情報収集しているとか、緊急の割り込みがきても対応できる時間の余裕を作っておくとか、自分の代わりにやってくれる人を用意しておくとか、いろんな方法が有って、人それぞれの「秘訣」みたいなものがある。

普段から仕事ができる人がどうやって「初手を速く」しているか、その秘訣を上手く盗むといいと思った。

問題が起きた時は、問題が起きた構造に注目する

問題が起きた時に、原因をどこまで追求するかは組織文化だと思うんだけど、組織で起きる問題を個人に追い求めてしまうと、結論は一生懸命頑張る、に行き着いてしまうので、投資要素が見当たらない対策に行った時は何かがおかしいって思わないとですね

『初めてのSQL 第3版』でSQLを学習しなおしました

SQLほど、変化も少なく、かつ長く現役で使える技術もそうそう無いのでは?と思えるくらいずっと生き残っている。ただ、普段から書いてないと確実に忘れる。全体を忘れる、というより色々なことが抜けていくものです。

今やRDBだけでなく、いろいろなデータソースをSQLで操作するインタフェースが用意される時代、改めて素のSQLは手に馴染ませておいた方がいいのかも、と思って『初めてのSQL 第3版』を買ってきました。

MySQL 8.0ベースで実際に動かせるSQLのサンプルや演習問題が載っていて、主にSELECT中心に学ぶことができる1冊。内容的には前半をきっちり写経から始めて、演習問題をやっておけば十分ですね。

巻末にはApache Drillを使ったRDB以外のデータソースへのアクセス例も載っていて、やはり応用が効くな、と思える構成になっています。

ORM経由でしかデータベースへアクセスしていない、という方も多いかと思いますが結局はSQLに変換されるので、内容は必ず押さえておいた方がいいでしょう。

あと、SQLは集合の概念の上に成り立っているので、通常の手続き型のプログラミング言語パラダイムが違うところも、逆に良いというか、違う発想、視点が身につくところがいいですね。

定期的に知識をリフレッシュする

IT系に身を置いていると、つい新しい知識ばかりを追いかけがちになるけど、CS的な基礎知識や、Linuxのコマンドとかの(もちろんソラでコマンド10個のオプションを言える必要は、無い)も当然大事なわけです。というか、土台となる知識が無いと、新しい知識がちゃんと身につきません。

だけど、普段使わない、手を動かさない分野のスキルはどんどん忘れていきます。歳をとると加速度的に忘れていきます。

そしてヤバいのは、分かっていることと、分かっていないこと、できること、できないことの区別がつかなくなることです。

人は分かる範囲でしか物事を理解しないので、「分かっていないことを知る」という行為を行なって「分かる範囲」を広げる、または最低でも維持する営みを続けていかないとどんどん判断する時に必要な材料が狭まっていきます。

Java 1.5の知識で、Java17時代の判断はできないですよね、10倍以上違うんだから(それも違うけど)

そんな時定期的に、過去の知識をリフレッシュするための営みをやっていくには、入門書を改めて読んでコードを書く、ハンズオンをやってみる、ISUCONの問題を解いてみる、みたいなとにかく手を動かすと結果が帰ってくるコンテンツを試してみることではないでしょうか。

(ただ、マネジメント系はなかなか、’試してみる’というわけにはいかないですね)

書名を間違えてしまいましたが『初めてのSQL』、いい本ですね。前半はそれほど密度も難易度も高くないのでさらっと読めるし、後半もトピックごとに読めばいいテーマで拾い読みし易い。SQLは集合が頭の中に上手く描けないと、さらっと書けないけど、その感覚を掴むためにはやっぱりがんがん書くしかないんですよね。

というわけで、みなさんの「スキルのリフレッシュ方法」のおすすめが有ったら、教えてください!!!(ブクマのコメントに書いてください!)

ソフトウェアの再利用性について

ソフトウェアの再利用性、過去から散々研究されてきた大事なテーマだけど、それはどういうコードを書けば汎用性が高まり、再利用性の高いコードを書けるか?という話であって、適合性が検証されていない箇所に雑に当てはめても大丈夫な仕組みが発明されているわけではなくて、結局一つずつ検証していかないといけないし、その検証には相応のコストがかかる。

今動いているものが新しい環境で、それっぽく動くようにできてはいないのだから。

モデルを作っていく、ということについて考えた

モデリングの思考の過程、みたいな時に、関連する要素としてどこまでを考えるか?というのはぜひモデリングの達人に聞いてみたい。当たり前だけど、モデリングする人が純粋にモデルだけを考えられることはなくて、何らかの振る舞いが前提に有って、それがユースケースとして描かれたり、描かれなかったりする中で、どうやってその暗黙知形式知に変えていくか?というところが大事だったりするんだよね。

Software Design 2021年9月号

Rustを題材にしたメモリ管理の特集、でもそもそもメモリ管理とは?他の言語での実装は?など、基礎的なところから入って行ってRustにおけるメモリ管理の考え方と、実際のミドルウェアにおける事例まで一気に進むお腹いっぱいになりやすい充実の内容。