はじめまして、フリーランスエンジニアの添田です。
他業種の専門スキルって憧れますよね。
自分に出来ないことが出来る人をいつも尊敬します。
エンジニアをやっていると、これもまた他業種の方から凄いね、って言われることがあります。
何が凄いのかよく分からないですが、全く何をしているのか内容が分からない事に対して凄いというざっくりとした感情が表れるんでしょうね。
私自身も何が凄いのかわからないまま凄いなぁ〜ってボヤいてしまうことがよくあります。
一般的にはエンジニアの仕事とは「プログラムを書いてる」という印象が一番強いのではないでしょうか。
エンジニアを職にしている方なら分かるかと思いますが、プログラム書けるなんて凄いって言われることが多いけど、自身ではそんな凄いことをやっている感覚は無いと思います。
私自身プログラミングはそんな特別難しいスキルでは無いと思っています。
プログラミングってどんなものなのか。
私はよくパズルのようだと例えます。
パズルと言ってもジグソーパズルのようなものではなく、ブロックパズルのようだと思っています。
用意されたピースがたくさんあり、それらを組み合わせて目的を達成する。
ジグソーパズルのように決められた場所に決められたものだけがハマるわけではなく、どう組み合わせていくかは技術力次第。
積み木でお城を作りたいと考えた場合、人によって使う積み木も積み立て方も違いますよね。
使う数も異なれば、完成したお城の形も異なる。
でも完成したそれはお城なんですね。
ただ多くの積み木を乱雑に積み上げたお城よりも、必要最低限の数で効率よく積み上げられたお城のほうが綺麗に見えるのは想像できますね。
プログラムも見た目同じ目的を達成してたとしても、その中身は人によって異なります。
少ないコードで効率よく組み立てる人、綺麗に揃えて書く人、反対に効率よく書くのが苦手な人、見た目気にせず整理されてないコードを書く人。
エンジニアのプログラミングスキルってここに一番スキルの差が表れます。
見た目は同じなのでプログラムが分からない人からの評価に差は表れません。
エンジニアとしての一番の評価は同じエンジニアからの評価ですね。
エンジニアにとって一番必要なスキルは知識よりも応用力だと思います。
知識が無ければ応用も何も無いのではないかと矛盾を感じるかもしれませんが、知識が豊富でもそれを活用出来ない方も多くいます。
逆に知識では負けていても、持っているスキルをフルに活かし、経験と応用お繰り返しで素晴らしいプログラムを組み立てる方もたくさんいます。
この業種に理系の方が多いのは応用力を得意とする方が多いからなのかもしれませんね。
先に例えた積み木に話を戻すと、誰もが一発で綺麗なお城を組み立てるのはかなり難しいですよね。
一度組み立てて、組み立てたものを振り返り、改善点を見つけ出す。
そしてまた組み立て直す。
経験と失敗を繰り返し応用していく様子はまさにプログラミングですね。
パズルの組み立てが好きな方であれば誰でもプログラマーになれると思っています。
理系の方が多いと書きましたが、文系の方が少ないわけではないですし、正直そこは関係無いと思います。
知識が無くても、英語力が無くても、組み立てる事に楽しみを見出だせる方であれば誰でもなれる職業です。
必要なのは、妥協しない心と、ほんの少しの計算力です。
あとは長時間座っていられる忍耐力ですかね(笑)