Magnolia Tech

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

どうやって仕事の仕方を学ぶか?

ちょうどこんな話をしていました。

人間イザという時に素がが出るとか言いますが、少しネガティブなニュアンスも含まれてる言葉だな、と普段から思っていて、どちらかというとイザって時にこそ準備していたり、普段考えていたりすることがスっと出てくるので、そんな時に一番良い行動、言動が取れるようにありたい、と思っていて、そんな視点で他の人の行動や言動(とくに自分よりちょい立場とか経験が上の人の)をよく観察しておくといいんじゃないかと思います。


良いコメントをいただいたので追加。まさにコレ。

Anker Thunderbolt 4ケーブル

いつの間にかAnkerからもThunderbolt 4ケーブルがリリースされていたので、ブックマーク代わりのエントリ。

2021年、あまりに種類の増えすぎたUSB Type-Cケーブルは値段を気にしなければ全部入りのThunderbolt4ケーブルをかって買っておけばとりあえず規格が合わず困ることは無いので、コネクタ部分に規格が刻印されたものを買っておくと良い、という話は下記のエントリでも書きました。

blog.magnolia.tech

ただ、Ankerからは1.0mを超えるThunderbolt 4ケーブルがリリースされていないので、ディスプレイ接続などで長いケーブルが必要なときはCable Mattersあたりが選択肢になってくる。Thunderbolt 3までは1.0mを超える長いケーブルは規格が違ったり、めちゃめちゃ高額だったりしたけど、Thunderbolt 4で2.0mまで同じ規格でサポートされたのが嬉しいところ...値段はそれなりだけど。

USB Type-Cケーブルを買う理由の第一位は充電ケーブルで、第二位がディスプレイ接続だと勝手に思っているけど、電源ケーブルとしてだけ買うなら高額なThunderbolt 4ケーブルは要らなくて、USB 2.0+USB PD 100W対応のケーブルがコストパフォーマンスが良いのでおすすめ。最近は微妙に65Wを要求するノートPCが増えてきたので、3A対応のより安価なケーブルでは不足するので、5A/100W対応のケーブルを買っておけばOK。

充電器も65W対応を用意しておくとカバーできる機器が多い

(90Wとか必要な場合は、あまり汎用性を目指しても製品があまり無いから純正品でいいんじゃないかと)

ドックもThunderbolt 4対応版をAnkerが出しているけど...相変らず高い USB Type-C対応のディスプレイのHub機能でも十分だったりするんだよね...キーボードとマウスの接続くらいだったら

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

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

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

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

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

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

『初めての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は集合が頭の中に上手く描けないと、さらっと書けないけど、その感覚を掴むためにはやっぱりがんがん書くしかないんですよね。

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

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

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

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