プログラマーを目指す人へ
近年の子どもへの調査で、将来なりたい職業ランキングで男子の1位なったのが、プログラマーということをニュースで耳にしました。
私もプログラマーなので、嬉しいような気もしますが、プログラマーという職業は、様々な能力が必要ですので、半端な気持ちでは挫折してしまうかと思います。
ここでは、プログラマーになる人に向けての必要な能力や、IT業界の動向などを紹介したいと思います。
■IT業界はまだまだSE不足
私も20年も前にプログラマーという職業に就いたので、相当なベテランの部類に入るかと思います。
20年前と言うと、まだまだPCはオタク向けの家電製品として認識されていて、インターネットがようやくできるようになった頃です。
友達にもPCを持っているだけで「オタクじゃん」とバカにされたものですが、私はこの友人を時代から遅れているという感覚しか持ちませんでした。
今ではスマフォが当たり前の世の中となり、プログラマーやシステムエンジニアは、まだまだ不足している状態です。
システムエンジニアというのは、会社によっても仕事が異なり、企画やディレクションのような仕事もあるので、文系であっても務まったりしますが、プログラマーという職業は、プログラミングをする仕事であり、確実に理系の方が有利です。
2020年に、小学校でプログラミングが必修化するという発表が政府からありました。
私は、基本的に賛成ではありますが、ただ必修化が良いかどうかは微妙なところです。
確かに、ITエンジニアを増やすという意味では、学校でプログラミングを習わせるのは有効ではありますが、根っからの文系の方には、必修化にされてしまうと、少し厳しい気がします。
私も、理系でしたので、美術の時間などは少し苦痛でした。
なので、全員に必修化するというよりは、他の科目との選択式にするのが良いのではないかと思いました。
まぁ、私に言わせれば、もっと早くからプログラミングを学びたかったというのもありますので、もう20年早くプログラミングを授業に取り入れるべきだったとは思いました。
すでに、先進国の中でも、日本のITビジネスは他の国と比べて遅れを取っておりますし、未だに人材不足です。
これから人工知能やロボットへのプログラム組み込みなどもあり、まだまだ将来性のある分野ですので、プログラマーになりたいというお子さんが増えるのは良いことだとは思います。
ただし、プログラマーというのは、様々な能力が要求されますので、それについて、少しご説明しようと思います。
■論理的思考能力
プログラミングは、設計から始まり、フローチャートという、処理の流れを考えた上で、その通りにプログラムを書いていきます。
処理の流れを考える上では、論理的思考能力が必要とされます。
例えば、変数Aは10よりも大きければ、Bの処理に移り、Aが10以下ならCの処理をするというような流れを図にするのがフローチャートです。
こういったことは論理的に考える必要があり、文系のような感覚的な考え方ではできないということになります。
こういった考え方をするのは、理数系が得意な人に有利ということになります。
システムが大きくなってくれば、処理もどんどん複雑になってきますので、相当な頭の良さが必要とされます。
根っからの文系の人や、あまり論理的思考が得意でない人は、すぐに挫折することになりますので、プログラマーになるなら覚悟が必要です。
■体力
今はそれほど厳しい会社も減ったかもしれませんが、私が会社員だった頃は、プログラマーが徹夜するのは当たり前であり、5日間連続で徹夜したこともあります。
そのため、倒れて病院に運ばれる人もいましたし、私も水をあまり摂取していなかったせいで尿管結石になったことがあります。
プログラマーは、納期を守るために、そのくらいは当たり前の時代でした。
クライアントが大きな会社であるほど、納期厳守は徹底されます。
と言いますのも、クライアントが広告などを事前に打ち出す場合があり、その日に必ずリリースしなければならないということが多々あるのです。
そのため、周囲のプログラマーがバタバタ倒れる中、自分は倒れまいとがんばって納期を守るために仕事をしなければならないことがあります。
まぁ、それは十何年も前の話なので、今はそんな厳しいことはないかもしれませんが、不具合の修正などで、突然時間を拘束されることもあり、やはりプログラマーにはそういった体力があった方が良いことに越したことはありません。
■繊細さ
体力が必要と書きましたが、同時に繊細さも必要です。
プログラムというのは、1文字間違えただけで、システム全体が動かなくなることもあり、かなり神経を使う仕事です。
他にも、変数名を間違えても、その間違いに気づかないこともあり、一見うまく動作しているように見えるのですが、実は違うデータベースに書き込まれていたということが後になって発覚すると、データベースの中身を全て手で一つ一つ直さなければならないということもあり、非常に苦労することになったりします。
このため、大雑把な性格な人には、向いていないとも言われます。
適当なプログラミングをしていると、不具合だらけのシステムができあがってしまったり、後のメンテナンスが大変だったりしますので、相当な神経を使って、丁寧かつ迅速にプログラミングをするという繊細さが必要になります。
■忍耐力
プログラマーというのは、損な職業で、どんなに苦労して素晴らしいシステムを完成させても、クライアントにとっては、動くのが当たり前であり、褒められることはないのに、ちょっと不具合があっただけで、ボロクソに文句を言われるというが一般的です。
このため、クライアント対応への忍耐力も必要となります。
どんなに厳しい言葉で言われても、不具合があったのは、自分に責任があるわけですので、大人しく修正対応するしかありません。
この場合は、もしクライアントが不具合を発見してくれなかったら、後でその不具合のせいで大変なことになっていたかもしれないと前向きとらえ、不具合を見つけてくれたクライアントに感謝して対応するようにしなければなりません。
他にも、クライアントが大手になればなるほど、プログラマーを奴隷のような扱いをしてきます。
無理難題な納期であっても、お金を払っているんだから、とにかくやれ、という言い方をしてきます。
もちろん、全ての大手企業がそのようなやり方ではないですが、私の経験上、ほとんどの大手企業で厳しい対応を要求されます。
もっとも、大手企業としても、お客様や他の部署や関連製品、広告など、様々な要因があってそのような要求になってしまうのかと思いますが、対応する側としては、人数や管理体制を整えて覚悟の上で対応する必要があります。
私は独立して、大手企業の仕事はなるべく断るようにしているため、このような苦しみからはだいぶ解放されましたが、会社員の場合は、こういったことに耐えられるような忍耐力が必要となります。
■精神力
他にも精神力があった方が良いです。
先ほども書きましたが、突然の不具合報告で、寝てる時であっても、休日であっても、不具合対応をやらされることがあります。
出勤時まで放っておいても良い場合もありますが、例えばオンラインショッピングのサイトなどで、システムが止まってしまうと、クライアントにとっては、その間の売上がなくなるわけであり、損害が発生してしまいます。
この場合は、早く修正しないと、後の損害賠償請求額がどんどん上がってしまうことになり、休日であっても対応せざるを得ない場合があるのです。
こういった事態に対応できる精神力もまた必要になるということです。
■良い面
様々な能力が必要であることを書いてきて、プログラマーを目指している方は、うんざりしてしまったかもしれませんが、プログラマーの良い面ももちろんあります。
まず、プログラミング自体が楽しいということです。
いかに効率的に処理できるかを設計し、その通りに動作させた時の快感は何とも言えないものがありますし、プログラムを書いている時も楽しかったりします。
もし、プログラミング自体が苦痛だということであれば、向いていないと思われますので、別の職業を検討した方が良いかもしれません。
また、頭脳労働なので、頭が良くなりやすいですし、指も使うので、歳をとっても続けていれば認知症にはなりにくいという面もあります。
そして、プログラマーというのは、手に職を持つことになるということです。
私も独立して、プログラマーをやっていますが、やはり人には簡単にマネができない職種であり、需要も多いですし、仕事に困ることは今のところはありません。
どの業界であっても、システム化、IT化は必要であり、どんなお店もホームページを持っているような時代です。
スマートフォン向けのホームページやアプリの開発、人工知能を利用してのシステム開発などもあり、まだまだ伸びる業界ですので、この分野で手に職を持つというのは、将来的にも安心な面があります。
将来プログラマーになりたいという方は、上記のような様々な能力が必要とされるという認識をした上で、がんばって挑戦していただきたいと思います。