本記事の内容
エンジニアがコードを書く時に、何も見ないで打ち間違いもなく、サクサクとコードを書けたらベストです。
でも、そういったことができるエンジニアは限られています。
私の場合だと、「ソースコードをコピーすること」と「自分でコードを書くこと」は、半々ぐらいのイメージです。
そういった時にあると便利なのが、「知識のインデックス」であり、自分自身の「虎の巻き」です。
ちなみに、インデックスとは索引のことを意味します。
エンジニアの仕事の進め方
冒頭でも軽く述べましたが、自分がやりたいことを何も見ずにサクサクと書けたら、それがベストです。
ただ、その作業は難易度が高いし、そこまで価値があるかと言われると微妙なところです。
実際に例を見ていきましょう。
MySQLのデータをダンプしてバックアップしたい。
そんな時にスラスラとコードが思い浮かぶ人は大したものです。
自分の場合は、なんとなくは覚えているものの、確証はないので自分のメモを見ます。
メモには、ダンプだけでなく圧縮のコマンドも書かれていました。
メモを書いた時の、過去の自分を褒めてあげたくなります!
その下に、セットで使うであろう解凍とインポートのコマンドも書かれています。
後は、これを書き換えてコピペすれば任務完了です。
さらに理想を言えば、こういったコマンドを自動化してAnsibleのような構成管理ツールから叩くとなお良しです。
curlでPOSTリクエストを送る時も同様です。
私はメモを見てから、コマンドを叩きます。
これを全て覚えてもいいのですが、覚えることの価値はそこまで高くない気がします。
何をインデックス化したらいいのか?
何をメモして、インデックス化しておくかは、個々のエンジニアのレベルによります。
上記の例を見て、「そんなレベルのコマンドは全て丸暗記している」という人もいるかもしれません。
その場合は、「内容は、ほぼ理解しているけど少し曖昧」という部分をインデックス化しておくべきです。
また、初心者で、「クラスや関数の作り方が曖昧」というエンジニアもいるはずです。
その場合は、いくつかのクラスや関数のパターンをメモしてインデックス化しておきましょう。
そして、クラスを実装する時に、そのメモを使えば、効率よく実装をできるはずです。
「インデックス化すること」のイメージは、なんとなく湧いてきたはずです。
私は何度か以下のような質問を受けたことがあります。
- 「デザインパターンを勉強した方がいいですか?」
- 「Dockerを勉強した方がいいですか?」
- 「アルゴリズムを勉強した方がいいですか?」
そんな時にはきまって、「勉強をするにこしたことはない」と回答します。
「勉強をするにこしたことはない」のレベルは「知識のインデックスをつくる」ぐらいだと思っています。
つまり、浅すぎず深すぎずで、「会話についていけるし、調べればシッカリと実装できる」というレベルです。
今の時代に、全ての情報を丸暗記しておく意味は、あまりありません。
一度、ある程度を理解したら、あとはインデックス化しておき、実務で使いながら理解を深め、それを効率よく使いまわしましょう。
Good luck for your engineer life!