「プログラミングは簡単です。」は、真実か?

プログラマになって、二桁年が経ちそうになりました。

ネットでよく見る
『未経験からIT業界へ!プログラミングを学んで高収入!』
みたいな。

人材確保のための(ともすれば蟹工船のような印象を受ける)見出しを見てしまうと、人々の倫理観は相変わらず『阿附迎合』(あふげいごう)によって成り立っているのだなあとシミジミ。

偉そうに語れるほど、私は経験もスキルも高くないので、お口ミッフィー。
昔は私も蟹工船(のような労働環境)で働いていたので、心が痛くなってしまうというお話。(自分で考える能力を養わねば。


さて

プログラミングは、今やありふれたスキルになりました。

ハイパーテキストの転送プロトコルや受け取ったバイト配列を組み立てて読み出す仕組みを実装しなくても、Webページは表示できます。
通信の輻輳(ふくそう)を意識しなくても、無料wi-fiを使うことができます。
メモリを意識することなく、様々なアプリは動きます。
ディスプレイのフレームレート(描画能力)やレイテンシ(応答遅延)を意識しなくても、画面に映像を表示することができます。

やーもう、なんか訳のわからない単語が無造作に並んでると
読む気が失せますね。


要するに、便利な世の中になりました。


フレームワーク(便利なもの詰め合わせキット)を利用すれば、誰もが大規模なWebサービスを作ることができますし、今流行りの機械学習を行うことができます。


課題解決、ビジネススキルの一つとしてプログラミングは
ある種、必須技能に近くなったのかも知れません。

そういう現在だからこそ
プログラミングをスクールに通って学び、『自己実現の糧』とする。
というのは、半ば当然の帰結だろうとは思います。(義務教育で必修科もされますからね。


とは言っても、やはり習得には相応に時間がかかります。

数ヶ月から人によっては年単位でかかる人もいるでしょう。

個性なので、時間的な要素は別に構わないと思います。
私自身もプログラミングが得意な方ではないので、時間がかかる方の気持ちも理解できます。
もちろん、短期で習得できる方の工程も理解できるので、やはり素地はあるなーとも思っています。


巷では、プログラミングなんてのは簡単だ。誰でもできる。1ヶ月でできる、バカでもできる。と、喧伝されている方もいるとかいないとか。

含意としては

天才的な先人が、難しいところは全て解決してくれているのだから
その道の通りに進めば良いようになってきている。
その通りにすれば良いだけなのだから、習得すること自体はそれほど難しくはない。
舗装された道を、専門家ではない私たちが今一度舗装する必要はないのと同じである。

と言ったところでしょうか?真意のほどは判断しかねますが。


私自身も、「学習」という意味ではその通りだと思います。

プログラミングを習得すること自体は、比較的容易であろうと思います。
英語を手習うよりは、個人的にはずっと楽だなと。


じゃあ、プログラミングは簡単なのか?

と問われれば、果たしてそうなのか?と疑問を呈さざるを得ません。

例えば、あなたが今ビジネスパーソンだとして

これから約1ヶ月後にお客様にあるシステムをご提供しなければならない。
しかし、あなたはプログラミングをしたことがない。

こういう状態になることは、現代社会では結構目にするような気がします。
今回の例を仮に、ブログサイトをWordpress(簡単にブログサイトが作れる便利キット)的なもので立ち上げたい。みたいな内容だとしましょう。

恐らく初心者に事前知識なくやらせた場合

ブラウザを立ち上げ
キーワード「ブログ 始める やり方 システム」で検索を行い
1ページ目にある広告を踏み
レンタルサーバを借り
Wordpress的なものを導入し
サイトが表示されて

「できた!」と高らかに宣言することでしょう。

そう、現代でプログラミングを要することは
大枠の部分において『かなり少ない』のです。

サイト設置や公開、ドメイン設定やHTTPS化、セキュリティ対策なんかも
全部用意された手順書を見てポチポチすれば完結するのです。

たまに、こういうものだけを見て『プログラミングは簡単!』なんて言っている方もいらっしゃるとかいないとか。ふむ、痛風は大変そうです。


さて、問題はここから。

Wordpress的なものは、世界中の方々が様々な機能(プラグイン)や見た目(テーマ)を提供しているんですが、要望に完全に合致するものが見当たらないこともあります。

そんな折、お客様から追加でご要望を頂きます。

このサイトに、掲示板を用意したい。
掲示板では、よくあるスタンプを使えるようにしたい。
サイトの利用者は、アバターを設定して、自分オリジナルのコーディネートを行えるようなものにしたい。
できれば、アバターの服装や新しいスタンプを購入するショップ機能と専用の個別掲示板を開設できるようにして、フォローが増えたら掲示板を豪華にできるようにして欲しい。
今月中にできるでしょ?

なんだか、色々な要素が一昔前のSNSっぽいですが、置いておいて。

Wordpressだったら、こういうのは探せばありそうなもんですが
今回は、的なものだったので、なかったとしましょう。

ということは、作らないといけません

いやまあ、想定としては、かなり極端な例すぎて
熟練者でも、これらを1ヶ月、しかもたった一人でやりこなすのは
かなり難しいかも知れません。

私が担当者で、納期の擦り合わせをするのであれば
設計で1週間、デザインも同時並行して実装で1ヶ月半、テストを1週間で
2ヶ月ぐらいであればなんとかなるんじゃなかろうか?として
バッファを考えて、もう1ヶ月の3ヶ月。

そこから、想定されている中身を考えて、良さそうなイメージを組み立てて、ご提案と交渉に臨みますかね。(現代はアジャイル開発なるものがあるので、納期は有って無いようなことも多々ありますが)

人員配置として
デザイン2(UI/UX, スタンプ/アバター)、プログラム1で最低3人のチーム編成は必須でしょうか。(UI/UXを捨てて、2人体制でも回らなくは無いか?安全マージンでプログラム2にすると確度が高いかも知れません。


さあ!とにかく、契約本決まり!開発をしましょう!

Wordpress的なものは、PHPで作られていました!では、PHPの歴史から!
とやっていたら、あっと言う間に3ヶ月経っちゃって、全然できてない。

お客様は怒髪天、契約は打ち切り、損害補填で大赤字でしたとさ。。。


問題はプログラミングだったのか?

例題では、炎上してしまいました。
(こういう案件は得てしてPMが無能なことが多いので、関わったらアカンですね。

皆様、お気づきかと思いますが『プログラミング』なんてのは仕事のほんの一部です。

プログラミングは簡単。

と言う、言葉には言外「難しい仕事も簡単にこなせるようになる」みたいなイメージも含まれていることがあって
私は、そこが一番の問題だと思っています。

プログラミングを習得するのは、簡単だと私も思いますが
プログラミングを仕事に役立てるのは、かなり難しいと思っています。


プログラミングスクールでは、就職や転職のための資本として
プログラミングは現代の必須スキル!としているところが多いですが、仕事として重要なのはそこじゃ無いだろうと常々。

設計書通り作れる人間よりも、お客様のはちゃめちゃなご要望から重要な観点を抜き出し、精査し、交渉し、必要十分を地道に積み上げて、期日までに納品する。

多分、こう言う人材をどこも欲しがっていると思います。(私も欲しい!


大体、お客様は『既存のサービス』を見てできる、できないを判断されているので『本当の問題は何か』が分かっていないことが普通です。

例えば、飲食店でお客様が注文して、出てきた料理に対して注文したものと違う!頼んでないものを出された!とクレームが出たとしましょう。
しかし、厨房では適切に注文通りの料理が出されていることが確認できています。

この場合、問題点は『料理そのもの』ではなく『見映え』なので、メニューの写真通りに盛り付けられるようにマニュアルを手直しするべきでしょう。

(そのお客様へは謝罪と共に、写真通りに盛り付け直した料理を、再度ご提供しましょう。『冷めてる!』とクレームが出たら、ちゃんと温め直すこともマニュアルに追加しておきましょうね。)


こう言う、ボタンの掛け違えを是正するのもプログラマの仕事であるという認識がある方が新人プログラマさんには、あまり多くはない印象を受けます。
(言われたこと以外をやるとブチギレる上司が、この界隈は中々多いですけどね。冷静にホウレンソウしましょう。


技術力+知識力+忍耐力+行動力+洞察力+コミュニケーション力+...

みたいな、複合スキルの高水準をかなりの割合で求められるのは
仕事である以上は当然です。

ここら辺を真っ黒に塗り潰して
技術力を身につけよう!それだけでOK!今日からあなたも高収入!みたいなのを謳われると、なんだかな〜と。


当然として、プログラミングスキルが高いに越したことはありません。

print("Hello, World.")

が、出来ます!と言われても、スクールでは凄いかも知れませんが
仕事上では、あまり意味はありません。(いや、私個人は結構使ったりしますけどね。ちゃんと環境できてるかな?みたいな確認をするときに。

ここら辺の住み分けも、初心者さんには難しいところではあると思います。

慣れてくれば分かるので、個人的には初心者のうちは失敗三昧で全然良いと思いますけどね。(ケツ拭きは上役にやらせときゃ良いんです。反省して次に繋げましょう。


プログラミングはあくまでも手段であることを忘れない!

プログラミングは、正直習得する分には簡単な部類のものだと思います。

根深いので、今更ながら『習得』の定義を

ネットの検索を駆使して、自分だけで目的の挙動を達成するプログラムが組め、かつ自分だけでエラーを解決できるようになった状態

とします。


習得の前提として

なんのためのプログラミングなのか。
将来、自分がどうあるためのプログラミングなのか。
なんで、プログラミングなのか。

これらが、はっきりしていることが望ましいと思います。

ここがあるのとないのとでは、習得期間に雲泥の差が出ると思っています。


「プログラミングは簡単です。」は、真実か?

私個人の回答としては

真実である。
但し!学習という観点から見た場合のみに限る。かつ、習得する期間は個人差がある。

難しい仕事、難しい事象、上司との会話、部下との接し方、お金稼ぎ、が
簡単にはなりません!


ある程度まで突き抜ければ、プログラミングだけで上の項目全部解決したりするんですけどね。それは、プログラミングが簡単であることと趣旨が違うので割愛します。



長々とお読み頂き、ありがとうございました。

以上!

いいなと思ったら応援しよう!