今年でフリーランス1年目・WEBエンジニア2年目になりましたクスハラです。
今回は「プログラミングに向いていないかも…orz」となっている方に向けて、そもそもプログラミングに向いているもクソもなくないか?と日頃思っている僕が全力論破してみました。
僕自身、全くの他業界からWordPressのPHPをコピペで開発していたレベルから、ガンガン這い上がってきて、色々な辛い現場・大炎上も経験して、本気で「俺、プログラミングまじで向いてない」と思いながらも、今では月数百万PVものトラフィックを相手に日々開発しています。
そんな僕ですら、「プログラミングに向き不向きとかない」と思っていまして、プログラミングに疲れたデベロッパーに寄り添えたらなと思い筆(ワードプレス)を取りました。
プログラミングに向いてないと悩みまくっていたエンジニア転職したての頃の自分に、まあ悩まんでもいいんじゃね?ということを伝えたいですねー。その感じで書きます。
スポンサードサーチ
ページコンテンツ
プログラミングに向き不向きはないという話
プログラミングはつまるところ問題解決の手段じゃないか
そもそも、プログラミングとはなんでしょうか?
なぜ、こんなにも開発者に予期せぬエラーを与えて苦痛を与えてくるのでしょうか
僕は、Programming(プログラムを書くという行為)は、つまるところ「問題解決」なのではないかと考えます。要するに、誰かが抱えた問題やペイン(苦痛)を取り除くために、プログラムを使って解決するのです。
では、何の問題を解決するのでしょうか?
それは、業界や開発するプロダクトによりますが、例えばわかりやすいところで行くと、例えば最近話題の「BASE」という誰でも簡単にECサイトが立ち上げられるサイトがあります。
従来ではECサイトには多種多様な技術が必要でした。例えば、決済代行企業とのオンラインでの連携や、インスタグラムでの商品出品、ウェブサイトのデザイン作成などなど、ここに書き切れないほどの大量の仕事がECサイトを立ち上げるだけでも必要でした。
しかし、BASEは説明にしたがって項目を埋めるだけで、15分ほどでECサイトで販売スタートできるようにしてくれます。
この時、BASEは従来は一部のITリテラシーがある人にしかできなかったことをBASEによって「誰でもECサイトを立ち上げられるようにする」風に問題解決をしました。
これって単純にすごくないですか?
だってBASEのプログラムがなければ、今開店している数百万ものBASEのECオーナーさんは、コロナ禍で売り上げが減ってもオンラインへ移行できなかったかもしれないんです。
✔︎ ポイント
- プログラミングは問題解決の手段
- プログラミングは、誰かが抱えた問題やペインを解決する
いや、そんな話じゃなくて、単純に自分がエラー解決できないのに周りの人ならすぐに解決できたりしたときに、自分はセンスないな、とか向いてないな、とか思うんですが?
はい、僕も痛いほどその気持ちはわかります。
例えば、4時間もの間頑張ってプログラムと格闘したのに、先輩に聞いてみたら、自分が知らなかった機能を使うことで30分ほどで解決できるのがわかった時とか、本当に「あぁ、俺ってマジでプログラミングの才能ないわなw」と思うもんです。
しかし、それって実はどんなレベルのエンジニアでも、「こんな簡単なこともわからなかったのか、俺」とか、「こんな簡単な文字の打ち間違い(typo)で引っかかってたのか」とか、「Push通知配信基盤をどうやって構築しようか?」とか程度の差こそあれ日々なんらかの問題と格闘しています。
なぜ悩み続けるのでしょうか? それは僕たちエンジニアは「問題解決をすることでお金をもらっている」からだと思います。問題がなければプログラムを書く理由・動機もないですもん。
で、じゃあまだプログラミングに向き・不向きを感じてしまう人と、そんな頭を悩ましながらでも前に進むことのできるエンジニア(≒一人前のエンジニア)にはどう言った違いがあるのでしょうか?
頭がいいからプログラムが書けるとかそんなことも全くないと思う件
例えばですが、全く異なった頭の構造を持っているだとか、IQ120だからできるだとか、ロジカルだからとか、理系・文系だからだとか、言い訳は無限に出てくると思います。
しかし、もしあなたがまだ駆け出しエンジニアの方の場合だと、正直まだまだ頭の良さとか関係ないと思いますし、向き不向きとかも関係ないと思います。
そうではなくて問題解決の質に目を向けてみると、向き/不向きとかではないプログラミングのクリエイティブな側面を楽しめるんじゃないかな、と思います。
少なくともITエンジニアに求められるのは頭の良さや学歴ではなく、成果物であったり問題解決であったりする件
例えばですが、京大とか阪大とか早慶の工学部を出た一般的な感じでの「頭がいい」人だろうが、高専や高卒だけど、圧倒的にプログラミングが好きでやってきた人であろうが、文系出身でプログラム始めた人だろうが、関係ないっす。正直。
出身がどうであれ、大きな問題を解決し、多くの人の役に立つことができるのがプログラミングという分野ですよ。(実際に高専卒のスーパーエンジニアの方は結構いらっしゃいます)練習次第でコントロールできますよ。
AI開発などの高度な数学が要求される分野でもなく、ウェブサービス開発などであれば、頭の良し悪しというよりも経験があればある程度のところまでは、誰でも行けるのがプログラミングではないかと思います。
なので、「俺、向いてないかな..」のその向いてないが高度な技術を使うための基盤がないことを言っているのか、もしくは一般的なプログラミングの文法やエラーの解決などの実務レベルではない段階なのかで、悩みの深さっていうのは結構違うんじゃないかな?と思います。(ちなみに前者の場合はものすごく重い悩みですが、大半の方は後者ではないでしょうか)
プログラミングはマジで初心者には難しいですよ。できないこととか気にしないでOKです
そして、そのプログラミングの入門するときの大変さは、誰しもが経験する道です。なので、そこは本当に大変ですし、無理に自分を追い込んで「向いてないかも…」と思う必要は全くないんじゃないんでしょうか?
それよりも、「今は駆け出しているけど、いずれは大きい問題を解決したい」くらいに思っているだけで大丈夫だと思います。そのためには、プログラミングって数学みたいな分野なので、積み上げるしかないんですよね、それもクッソ地道に。
そのプロセスは辛かったりもしますが、求められる問題解決ができるようになる頃には、自由な働き方ができる強いエンジニアになれるはずです。
プログラミングの向き不向きよりも問題解決の質に着目してみたらどうだろう?
プログラミングを始めたばかりの人でも、HTML/CSSしか書けない人でも、PHPしか書けない人でも、クラウドインフラしか触れない人でも、誰でも問題解決ってできると思います。
習熟度とか関係ないです。納期が厳しいなら別ですが、誰でも何かの問題を解くことができます。
例えば、PHPしか書けない人とHTML/CSSしか書けない人が協力したら、ワードプレスを使ってweb制作をすることができます。この人たちにクラウドインフラが触れる人をいれればウェブサービスだって開発できます。
要するに、プログラムを書けるだけで、なんらかの問題って解決できるんですよ。
例えば、WEB業界でよくあるのが「WEBサービスの売り上げをアップしたい」とか「WEBサイトのスピードを上げたい」とか、「WEBを使ったコストカットをしたい」と言った要望がよく上げられます。
実際に、僕はフリーランスとして働いていると、よく上記のような問題を経営者やPMの方から相談されます。
で、例えばこの辺りって、優先順位及びビジネスにもたらす影響はとても大きいんです。物によって、毎月数百万円規模の削減になるような相談もありました。
この辺って、実はプログラミングをほとんど使わなくても問題解決することができるんですよね。どうやるか。例えばその筋に詳しい人に実現方法を聞いて、あとは知らない要素技術を調べながら、自分で実装して、実際の稼働しているサービスに適用する、とかでしょうか。
プログラミングをやる必要はない、とかそういう意味でもないんですよね。ではなくて、「プログラムを書けないプログラマでも、なんらかの形で問題解決には貢献できる」という話です。
極論ですが、コードとか書けなくても課題解決できるならプログラマってできるんじゃないかな、と思ったりします。
スポンサードサーチ
まとめ:プログラミングは正解 / 不正解を追い求める作業じゃないと思います
すみません、始終ポエム風なトーンで失礼しました。
結局、何が言いたいのかというと、やっぱりプログラミングに向き・不向きを持ち出してしまうのは、「プログラミングには正解/不正解があって、学校の勉強みたいに頭のいい人が強いんだろうな」みたいな先入観があると思っています。
向き不向きとかどうでもよくね? と思うんですよね。だってプログラムの実装方法・解決したことに対して正解 / 不正解とかっていう判断軸がそもそもなくないですか? 「実装してください」と言って下さった方、もしくは仕様が満足すればそれでよくないですか?
「課題解決のできるエンジニアが、今(WEB業界で)圧倒的に求められていて、そのためにはプログラミングの向き・不向きとか関係ないんじゃないかな?」ということを僕は日々思っているのですが、その悩みをITの経営層の方って結構抱えられていて。
プログラムを書くんじゃなくて、「課題解決してくれ〜〜〜!」「会社の課題君らなら解決できるよ〜〜〜」と思っている経営層の方って結構いらっしゃるんですよね現実問題。
自分の得意なことで突き抜けるという攻略方法もあると思います。
プログラムが苦手なんだったらNoCodeで実装することもできるっちゃできますし、もしくはマネージドサービスの知見を圧倒的に深めて、サービスの連関で課題解決をすることもできると思うんです。
今回は、そんな感じでプログラミングに正解・不正解とかなくて、課題解決を追い求めた方がいいんじゃないかな?というお話をさせていただきました。
励みになりますので、ぜひコメントなどお気軽に残してくださいませー!
それでは、また。