はじめに
プログラマーの脳の中をドキュメント化した書籍は、中々、見当たりません。しかし、プロクラム初心者の方は、ベテランの人の頭の中はどうなっているのだろうかと、また、脳でどのようにコーディングを考えているのかと気になっていると思います。
しかし、先輩方もそのことには、中々、答えることができないのではないでしょうか。これは、経験に基づくもので、ドキュメント化が難しいからです。
# サンプルコードの理解
今の時代は、ネット上に、多くのサンプルコードがあります。昔に比べれば、そこからのノウハウを吸収する機会はいくらでもあります。最近は、質の良いサンプルが生成AIで取得ができます。
しかし、いくら質が良くても、読む読者の経験が未熟だとおそらく理解するにはそうとう時間がかかると思います。経験が豊富になると、理解も早まります。すぐに、サンプルを理解できます。
脳の中はどうなっているのだろうか
このプログラムコードのイメージングですが、ベテランになればなるほど、仕様ができれば、コード化はすぐにイメージできます。
処理の機能分化について
これは、どういうことかといいますと、ある処理をプログラムで行う場合、まず、考えなければならないことは、その処理を行うためのデータをどこにもつかということと、どこにあるかということをはっきりしなければなりません。
データが無ければ、処理を行うことはできません。数学で言えば、a+b=cという処理を、プログラムでは、aとbのデータはどこにあって、また、その結果を保存するところはどこなのかということを仕様から理解しなければなりません。
コード化するとは
まず、その概念を理解してからコード化に入ります。その前に、コードの言語について理解しなければなりません。このコードはどの言語でコード化するのかを仕様から理解します。このように、ブログラム化するとは、先に仕様を理解することから始めます。
言語の理解
プログラムするには、言語を理解してからでないとはじまりません。すべての言語を理解する必要はありません。その仕様書に書かれているに言語がわかればいいのです。
仕様書について
ここで、仕様書のことがいろいろ出てきましたが、この仕様書は、建築で言うと、設計図面のようなものです。大工さんはその図面を見て建物を建てます。必要な資材もすべて記載されています。
プログラムもそれと同じで、設計図面が必要です。それが仕様書です。細かいことを言えば、基本設計書とか詳細設計書とかがあります。
ノウハウについて話を戻します。
記事が脱線してきましたが、話しをノウハウに戻します。ドキュメントしにくいノウハウについてでした。それは、脳の中に蓄積されたノウハウで、これは、ドキュメント化しにくいものです。
例えば、陶芸家の技術ですが、それは、その陶芸家だけが経験から取得したノウハウで、脳と指先に残っています。プログラマーもそれと一緒です。脳と指先にノウハウが蓄積されています。そのノウハウを新人の人に伝えるのは難しいことです。口先ではつたえにくく、やはり、実践して経験しなければ取得できません。
ノウハウの一例を示します。
ある検索をするための入力フィールドに、1文字を入力して、それをデータベースから検索する仕様があるとします。
このような画面があるとします。
<span>タイトル:</span>
<input id='input_title' type='text'>街</input>
<button id='search'>検索</button>
この画面で、「入力フィールドの検索文字でデータベースを検索して結果を取得します。その場合、文字を入力後にEnterキーを離したときに検索を開始します。」という仕様だとします。
データベースのアクセスについては省略して、今回は、jqueryで、Enterキーを離す瞬間のところまでとします。
このプログラムコードは、慣れると、脳内に
//
$('#input_title').on('keyup',(e)=>{
//
if(e.Key('Enter')===true){
//Enterキーを離したときに実行
//以下はDBアクセス、省略します。
}
});
こういう、コードが浮かんできます。ここまで、浮かんでくる人は、言語では、html、javascript、jquery、DOM、イベントリスナー、セレクターなどの扱いに慣れている人です。そうですが、これは、誰でも、経験を積んで行けば、到達できるレベルです。
脳内でのイメージトレーニング
プログラムコードを脳内でイメージできれば、あとは、それを統合エディターで入力して行きます。その先は、デバッグ作業があります。
しかし、そのような作業は、慣れてくると、自然とスムーズに行きます。
本当の職人技は
陶芸家でも、寿司職人でも、手のひら、指先の感触が優れている思います。手のひらは非常に敏感です。平らな平面を手でさすると一見、ツルツルの表面に見えても、手の感触でザラザラ感がわかるときがあります。それほど、敏感にできています。そのような手で、物を作るのが職人です。彫刻の彫り物でも同じだと思います。
プログラマーも職人と同じとは言いませんが、どこか、似たところもあります。手先の器用さは必要です。
やはり、難しいのは
業務系の経理ソフトとか、会計ソフトなども、本来の業務がわからないと書けません。税務とかの処理をプログラムで書くわけですから、それらの業務知識がさらに求められます。また、ロケットの追跡システムなどは、それ専門の知識が必要です。おそらくパッケージ化されていると思います。それはそれで専門のチームが開発していると思います。業務系のノウハウは、ここでは、別扱いとします。
あとがき
昔から、「ノウハウの伝授」ということが言われています。伝家の宝刀などとも言います。門外不出とか、口伝とかは、文書に残さないノウハウです。
プログラミングのノウハウも同様で、大量生産はできません。一人一人に身についたノウハウなので、コピーができません。いくら、生成AIの時代だからと言って、そのままコピーしても、システムは動作しません。その先にノウハウがあって、そのノウハウを駆使してシステムは完成します。ゆえに、AIの時代だからと言って、プログラマー不要とはならないです。増々、必要な時代です。