知らない技術の習得

知らない技術。

webエンジニアの仕事の話。

新しいプロジェクトにアサインされて、そのシステムの中身を見て、いままで全く知らなかったツールや技術が使われていることは、よくある。

未経験の技術を学ぶとき、最近感じるのが、時間をかけて体系的に学ぶのではなく、動いているシステムから学ぶことの重要性だ。

ゼロから網羅的に勉強できる時代

webの技術については、平易に解説している良本がたくさんある。また最近はプログラミング学習サイトも発達して、専門的なのに解りやすい解説を動画でみることができる。

※たとえば、chefというツールについての本、解説サイト↓

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)

Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus)

dotinstall.com

これらは間違いなく良い本・サイトなので、時間があればゼロ・まっさらの状態から網羅的に勉強することに向いている。

しかし、問題は、時間がない。業務時間中は、案件を前進させなければいけない。

まとまって勉強する時間なんか未来永劫こない。

入社1, 2年目のころは、土日に数時間から半日かけて、新しい本をガッツリ勉強して知識を蓄え、平日の業務に備えるということをよくやっていた。

しかし、ちゃんと定時の18時に帰り、かつ土日もプライベートを確保して遊ぶためには、このような【網羅的で長時間の】勉強方法に限界があることに気づいた。

本番のシステムから学ぶ。

そこで重要なのが、平日の業務時間中に、動いているシステムから習得する能力だ。

すでに動いているシステムで使われているコードは、複雑で、なにがどう作用しているのか、起こっていることが解りづらい。さわったことのないツールソースコードなど、ちんぷんかんぷんである。

分かりやすい本やサイトでは、分かりやすくするためにそのツールしか動いていない環境がつくられるが、本番環境では全く関係ない末節の設定まで含まれている。

そんなカオスでも、まとめて勉強する誘惑に負けてはいけない。ソースコードを粘り強く読み、分かるところ・分からないところを整理してまとめる。分からない箇所は複数の仮説をあげてみて、そのうちどれが正しいのかを検証する。その作業を通じて、システムの仕様を把握すると同時に、未知の技術の役割と使い方について学ぶ。

そのような【場当たり的な、高速の】習得が大事だと、いまさら気づいた。

早く帰るために。