現在も加速度的にエンジニア・プログラマーの人口が増加している一方で、これから目指そうと考えている人もたくさんいらっしゃると思います。
本記事では、エンジニアである筆者も含め多くのエンジニアが語る、プログラミングを始める前に知りたかったことを3つほどご紹介していこうと思います。
プログラミングに特別な才能が必要がない
多くの人が未だに勘違いしている可能性がありますが、プログラミングに特別な才能なんて必要がないということです。
なぜか世間では一部の優秀な人にしかプログラミングはできないだとかささやかれる場面もありますが、決してそんなことはありません。
本当に理系も文系も関係がない分野です。
筆者は、大学生の時にプログラミングが必修科目として存在していました。
しかし、大学生になるまでまともにPCに触れたことすらなく、人差し指でしかキーボードを叩くことができませんでした。
そんなレベルの筆者でしたから、当然大学1年生から2年生になるまではプログラミングの必修科目が辛くて、理解より形で覚えることでなんとか単位を取得してたと思います。
大学指定の参考書や一般的な書籍で学習しても、なかなかプログラミングを理解できなかった覚えがあります。
しかし筆者の場合、大学卒業のために必修科目であるプログラミング科目をクリアしなければならない条件があったため、がむしゃらに参考書や書籍に記載されているコードをひたすら書き殴りながら、コメントでコードの意味を自分で確かめながら記載していました。
すると、気づけばプログラマーとして就活するまでになるわけです。
何事も習得するまでに膨大な時間がかかるということです。
大人になると、効率ばかりを追い求めてしまうことと、できないことを足りない時間のせいにしてしまうため、才能という言葉に逃げるだけです。
筆者からすれば、そもそも大学4年間を費やしてようやくプログラマーになるための基礎・応用・発展的知識を獲得し、働き出すことができる状態になっていたので、数ヶ月・半年で『自分には向いていない。。』と嘆かれても困ります。
そして、プログラミングに向き合った多く人は、本来必要となるプログラミング学習時間の基準に到達することなく、挫折してしまいます。
そのため、特別な才能が必要なわけではなく、プログラミング学習時間の確保が重要ということになります。
腰を据えてじっくり取り組んでいきましょう。
プログラミングは強力なビジネススキル
最近では、プログラミングの認知も高まり、さほど過小評価を受けることはなくなりましたが、まだまだ地味なイメージを持たれる人がいます。
ただ、おそらく世代間の違いで若年層はエンジニアの魅力にしっかり気づけているので、これから認識の違いは逆転し、プログラミングスキルの価値は高まっていくことだと思います。
その理由としては、プログラミングが現代において圧倒的に需要の高いスキルだからです。
別記事でも詳しく解説していますが、2030年にはエンジニアが約79万人不足すると経済産業省が発表しています。
エンジニアという人材が不足した場合、そのエンジニア職についている人であれば職には困ることはないでしょうし、先々で独立を考えている人にとっても仕事を得やすい状況になることが予想されます。
筆者自身、エンジニア職で現在においても仕事が無くなる経験をしたことはありません。
それは会社員時代であっても独立後であっても変わりません。
これは個人的な見解ではありますが、一定のレベルでプログラミングを仕事で利用するようになるためには、最低でも1年はかかるかなという印象です。
そのため、プログラミングスキルといっても業務レベルの習得は簡単ではありません。
ただ、それだけの時間と労力をかけたとしてもそれによって得ることができたプログラミングスキルは一生かけてあなたのリターンをもたらすものだと認識しておいてください。
夢中になれるプロジェクトを見つけること
おそらく筆者だけに限らず、多くのエンジニアが一番成長することができたときはいつかと聞かれたら、間違いなく各エンジニアがソフトウェア開発関連のプロジェクトになると思います。
筆者であれば、当時入社した企業では電話関連のiPhoneアプリ開発に携わったことです。
入社した企業は、とてもありがたかったのが自社開発していたアプリケーションが存在していたことです。
このプロジェクトに参加できたことで、チーム開発の意義や各エンジニアに求められるスキルセット、業務レベルの成長、業務の進め方、チームにおける報連相の取り決め、クライアントからのヒアリング方法などなど、あらゆる面で成長することができました。
そして、ソフトウェアという無形なものであっても、大事なものづくりの1から10までを身につけることができました。
このプロジェクトのおかげで、当時人気を獲得し始めたAI事業にも参画することができ、一部の機能を任されたり、エンジニアとしての動きをしっかり養うことができたことを強く覚えています。
その頃は、本当に寝食忘れてプログラミングに没頭していました。
そして、開発という仕事が心底面白いと思えました。
大企業や下請けの企業でシステム開発をする場合、多くの仕事は一部を任せる形でチーム開発をすることになります。
これは仕方がないことですが、製品・サービスの企画段階から参画し、それらを作り出すために全行程に携われるようなプロジェクトであれば、エンジニアのスキルは異常な速度で成長します。
こういった経験から、人が最も成長するタイミングは何かに夢中になり寝食を忘れるくらい没頭できる瞬間だと学びました。
当然、没頭している最中は、本人は努力をしているという自覚など微塵もなく、長時間集中して取り組んでいるため、周囲の苦しみながら努力している人たちに負けることがありません。
もしも、これからエンジニアを目指す人であれば、圧倒的成長を考えた場合、あなたがむちゅになれるプロジェクトを探してみてください。
そして、引くほどプログラミングに没頭してみてください。
没頭できるプロジェクトに見つけ方
では、どうすれば没頭できるプロジェクトが見つけられるかについてです。
没頭できないプロジェクトは、どうしても上司の人が決めた一部の業務しかやることができない状態となり、縦割りな仕事の振り方しかできません。
もちろん、新卒であったりエンジニア転職する人がいきなり見分け方を理解したり、必ず没頭できるプロジェクトに参画できるかは難しいです。
ですが、ベンチャー企業であったり、エンジニアの人数に制限(少人数制)を設けている会社であれば、比較的にサービスを一貫して携われる環境になっています。
Twitterやブログでのお問い合わせでも頂くよくある質問で、『フロントエンドエンジニアとバックエンドエンジニアはどちらが良いですか?』という内容を質問されます。
こちらの質問に対する回答としては、どちらも経験できる方が良いと思います。
これが個人のエンジニアとして最も成長できると思います。
会社によっては、サービスを開発する中でどうしてもフロントエンドとバックエンドに分けて業務を進行することになります。
しかし、その分けられた業務の一部に参画したからといって、その業務のレベルが高まることとエンジニアとしてのスキルが高まることはイコールではありません。
会社内のサービスを作りやすくするために分けられているだけであって、これではフルスタックエンジニアを目指すことはできません。
本当にエンジニアとして成長し続けるためには、やはり浅い深いに限らず、すべての工程に触れるということになると思います。
まとめ
いかがでしたでしょうか?
今回は、現役エンジニアがプログラミングを始める前に知りたかったことを3つご紹介させていただきました。
・プログラミングに特別な才能は必要ない
・プログラミングは強力なビジネススキル
・夢中になれるプロジェクトを見つけること
これらを意識して、今後のプログラミング学習あるいはエンジニアを目指すための参考にしていただければと思います。