カイワレの大冒険 Third

技術的なことや他愛もないことをたまに書いてます

エンジニアとして記録を残すということ

「意識的に記録を残す」。会社に入ってから特に意識しているテーマであったりする。果てして、それが一体どういう意味をもたらしているのか考えてみた。

今思い出して、自分が残していると思われるのは以下のようなもの。

  • インストールや設定ファイルの作業手順
  • 設定を修正をした場合にどういう修正を加えたかという一連の流れ。それに対する意見。
  • あるタスクが現時点でどこまで進んだかという進捗
  • 一週間や月次など、特定の区切りで、振り返った報告
  • 何か問題があった場合のその対策やその対策が意味すること

このような記録をする際は、自分が「何をし」、その作業が「どういう結果」となったか、そして、それに対して自分が「どう思っている」かを意識的にせよ無意識的にせよ思うままに書いている。

また、このBlogや勉強会のLTのように、不定期ではあるものの、社内・外に関係なく、そのとき書こう・やろうと思ったものをアウトプットしている。

更には、Twitterのつぶやきや、はてブしたものなども、どう役に立つか分からないが、Evernoteに自動的にぶち込まれるようにしている。

問題は、「このようにアウトプットとして明文化されたものが、どう自分の成長に繋がったか」だ。

明文化の重要性と意義

アウトプットの必要性は至るところで叫ばれているように思う。その必要性は感じているし、頭ごなしに否定するより体感するほうが早いから、思うがままにやっている。単に自分にとって、どう作用したかだけが重要だ。その作用が自分にとって重要だと思えば、続ければいい。それだけだ。
人の方法が自分にとって適切なアプローチだとは思わない。ただ、重要だと思われたものに自分が取り組み、どう作用したかを記せば何か意義があるだろうと思って、記している。

作用の具現化

明文化とは?とか、アイディアとは何か?みたいな議論はあるだろう。そこに興味ある人は情報学でも哲学でも触れればいいと思う。そのような実体についてここで述べるつもりはない。
今関心があるのは、以前アウトプットしたものが、どう自分に作用したかという効果だけだ。

  • チューニングで設定ファイルを弄った
  • 新しいミドルウェアで検証を行った
  • ひと通り作業したことに対して、自分なりのコメントをつけて、備忘録とした

このようなアウトプットはわりとよくやるけども、現時点(2011/08/03)で考えたときに、これらのアウトプットが役に立つときというのは「本来の目的を逸脱したとき」だと思っている。

というのも、上記のようなアウトプットをする場合には、理論的にもしくは順序立てて説明しなければ、それはメモというよりは単なる落書きで、自分ですら理解できないものになってしまうからだ。そのため、アウトプットする際には、自分が分かりやすいように、流れを意識して記録を残している。

もちろん、これは「自分」が分かりやすい流れであって、他人に分かりやすい流れであるとは言えないかもしれない。しかし、その流れを言語で記すためには、どういう仕組みで、何が必要で、どうすれば解決するのかを書いておかないと、あとで読み返しても自分ですら分からないことがある。要は自分ですら説明できなくなる。それだけ時間をかけて理解したにも関わらずだ。

そのため、一度自分の中で体系立てて、アウトプットを行うこととなる。
チューニングであれば、以前の設定の問題点を挙げ、どういう理由でそれを修正したのかを記す。たとえ、それが数日後間違いだったと分かったとしても、そのときの考えとして残す。そうすることで、「流れ」ができあがる。

この流れは、自分の中で確固としたプロセスとなるため、初めから説明することも不可能ではない。要は、これがこういう意味でこう作用しているから、この対策が重要であると。

このようにしておくと、どんどんその本質的な仕組を理解していかなければならない。この「仕組みの理解に繋がるアウトプット」が重要なのだと思う。

仕組みを理解していくアウトプット

このような、「自分で推敲し、組み立てていくアウトプット」は本質を捉えようと努力していくので、意外なときにその知識が役にたったりする。

  • ファイルシステムの検証をしていた知識がディスク修復に役に立った
  • プロセスの状態を把握するため、プロトコルのやりとりを把握していたら、そのステートが与えるウェブサーバへの影響を痛感したり(TIMEWAITとか…)
  • スケジューラの勉強してたら、他の人からなんでこのサーバこうなってるんでしょうと聞かれ、ロードアベレージが一定以上上昇しないということはこういう仕組みになってるとか

要は修正箇所を掲げ、その理由を説明していたら、一度頭の中で組織的に理解しなければならず、だからこそより深いレベルでのトレースや指摘が可能になったりする。別にドキュメントを残しているときにこんな対応は考えてすらいない。アウトプットをする上でそう理解していったので、そういう方法を取ったというだけである。

もちろん、勉強中であるから、アウトプットが中途半端だと、それはなんか違うぞと社内社外関係なく遠慮無く指摘される。それもアウトプットの醍醐味だろう。

アウトプットしていれば、ネガティブコメントもあるし、それは違うだろうと言われることもある。経歴としてまだまだ浅いから、指摘できないぐらいのものを書けたほうがすごいであろう。しかしながら、そのような行為は、当初の目的とは一切関係なく、想定もしてないが故に、逆説的に自分の為になったりする。自分の知識を捉え直す機会があるだけでなく、それでもまだアウトプットしたいかなど、様々な点で外にさらけ出していくことを再考させられる。

エンジニアとして

ここまでつらつらと書いてみたけど、基本的に整理をしていこうと努めて行けば、普遍的な理解へと自然と至っていくように思う。より採用事例のある枯れた技術を使い、その理屈を理解し、また一方でその弱点を本質的に理解しようとし、改善するために新しい技術を使っていく。だから、多くの事例から学び、その理由を理解していくことで、自分の中に体系化された知識が入っていく。こんだけ偉そうに書いても、半年とか一年後読み返せば、多分何あの程度の知識でこんなこと書いてるんだと思うんだろうと思う。それでいいんだと思う。
どこでも通用する知識というか、世界で通用する、つまり普遍的に近い知識があれば、発生する問題に対するアプローチも、より無理がなく、どこでも、誰でも、ちゃんと対応できる知識が整っていくように思う。

自分が苦労して整理した知識は、他の人が同じ苦労する必要はなくて、他の部分に時間を割いてもらって、それをまた自分が享受する。そうして、発展していく。それだけなんだと思う。

要は自分なりに自分の今の力を出していけばいい

単純に、自分の素を出していけばいいだけなんだと思う。一生懸命整理し、文字にし、伝え、記録として残す。それがどういう風になるか分からないが、気づいたら、今の業務に携わった頃よりも、理解が深まり、色々詳しい人達にも出会え、いい刺激を受けているように思う。

おそらくこの記事だって、どれほど読まれるか分からないし、アウトプットしたからといって、何か今すぐ自分に変化があるわけではないだろう。ただし、あとで振り返ったときに、あーこれがこう役に立つのかとか、なんか不思議な力で意外なとこで役に立ったりするのがアウトプットの効能なんだと思う。

正直、外に思いの丈を綴ったからと言って、未だにいいのか悪いのか分からない。でも、なんか続けていたら、始めた頃より知識も増え、指摘してくれる詳しい友人も増え、レスポンスくれる人たちも増えたから、多分成長してるんじゃないかと思う。

すっきりしない終わり方だけど、これが今の自分が思う「アウトプットの重要さ」に対する考えであり、まだこれぐらいしか明文化できない理解なんだと思う。なんか言いたいこと書ききれてないから、まだ整理が足りないのだろう。

P.S.
久々に@さんの、アウトプットを残す、というコト: oshiire*BLOGを思い出して、アウトプットとして残してみたくなったので、思うが侭書いてみた。