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

更新日:

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

本記事の内容


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

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

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

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

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

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

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© プログラミング道場 , 2025 All Rights Reserved Powered by AFFINGER4.