こんばんは、ITservice雄飛です。
最近は、自作のエディタの更新と。
本業と副業、共に忙しい今日この頃。
さて、本題。
今、プログラミングが(まだ)熱いというか、盛んですが。
以前、ツイッターの方で、非常にごく簡単なアンケート取ったんですが。
それで、反応を見て難しいなと思った感想を持った訳です。
何が難しい言って、プログラミングだけ覚えれば、それで良い、
そうすれば食べていけるんだろう、みたいなアンケート結果だったので。
結論を先に書くと。
「プログラミング」だけ覚えても、仕事にするのはとても難しい。
これでしょうか?
独立って意味ではないですよ?
なんで??
それは、基盤となる必須の基礎知識的な技能であって、
それを実現する、別の各種知識が必要になるからです。
簡単に図示するとこんな感じ。
・対象の業務に関する専門知識
・アルゴリズム構築技能(設計技術、構築技法)
・プログラミング(コーディング)技能
簡単に、大雑把に、図示しただけですが。
細かく書き出すともっとあります。
上記の技能をうまく作動させるために、
コミュニケーション能力も結構重要だったりします。
例えで、仮のやり取りで書きますね。
・お客様「会社の単純手作業を何とかしてくれないか?」
・受注者「どの様な作業でしょうか?お話をお伺い出来ますか?」
(お客様と受注者でやり取りを行い、受注者はヒアリングをする)
・受注者「AとBは自動化可能ですね。Cは難しいというか、自動化は危ないですね。」
・お客様「どれ位で出来るの?どこまで楽になるの?」
・受注者「お伺いしたお話の限り、AとBはエクセルVBAを使えば1時間です。」
・受注者「もっと早く数分で処理する事も可能ですが、その場合納期は嵩みます。」
・お客様「作業時間は掛かっても良いよ、急いでいるから、エクセルで良いよ。」
・受注者「このAとBのエクセル処理なら○○日で出来るでしょう。」
(ここの、見積もり納期の勘案は非常に重要だったりする。少しだけ多めに見積もる感じ)
・受注者「これを自動化して欲しい。」
・受注者「Aの処理とBの処理を、1時間以内で出来るVBAを書いてほしい。」
・作業者(プログラマ)「扱うサンプルデータはありますか?」
・作業者(プログラマ)「お客様の行っていた作業の工程教えていただけますか?」
・受注者「Aがこれで、Bがあれ。資料送ったよ。」
・受注者「お客様からヒアリングしたから、それを基にサンプル作って。」
・作業者(プログラマ)「ありがとうございます、早速取り掛かります。」
(ここでプログラマは、資料と睨めっこして、自動化の方策を書き出してアルゴリズムに落とす)
・〇日(納期○○日の半分が経過)
・作業者(プログラマ)「テスト版ですが出来ました。」
・作業者(プログラマ)「サンプルデータで動いているだけなので、保証は出来ません。」
・作業者(プログラマ)「実作業に近いデータは貰えますか?詳細詰めたいです。」
・受注者「交渉してくる。欲しい作業内容を詳しくお願い。」
・作業者(プログラマ)「Aは△の処理の際の文字の長さの揺れ幅が知りたいです。」
・作業者(プログラマ)「Bは□の処理の際のテキストのフォーマットを知りたいです。」
・作業者(プログラマ)「テストプログラムと資料送りました、これで大丈夫ですか?」
・受注者「ありがとう、交渉してくる。」
(ここで、お客様にテストプログラムを確認して貰い、詳細を詰める作業をする)
・受注者「この様な感じで進めております。テスト版ですが、ご意見お願いします。」
・お客様「あれとこれは良いね、ここは要らない、そこに作業経過が欲しい。」
・受注者「Bの作業の差し支えない空データは貰えますでしょうか?」
・お客様「良いよ、適当な数字と文字で良い?」
・お客様「ありがとうございます、その方が助かります。」
・作業者(プログラマ)「ありがとうございます、助かりました。作業に移ります。」
・受注者「納期通り終わりそう?」
・作業者(プログラマ)「テキストのフォーマットが判ったので大丈夫です。」
・作業者(プログラマ)「納期数日前に、客先でテストさせて貰えますか?」
・受注者「判った、お願いしとく。」
・作業者(プログラマ)「初めまして、□□と申します。」
・作業者(プログラマ)「納品前に動作を確認させていただきたく存じます。」
・お客様「どうやって使うの?」
~省略~
・お客様「良いね、でも時々止まるね。」
・作業者(プログラマ)「申し訳ございません、事前に確認出来て良かったです。」
・作業者(プログラマ)「今修正しました、どうでしょうか?」
・お客様「良いね、今度は何やっても大丈夫だね。」
上の例えは、私が一人でやっていた受託開発を、幾つか擬人化させて登場人物を増やし、架空の案件で例えてみました。
・先ず、絶対的に必要なのはコミュニケーション力です。
コミュ力が無いと、色々苦しみます。
書く言う私も、日々コミュニケーション力は試されています。
それだけでなく、交渉力も重要になってきたりします(私の場合)。
・次に必要なのは、アルゴリズム構築能力と、それの言語化能力です。
アルゴリズムというのは、動作原理とも言えるかと思います。
要は、モノが動く仕組みを、頭の中で構築する能力です。
そして、それを図と文章で記す能力。
これが出来て、初めてプログラミング作業に命が灯ります。
・業務専門知識
必須です。
仕事を受ける場合、プログラミング出来ればどの分野でも、という訳には行きません。
ではどうするのか?お客様は、その分野の専門家です。
要は、プログラマたる私はその分野の素人な訳です。
細かく聞いて、只管聞いて、覚えるしかありません。
実際、そのように仕事をした事もあります。
プログラミングだけ覚えても、コーダー(コードを書く人)になっただけです。
しかし、第一歩には違いはなく、そこで満足するのではなく。
常にどん欲に学習していかないといけない、と言う事になります。
逆に、貧欲に学習する人は、何をやっても成功するかと思います。
今回は、これにて以上。