プログラミング道場Top

エンジニアが持っておくべき知識のインデックス

更新日:

エンジニアが持っておくべき知識のインデックスとは、どういう意味でしょうか?

エンジニアがコードを書く時に、何も見ないで打ち間違いもなく、サクサクとコードを書けたらベストです。
でも、そういったことができるエンジニアは限られています。
実際のところは、ソースコードをコピーすることと自分でコードを書くことは、半々ぐらいのイメージです。
そういった時に、あると便利なのが「知識のインデックス」
であり、自分自身の「虎の巻き」です。
ちなみに、インデックスとは索引のことを意味します。

本記事の内容

  • エンジニアの仕事の進め方
  • 何をインデックス化したらいいのか?

エンジニアの仕事の進め方

冒頭でも軽く述べましたが、自分がやりたいことを何も見ずにサクサクと書けたら、それがベストです。
ただ、その作業は難易度が高いし、そこまで価値があるかと言われると微妙なところです。
実際に例を見ていきましょう。

MySQLのデータをダンプしてバックアップしたい。

そんな時にスラスラとコードが思い浮かぶ人は大したものです。
自分の場合は、なんとなくは覚えているものの、確証はないので、自分のメモを見ます。

mysqldump -uroot test_db | gzip > /tmp/test_db.sql.gz

ダンプだけでなく、圧縮もしてくれていましたw
メモを書いた時の自分を褒めてあげたくなります!
その下に、セットで使うであろう解凍とインポートのコマンドも書かれています。

gunzip -c /tmp/test_db.sql.gz | mysql -uroot test_db

後は、これを書き換えてコピペすれば任務完了です。
さらに理想を言えば、こういったコマンドを自動化して、Ansibleのような構成管理ツールから叩くとなお良しです。

curlでPOSTリクエストを送る時も同様です。
私はメモを見てから、コマンドを叩きます。

curl -X POST http://localhost:3000/users -d 'user[name]=test1&user[email]=test1@gmail.com'

これを全て覚えてもいいのですが、覚えることの価値は、そこまで高くない気がします。

何をインデックス化したらいいのか?

何をメモして、インデックス化しておくかは、個々のエンジニアのレベルによります。
上記の例を見て、「そんなレベルのコマンドは全て丸暗記している」という人もいるかもしれません。
その場合は、「内容は、ほぼ理解しているけど少し曖昧」という部分をインデックス化しておくべきです。

また、初心者で、「クラスや関数の作り方が曖昧」というエンジニアもいるはずです。
その場合は、いくつかのクラスや関数のパターンをメモしてインデックス化しておきましょう。

そして、クラスを実装する時に、そのメモを使えば、効率よく実装をできるはずです。

「インデックス化すること」のイメージは、なんとなく湧いてきたはずです。

私は何度か以下のような質問を受けたことがあります。
「デザインパターンを勉強した方がいいですか?」
「Dockerを勉強した方がいいですか?」
「アルゴリズムを勉強した方がいいですか?」
そんな時にはきまって、「勉強するにこしたことはない」と回答します。
「勉強するにこしたことはない」のレベルは「知識のインデックスをつくる」ぐらいだと思っています。
つまり、浅すぎず深すぎずで、「会話についていけるし、調べればシッカリと実装できる」というレベルです。
今の時代に、全ての情報を丸暗記しておく意味は、あまりありません。
一度、ある程度を理解したら、あとはインデックス化しておき、実務で使いながら理解を深め、それを効率よく使いまわしましょう。

Good luck for your engineer life!

-プログラミング初心者

Copyright© プログラミング道場 , 2018 All Rights Reserved Powered by AFFINGER4.