とあるエンジニアの問題意識 2019-02-18

高級言語だけではなくシェルも使えると良い。

一個のpythonスクリプトでぜんぶやろうとせず、部品ごとにinput output で橋渡しする。 Twitter API からJsonを得るスクリプト、timezoneを絞るスクリプトmarkdown変換するスクリプト

流れるようにパイプでチェーン。

Linux思想は小気味良い。

GitHubのコードレビューは何故難しいか。

Webインターフェースの問題はないか。

自分でたった今書いたコードでさえpushして緑や赤のカラーリングで見ると意味が分からなくなる。

理解の距離感が遠ざかる。

家族じゃなくて見知らぬ他人になる。

フォントや色の影響力。

エンジニア https://t.co/zoiJtyYBMH

順序がなぜ大事か。料理を考える。

卵を焼いてから混ぜるか。混ぜてから焼くか。料理が変わる。 魚を焼いてから食べるか。食べてから焼くか。後者は不可能。胃が燃える。

なかなかたとえが悪い。だが現実世界で起こることはエンジニアリングの世界にも起こる。

プログラミングが嫌いになる時の理由。

今すぐ手に入らない。歩みが遅い。時間がかかる。

思い出すに、子供の頃から欲しいものは一瞬でほしい性格だった。

自分の想像よりも10倍20倍もかかるコストに怯える。だが戦略性だ。将棋の歩を進めよ。

デスク周りは死ぬほど重要だ。配置が命。ミニホワイトボード。ペン。全てがたやすく手に取れる位置にあるか。

全てのデバイスは人間の外部拡張だ。たとえば右手に左手がついていたらどうなるか。とても肉体を扱えない。困るだろう。

マイデスクは自分の肉体。戦艦。配備せよ。

改行が嫌いだ。

今なら理由が分かる。Shiftキーを押しながらEnterを二度押す。ソフトによっては画面縦幅が変わり認知ロードが二回起こる。削除する場合はBackspace二回。往復運動で4ステップ。論理構造が生まれ編集もしづらくなる。複合的理由がある。

スタンドアップミーティング。メンバーの顔色を見る。

顔色をうかがうのではない。体調をうかがう。

僕はとにかく視覚情報に弱いエンジニアだというのを言い訳に、人の顔からコンディション判断が苦手だ。マスクをつけていてようやく、体調が悪いのが分かるレベル。

朝会で一番見るべきは、メンバーの体調だ。

僕はとにかく鈍いようで、意識できるようなハックを探す。

人の顔を見るのは気恥ずかしい。

僕はどうやら聴覚情報には過敏なようで、声で判断するのもありだと思う。顔は一瞬見るだけ。もしくは周辺視野で。

エンジニアの生涯生産性を高めれるにはどうすれば良いか。

生涯生産性。

このキーワードは今浮かんだ。

最も大事なのは命の保全。死ぬと生涯生産性は下がる。

クビになっては稼げぬ。だから周囲の評価も大事だ。

楽しさの担保。切実。

単純な軸では語れぬ。あらゆる手段を尽くしての保全

感覚過敏に気づく。視覚過敏でもあり聴覚過敏でもある。あらゆる刺激が集中力を下げる。

耳栓を活用する。ニット帽で視界も半分塞ぐ。オープンオフィスの弊害に対策する。極限までプライベート空間に近づける。

エンジニアのキャリアはオフィスの席で決まる。

オープンオフィスの弊害。中央の扉に近いと辛い。人通りが多いし、360度を囲まれている。扉を開け締めする音。

冗談じゃなく仕事の生産性を3倍は上下させる。エンジニアとしてのキャリアに影響しかねない。

冗談だと思うなら、きっとあなたは刺激に強い生体。でも弱い生体もいる。

どうやら僕は感覚過敏。なおかつ過敏のレベルが千差万別に変わるようだ。

固定された一個のやり方じゃ無理。耳栓を使うかどうかも、自分の過敏レベルによる。

固定されたやり方が見つからないのも納得。

刺激度のコントロールという考えに行き着く。

2:3

2人で働くのと3人で働くのとはまるで違う。

1on1と3人以上のランチ会でもまるで違う。

3人からは社会だ。

2人で働くならバディだ。

認知ロード。

この言葉を知れて本当に良かった。UIの世界の話だ。

たとえばPCで画面を切り替えると認知ロードが起こる。簡単に言うと目がびっくりする。

このエネルギーの消耗が半端じゃない。実感レベルで分かる。

僕は画面切り替えの時に目を薄めたりする。

馬鹿らしいと思うだろうか?

コードレビューのコツ。自分のエディタに持ってくる。

動作させなくても良い。テキストを編集して自分が理解しやすい形にする。理解のための編集。

コードを編集できるという意識だけですらスイッチになる。慣れ親しんだ視覚的インターフェイスにも良い影響が。

急がば回れ

ゆっくり落ち着いて進むことは本当に難しい。心理的に。

本当に効果的だと分かっていてなお。焦りが逆効果だと分かっていてなお。

うさぎに染み付いた習慣がある。何百万回も自己説得を繰り返して、少しずつカメになる。

最近のソフトウェアにはZenモードがある。

シンプルでオブジェクト数が少なく、認知コストがoverflowしないようなモードが。

あれはとても脳に優しい。

エンジニアの仕事環境でもZenModeが許される場所で働くのは喜びだろう。

難しいSQLクエリのレビューをしている。

難易度が高ければ高いほどZenが必要だ。集中力が高まらなければ決して超えられない壁もある。

シャローワークで何百回トライしても生産性が極端に悪い。モンスターの防御力を見計らう。

強い武器を使うには静寂のゴールドが必要だ。

仕事の優先順位の付け方。区切り方。とても苦手だ。

はっ。思うに午前と午後に二分割するだけで良いのではないか。どうせ膨大な仕事はできぬ。

そういえば僕の知るスーパーエンジニアも、午前にはこれをやり、午後にはこれをやり、という言い方をしていた。

言語化スキルの言語化は難しい。

エンジニア用語で言えばメタプログラミング

決して最終地点には到達できない。

なぜなら無限ループだから。

触れてはならない黒魔術。

危険地帯。

だけど分かる。

言語化erにはメタ言語化が必要だ。

魔法使いになりたいし。

言語化する #エンジニア https://t.co/RwtiyGHurl

#エンジニア の原因切り分け。

ここに極まれり。

https://t.co/G1hIAJYT5E

Slackを見ることに臆病になる。

テレビのザッピングと同じで1回でもチャンネルを付ければ無限の注意散漫が発生する。逃れられない鎖。全てのエンジニア、全てのデスクワーカーの課題だろう。僕はzen workを最大化したい。

聴覚過敏に耳栓で対策する

そういえば集中力のものすごく高いエンジニアが語っていた。物音には鈍いと。聴覚の敏感さがダイレクトに集中度の高さに影響していそうだ。当たっているんじゃないだろうか

今日は耳栓をしながら仕事をした

全く聴こえないわけではなく、音量レベルが1/5ぐらいになる。仕事人生で最も集中力が高く、なおかつ心理的に安心感がある。いや人生全般で考えてもトップレベルかもしれない

Slackで分報をつける開発

これは人によってはなかなか開発のスパイクとして良いようだ。適度に人に見られている。なおかつ独り言効果で知恵が発揮される。テキストを書く時間の何十倍も回収できるはずだ

僕はSlack分報を書かない

最近の話。一時期は1日に100ポストもしたが、やめてしまった。なんとなく活用方法が分からなかった。自分の開発のためであれば、人が見ている必要はない

体に異常事態が生じたとわずかでも感じたら、だいたい睡眠の問題だ

僕の場合は非常に眠くなりやすいので、数分目を閉じるだけでも随分と違う

僕は死の世界を感じやすい

虚無的なものを。これにはマインドフルネスで対処する。インスタントではあるが。業務中に死の世界を考えるわけにはいかない。人間の根源的恐怖としてあらゆる感情の根源に死が存在するのは理解している

鬱には薬が効くという

仮に僕がもし鬱になったら薬なしで対処したいと思うかもしれない。だがいま僕は耳栓を付けている。聴覚過敏対策で。薬という物質かシリコンの物質か。どちらも物理的対策という意味では同じだ

ツールボックスを使い分ける

このテキストはvimで編集した方が良いだろうか。それともSublimetextだろうか。片方の選択肢に固定しない。テキストが大きくなってvimから溢れ始めたらSublimeに切り替える。武器を複数持つ

エンジニア勉強会に参加しないエンジニア

俺です。だけど一番行って良かったと思ったのはRubyKaigi大阪01だ。@yuki24 さんの発表は本当に頭に残ってる。ツールボックスを使い分ける。ちなみに僕もLT枠で登壇した

Macでウィンドウサイズと位置をショートカットキーで変更できるアプリを入れてみる

かゆいところに手が届かないがタッチパッド操作よりマシだ。一番はがゆさを感じる岩から粉砕していきたい

今週木曜日は面談がある

もしかしたら命の終わりかもしれないと頭の片隅で考える。一瞬で。なんだかんだとはみ出してしまうエンジニア。いっぱし社会人への道はまだまだ遠い

気分をコントロールする方法。

必ず物理に働きかける。

環境を変える。

デスクワークで席を立つ効果は絶大。

気持ちで気分を変えるのは無限ループするのでダメ。

メモリリークするぜ。

理解していながら何故か動きたくない謎もある。

ホメオスタシスはあまりに強力。

頭た体で理解して動く。

エンジニア https://t.co/YpOodyZBr2

https://github.com/YumaInaura/YumaInaura/issues/615