こんにちは。
アサノパパです。
本日は、プログラミングという仕事について考えてみたいと思います。
小学校でプログラミング授業が必修化されたため、これから本格的に子供プログラマーに育てたいと思う親も多くいらっしゃると思います。
また、転職して本気でプログラミングを始めようとする人も増えてきました。
これらの人向けに本当のプログラミングという業界の解説と、この業界が今後どうなっていくかの推測をし、プログラマーを目指す上での注意点を述べたいと思います。
副業プログラマー以外は単にプログラミングしていてもダメ
初心者が思っているほどプログラミングという仕事は単純ではありません。
副業レベルであれば気にすることはないと思いますが、本格的に職にしようという人は是非読んで頂きたいです。
プログラミンングが単純ではない理由を以下に箇条書きで記します。
・重要なスキルはプログラミングスキルではなくプログラムの構造設計スキル
・最終的には自身の適正まで求められる
順に解説していきます。
単にプログラミングを覚えただけでは良い人材とは言えない
今のプログラミングスクールのほとんどは、プログラムの記述のスキルを習得するためのスクールですが、実際のプログラマーに期待される仕事はこれだけではありません。
特に大手企業の大規模ソフトウェアぐらいになるとプログラムの記述は全体の仕事の30%程度しかありません。
プログラマーの仕事が何があるかを大まかに列挙すると、以下の通りです。
②プログラムをどのような構造にすると良いかを設計する仕事(構造設計)
③プログラムを記述する仕事
④作成したプログラムをテストする仕事
それなりの規模のプログラムであれば、基本的に①から順に④まで実施してプログラムは完成されます。
プログラミングスクールで学習するのはほとんど③のみです。
なおかつ良いプログラムを記述するには②が一番重要です。
ここで言いたいことは、副業レベルであれば良いですが、本格的にプログラマーを目指すのであればプログラミングスクールで学ぶ③のみでは不十分です。
重要なスキルはプログラミングスキルではなくプログラムの構造設計スキル
プログラムは良いプログラムと悪いプログラムがあります。
ただ単に要求通りに動作するプログラムを作ればよいという訳ではなく、お客さんから追加で要求が来た場合に変更しやすいプログラムにしておくことと(流用性)、他人がプログラムを読んだり変更したとき等を想定し見やすいプログラムにしておくこと(可読性)が強く求められます。
この流用性と可読性が高いプログラムが良いプログラムと呼べます。
実際の企業のプログラムは顧客から鬼のように要求の変更や追加が来ます。
その際に、変更しにくいプログラムを作っていたり、人手が少ない中で他の人に任せにくかったりプログラムを作ってしまっていては、プログラムが完成できる納期が遅くなってしましい製品のコストが高くなってしまいます。
最悪の場合はライバルに顧客を奪われます。
そのため、プログラムをただ単に記述するだけではだめで、プログラムの構造を良くすることが必須条件とされています。
今のプログラミングスクールでは流用性や可読性まで教えてくれるといえばそうではなく、教えてくれるとしても基本的なことだけです。
流用性や可読性を高めるための技法は奥が深く、スクールで習うだけでは企業で活躍できるレベルまで到達できません。
最終的には自身の適正まで求められる
プログラム作成の一つの大きな目標として挙げられるのが「バグを無くす」です。
バグを無くすって簡単に聞こえますけど、すごく難しいんです。
簡単な1000行未満のプログラムならまだしも、実際のプログラムは何万、何十万行に及びます。
その中に幾つもの変数が存在し互いに影響しあってるんです。
それらの変数を論理パズルのように頭の中で一つ一つ整理し、要求の動作を実現するプログラムを人間の脳で作成しなければいけません。
本当に膨大なパズルです。
そのため、人間の目には気づかないミスは必ず存在します。
よくiOSやWindowsでアップデートされていますが、アップデートの多くはバグの修正です。
それなりの規模のプログラムはバグを完全になくした上で販売開始するなんて無理に近いことなんです。
そこで、プログラマーとしては可能な限りバグを少なくするような緻密な努力をするわけです。
このレベルまでくると人や教材やスクールで学ぶスキルを一通り得ていいることは当たり前です。
あとは地頭の良さと人の性格で差がついていきます。
よく天才プログラマーと呼ばれている人は、地頭が良く、また性格も正確であり緻密なんです。
②で述べた構造設計も明瞭な頭で最適化され、膨大なパズルも丁寧に正確に作り上げるため、バグが少ないのです。
長く書いてしまいましたが、ここで言いたいことは、プログラマーという職業は一定レベル以上を目指すのであれば、スキル以外にもその人の適正が大きく要求されるということです。
情報化社会が発展していくに従い、プログラミングの需要も増える
5GやIoTの普及に伴い、情報化社会がさらに発展します。
その情報化社会はソフトウェアで作られるため、プログラミングの仕事の需要は今後増えると予想できます。
今はSwiftだったりHackだったりと新しいプログラミング言語が次々と開発されています。
これは新しい技術や製品が開発される際に最適なプログラミング言語まで開発し、今後の世界全体の開発工数の最適化と技術や製品の普及をねらったものです。
今後も同じように新しい技術や製品が開発される際に新しいプログラミング言語が開発され、そのたびにプログラミングの業界は大きくなるでしょう。
これから子供が習うプログラミングの多くが自動化される
ただし、情報化社会の普及と並行して、プログラミングの自動化もさらに加速します。
今でも、ある程度自動化は進んでますよね。
例えば、WordPressも自動化の一例です。
ユーザがプログラム自体を触らなくても、WordPressのサイトを編集するだけで、オートソースコードを作成してくれるのです。
これからも、簡単なプログラミングからどんどん自動化が進むことでしょう。
近い将来Execlを触るみたいな感覚でプログラミングできる日が来るかもしれません。
最近では、育児の一環として子供にプログラミングを教えることが多くなっていますが、子供が大きくなったころには習得した言語の多くが自動化されているかもしれません。
そうなると、「特定の言語を扱えてプログラミングできる」というスキルより「プログラミング的な思考力がある」というスキルの方が大切になってきます。
今、必死にプログラミングスクールに通わせて特定のプログラミング言語を習得させようとしてる方は、子供が大きくなるころはその言語に特化したプログラマーの需要なんて約束されていないわけですから、汎用的な「プログラミング思考力」の習得に力を入れた方が良いことを覚えておいた方が良いです。
これからのプログラミングにおいてできる人とできない人の所得格差が大きくなる
簡単なプログラミングが自動化されていくということは、簡単なプログラミングほど労働単価は低くなるということです。
今のプログラミングスクールとかで学べる簡単なスキルだけでは、高単価な労働を得にくくなります。
その一方、複雑で大規模なプログラミングは自動化できる領域は少なく、人の手が必要となります。
また、情報化社会でプログラミング市場が大きくなるため、そのような複雑で大規模な開発の数は多くなり、良いプログラマーの需要はますます大きくなっていきます。
つまり、良いプログラマーは自ずと高単価となっていき、初心者プログラマーとの所得格差は大きくなります。
上述したように、プログラミングスクールのみ通ってプログラマーになれたとしても、しばらくの給料は安いものであります。
そこから高給取りになるにはさらに多くの勉強が必要であり、相当の努力が要求されます。
ただし、一度高級取りになってしまえば安定して高所得を得ることができるでしょう。
プログラマーは他の業種と異なり一度活躍すればリストラされる心配も少なく、また辞めたとしてもフリーランスで大きく稼げるからです。
ちなみに、なぜリストラされる心配が少ないかと言うと、大規模なプログラム程、作ったその人が必要とされるからです。
上に書いた通りプログラムには可読性というものが要求されますが、大規模なプログラムになるほどプログラムの構造は他者には理解しずらく、作った本人以外の人がプログラムの変更をしようとすると何倍もの時間がかかってしまいます。
そのため、一度大きなプログラムを作って、その後そのプログラムを流用したり変更したりするには、そのプログラムをつくった人がいた方がコストを大きく抑えられるのです。
最後に
最後まで読んでいただきありがとうございます。
今回はこれからプログラミングを本格的に仕事にしようとする人向けの注意として書かせて頂きました。
プログラミングを学ぶことを否定している訳ではないですよ。
プログラミング的思考をつけるためだとか、これから本格的にプログラマーを目指す意思があるためだとかは大賛成です。
プログラマーを職にしようと考えているならば、それなりの意思が無いとこれからの社会沙汰されますよということを言いたいだけです。
ポイントは今後プログラミングの自動化がどのくらい進むかによると思います。
プログラミングの業界自体が大きくなるのは確実なので、あとは自動化がどれくらい進むかで労働市場は変わってきます。
現に世界のホームページの約3割はWordPressで作成されており、その3割分は人手によるプログラミング市場が無くなったわけです。
ただし、何度も言ってますが、今後プログラミング業界は確実に大きくなるので可能性としては十分に期待でき、プログラマーになる強い意志を持っている人は良い業界だと思います。
コメント