プログラミングの勉強を始めたけどツラい・・・「プログラマーは一生勉強だ!」なんて言われたけどホントなの?
と聞かれることが多いので、今日は「プログラマーは一生勉強が必要なのか?」について書いていこうと思います。
プログラマーになっても勉強しつづけないといけないの?
勉強は嫌いですか?
プログラマーは本当に勉強し続けることが必要なのか?と聞かれればその答えは「はい」一択です。
ではなぜプログラマーという職業が一生勉強が必要だと言われるのかを解説していきます。
技術は次々と進化している
プログラミング自体の歴史は古く1800年代からあると言われています。
近代は1970年前後に登場した世界初のパソコン(諸説あり)と共に凄まじいスピードで進化しているように感じます。
さすがに50年近く前のことを実際にみているわけではないのでお伝えできませんが、私が技術者として仕事を始めた頃からのことを振り返りながらどのようにして技術が進んでいるのかをお伝えしたいと思います。
ローカルアプリ全盛期
30~40年前の1980年代アプリケーションの主流はネイティブアプリ、つまりパソコン上で動作するものでした。
ローカルのパソコンにアプリケーションをインストールし、ネットワーク上のデータベースにアクセスして動く。スマホやタブレットもない時代。OSですらフロッピーディスクでインストールしていたんです。
この頃の言語の主流はC言語やCOBOLでした。VBも新興勢力だったんです。
銀行のシステムもほとんどがCOBOLで書かれていたそうです。(これは先輩から聞いた話です)
また、今の銀行のシステムの奥底には何層にもなったCOBOLのシステムが動いていて、このシステムはもう誰も触れない。なんて都市伝説もまことしやかに伝えられています(たぶん冗談だと思いますよ。)
これが経った30年前です。
スマホやタブレットは私たちの世界を大きく進化させました。「ググる」という言葉が定着したように、私たちは当時のデスクトップパソコンよりも高性能で手のひらサイズのスマホを持ち歩いています。
いつでもどこでもインターネットに繋がって、なんでもネット上で完結する。こんな世界が早く実現すればいいのに。と心待ちにしていたころを思い出します。
さまざまなWebアプリケーション用の言語が生まれた時代
1990年~2000年代はJavaやC#が出てきたことで大きくプログラミング業界が動いた時期だと感じています。
実はこの時代にPythonやRubyも生まれています。ですが、注目されるのはもう少し後の時代です。
今もしかしたら皆さんが苦しめられているかもしれないオブジェクト指向やデザインパターンなどの概念が取り入れられるようになり、まだスタートラインに立ったばかりの私も最先端について行きたいと、海外の書籍や公式ドキュメント、英語のサイトを必死で読み漁りました。
この頃はまだガラケー向けのゲームがJavaやC言語やC++で書かれていた時代です。
IT業界は【キツイ、帰れない、給料安い、気が狂う】の4Kなどと揶揄され、世の中の人たちからはパソコンに向かってぶつぶつ言う変わったオタク達という認識でしかありません。
Webのインフラもどんどん整ってくるにしたがってこれまでのローカルアプリに代わって、Webアプリケーションが支持されはじめます。ローカルアプリは、不具合修正やバージョンアップのたびにすべてのパソコンの更新が必要になりますが、WebアプリはWebサーバーのシステムを修正すれば良い。という運用の低コスト化が実現できるから。という理由でした。
(結局開発に莫大な金額がかかりますけどね)
企業の基幹システムなどの大型システムがどんどんWebアプリ化されるにしたがって徐々に各言語のフレームワークやライブラリも充実してきます。
システムは小型化へ
2010年代、プロジェクトの立ち上がりの速いPythonやRubyが支持されるようになってきます。データベースのORマッパーもこの頃から伸び始めたように感じます。
クラウドサーバーの利用を始める企業もこの頃から増えてきました。
私自身もさまざまな案件に携わりながら新しい技術の習得やパフォーマンス検証をしては、今度はこれを取り入れてほしいと上司に掛け合うも却下される日々でした。
この頃にはガラケーがスマホに置き換わり、スマホアプリ用の言語も台頭してきます。私自身もiOS用のObjective-Cにも取り組んでみましたが、これまでのWebアプリとは勝手が違い、この時代に一度挫折しています。
近年の技術
そして、2020年代。今ではWebアプリ、スマホアプリ、ローカルアプリの3つを1つの言語で作れてしまうというFlutterも正式リリースされました。(3つのアプリ対応の正式リリースは2022年)
これからもどんどん技術は進化します。なぜなら、人間は手間が嫌いだからです。
いかにコストを下げることができるのか。に応えるためにプログラミング言語やIT技術は進化し続けます。
数年前まで量子コンピュータは手の届かない研究者だけが使用できるものでした。ですが、2022年の現在ではAWSなどのクラウドサーバーで一般人の私たちでも量子コンピュータが使えるようになっているのです。
そして今後
この技術が進むことでグッとまた何か技術が伸びていくのか?はたまた新しい技術が生まれてくるのか。まだまだ2020年代は始まったばかりですからわかりませんが、そろそろ量子コンピュータについても学んでみないと・・・と焦っています。
技術者として30年近くシステム開発に携わっている私ですが、こうして日々様々なことを学んでいます。
IT業界だけでなくても技術はどんどん進化します。しかし、その進化を支えているのは実はIT業界なのです。だからこそこの業界の進化のスピードは凄まじいものがあります。
0⇒1が一番厳しい
こうして私は1990年代からIT業界に身を投じ技術の進化を目の当たりにしてきましたが、思えばラッキーだったのかもしれません。
1990年代と言えばまだまだインフラもパソコンの能力も乏しく、プログラムでできることは限られていました
世界の潮流が変わっていくその中にいたからこそ、ひとつひとつをリアルタイムで身につけることができた私は時代の流れの速さに必死で食らいつき、毎日泣きながら勉強していました。リアルタイムだったからこそゆっくりと技術の進化と共に歩み学べたことはありがたいことだったなと改めて思います。
今からプログラミングを学ぶ方にとっては、この30年で進化し続けてきたところから学習する必要があるので、それはそれは大変なことでしょう。
もちろんこれまでに廃れた技術もたくさんありますので現存する技術を学ぶだけですが、それでもレイヤーのように何層にもなった技術を掘り下げるのにはかなりの時間を要します。
だからこそ、0⇒1の技術を身につけるのはとても長い時間を要し我慢を強いられるでしょう。
積み上げても積み上げてもまだ勉強するのか。と思うことも多いと思います。
ただ、勘違いしないでいただきたいのは、私もこれまでのキャリアの中で「やっと時代に追いついた」と思ったことは1度としてありません。
学んでも学んでも気づくと新しい技術が話題を呼んでいる。正直「また勉強しなければいけないのか。」と思ったこともあります。いや、今でもそう思っています(笑)
積み上げたキャリアはゼロにはならない
新しい技術はもちろんこれまでの常識が通用しないこともたくさんあります。
開発環境が大きく変わっていたりしてハテナがいっぱいになることもあります。
Webアプリケーションエンジニアとして働いてきた私は、Objective-Cで挫折したり、Flutterで挫折したりととにかく違うデバイスでの躓きが多かったですね。
それでも最近はようやくFlutterを覚えて小さなアプリを作れる程度にまではなりました。挫折⇒放置⇒勉強再開 のスパイラルを何度も繰り返してここにきてようやく手に入れた技術です。
初めてFlutterに触れてからすでに3年が経過しています。(途中1年近く投げ出していたこともありますが)
今ではFlutterが大好きですし、このフレームワークには大きな将来性を感じています。もちろん私の勘なので全く当たらないかもしれません(笑)
まだ習得した!とまではいきませんがそれなりにアプリケーションとしてリリースできる程度のものを作ることができるようになるまで恐らくトータルで3か月程度はかかっているはずです。
初心者と異なっているのはベースになる部分があることです。プログラミングは環境や振る舞いが変わっても基礎になる部分が言語によって大きく変わることはありません。
0⇒1とした技術はゼロにはならないので、足りない部分を補っていく。という感覚でしょうか。
プログラミングの基本はだいたい同じ
プログラミング言語の基本はだいたい同じです。
Javaが書ければ、C#もRubyもPythonもPHPもリファレンスを頼りに何とか書くことはできます。
足りないのは環境設定やその言語での経験値です。そういったところを補いながら学習することでひとつひとつ身につけていけます。
ベースになる基礎があるので、習得にそれほど多くの時間はかからないでしょう。
1つの言語をしっかりと身につける
プログラミングを使用した職業に就くなら1つの言語をしっかりと深堀りしてください。
どんな言語を選ぶにしろ、これまでの近代30~40年の知識と経験が連なっています。それらをひとつひとつきちんと身につけることでしっかりとした土台が出来上がります。
技術は家と同じです。家も土台がぐらぐらしていたら堅牢な家は建ちません。技術も土台が大事です。
現在ではさまざまな言語があるために、あれこれと目移りするかとは思いますが、ぜひ1つの言語に絞って深堀りしてください。
それがなによりも技術習得の近道になります。
私がおすすめするプログラミング技術習得のロードマップはこちらで詳しく解説していますので参考にしてください。
プログラミング技術習得の近道
時間的な近道として私がおすすめしているのは、プログラミングスクールです。
プログラミングスクールでは、基礎をひとつひとつ固めてくれるカリキュラムが用意されています。それらを経験豊富な講師陣やメンターと進めることで、スムーズに身につけることができます。
回り道をしているように見えても、独学で学ぶよりもより深くより早く身につきます。
なぜなら、エラーや不具合などで立ち往生しているときに助けてくれる存在は何にも代えがたい存在です。
プログラミングは90%の人が習得できずに挫折すると言われています。その最大の原因がこのエラーや不具合を独りで解消できない。ということにあると私は考えています。
エラーや不具合があればプログラムは動きませんからね。それを一緒に確認して解消してくれる存在は挫折しない大きな理由になるでしょう。
転職を視野にいれて学習しているのであれば、転職支援や転職保証がついているスクールを選ぶと良いでしょう。
こちらの記事では、私がおすすめするプログラミングスクールを取り上げましたので参考にしてみてください。
最後に
今日は「プログラマーは一生プログラミングを勉強するのか?」をテーマに記事を書いてきました。
答えは「一生勉強しなければなりません!」
ですが、今勉強していて「つらい」と思っているその想いと同じではありません。
0⇒1が一番キツイんです。
どうか挫折せずに頑張ってください。
今回はほとんど私の想い出話になってしまった気もしますが・・・参考になれば幸いです。
ちなみに、思い出話の部分は私の主観ですので、誤りが含まれている可能性があります。
(もし、「これ違うんじゃね?」と思ったときは私にこっそり教えてください。豆腐メンタルなので優しめでお願いします。)
もし、気になることがあれば、私にお答えできることはなんでも回答しますので、Twitter(@onon_noriko)のDMでお気軽に質問してください。
私はこれからもIT業界への転職したい皆さんを応援しつづけています。