Photo by TMAB2003
長田です。健康オタクエンジニアです。
SNSを眺めていると、「どうやったらプログラミングできるようになりますか?」「初めてプログラミングする場合、どの言語を選んだらいいですか?」といった質問を見かけることがあります。
最適な学習法を知りたいという発想は「プログラミングは一生懸命勉強して身につけるもの」という認識があるから生まれるのだと思いますが、私はプログラミングを「一生懸命勉強して身につけよう」と考えたことはありません。
というのも私の中にはまず、「こういうものを作りたい」という思いがあって、「じゃあそれを実現するためには何ができればいいのだろう」という発想をしているからです。
そもそもプログラミング=勉強と思っていると、途中で嫌になったり飽きたりすることもありそうですよね。だから今回は、初めてのプログラミングでも「『何を作りたいか』から出発するのでも全然あり!」っていうのをお伝えしたいと思います。
もちろん入門講座やテキストを順を追って学んでいくことを否定するわけではないので、いちエンジニアの意見として聞いてもらえるとうれしいです。
ちなみに私はこのへんの健康記事を書いているエンジニアです。
プログラミングは「勉強」なのか
勉強っていうのは学校の授業や宿題とか、社会人になってからだと資格の勉強とかが当てはまりますかね。
プログラミングを勉強と思っていると、「初めてのプログラミング言語はC言語をやるべきらしい」とか「今はPythonがはやっているからいいらしい」とかの情報を見て言語を選んで、「1.プログラミングとは何か?、2.四則演算を学ぼう、3.ループ文を書こう、4.条件分岐を書こう……」のように順を追って学んでいくことになると思います。
私は情報系の大学を出ていますが、そのときから「プログラミングを勉強して身につけよう」といった意識はなかったです。中高生のころに黒歴史Webサイトを色々作っていて「パソコンでモノづくりおもしれぇえ!」ってなっていたので、情報系の大学に行こうと思ったのも「パソコンでモノを作るための手札を増やそう!」「もっとアレコレ作れるように道具をGETしよう!」くらいの感覚でした。
当時、大学に併設されていた、24時間365日パソコンを触れる演習室に泊まり込んでパソコンをいじりまくっていました。その時間は「遊び」に近くて、楽しくて仕方なかったです。
だから「これからプログラミングを始めるぞ!」とせっかく興味を持った人の多くが、プログラミングを学校の勉強みたく捉えていて、モノを作る面白さ・楽しさを知らないまま「難しいしつまんないから挫折してしまった」ってなるのはもったいないなと感じることがあります。
そうなってしまうくらいなら、初めてのプログラミングだろうとなんだろうと「こういうサービスを作りたい!」「自分も面白いアプリを生み出したい!」っていうのをあらかじめ持っておいて、いきなりそれを作るのに取り掛かってみてもいいんじゃないですかね?
もちろん、プログラミングに関する知識が豊富なほうがいいのは間違いないです。たとえば「変数とは」「クラスとは」「綺麗なコードとは」「アルゴリズムとは」などなど挙げたらきりがありません。ただ、そのあたりを学ぶのは、「やっぱプログラミングでモノつくるの楽しい!」というモノづくり精神をしっかり育て上げたあとでもいいと個人的には思っています(実際私がそうでしたし)。
モノづくり精神がしっかり育っていれば、あとで知識を吸収するときも、「この知識を使えばアレに応用できるのでは?」とか「この知識があればもっと楽にアレを作れるんだ!」とかに結びついて、あんなに楽しくなかった「勉強」が楽しい「遊び」に変わるのです。
「作りたいもの」から出発すると何が良いか
習得するべきものがある程度絞られる
さっきC言語とPythonを例に出しましたが、こういうものを作りたいならこの言語っていうのがある程度は決まってきます。トレンドもありますし。
たとえばですけど、「初めて学ぶ言語はC言語であるべきなのだ」という考えだけでC言語に取り掛かって難しくて挫折ってなると悲しいので、「まず何を作りたいか?」を考えて「Webサービス作りたい」となったら言語はJavaScriptかPHPを選んでやったほうが目的に合っています。
他にも「毎日天気予報をTwitterにリプライしてくれるbotを作りたい」とか「自分が描いたイラストを使ってソシャゲ作ってみたい」とか…なんでもいいですが、作りたいもの(目的)が決まると今何を習得すべきかを明確にできます。
ただ、初心者の方はそもそもやりたいことを実現するために何を選んだらいいか分からんっていう状態ですよね。そのときはできるだけ楽そうなものを選びましょう。
たぶん先人たちの中には「今は大変だけど、のちのち必要だからやるべき」「プロのエンジニアになるなら習得しておくべき」とか言って難しいものを勧めてくる人もいると思います。きっと彼らに悪気はないんですがいったん無視しておいても構いません。
極論ですけど、WebサービスってJavaScriptとPHPがあればほとんど作れるので、最初から無理してフレームワークと呼ばれるモノとかには触れなくても大丈夫です。
はやっている言語でもすぐ廃れる可能性もありますし、大型アップデートが入って学び直さないといけなくなるので、最初の段階で「学ぶのに最適な言語」を追求するのはそこまでいいことではありません。「これなら私にもできそう」「面白そう」と思ったのを選んで、さっさと作っちゃいましょう。
もしやってみて厳しそうだと感じたなら、選びなおしてもいいですしね。そうなったとしても「何を学ぼう」って悩んで手が止まってる状態よりは全然いいはずです。
自分で調べる力がつく
今エンジニアという職に就いている人も業務に必要なことを全部頭に入れているわけではなく、書籍で調べたりWebで検索したりして仕事を進めています。私も日々ググってます。
たとえば「オセロの対戦ができるWebサービスを作りたい」と考えた時に、「Webサービス 作り方」とググってもプログラミングの参考になるWebサイトはなかなか出てきません。そこで「プログラミング オセロ Web 作り方」という風にキーワードを工夫すると、より精度の高い検索結果になるでしょう。
もしくは、「Webサービス 作り方」の検索結果を見ることで、「Web上でモノを作るにはJavaScriptを使うらしい」ということが分かれば、「JavaScript オセロ 作り方」でドンピシャな説明がされているWebページがヒットするでしょう。
このように「何も知らない状態で、目的ベースでググる」という能力を駆使することで、「勉強」という過程を完全にすっ飛ばしてモノづくりに入れるのです。
ちなみに弊社はpaizaラーニングというプログラミング学習サービスを運営しています。このpaizaラーニングではJavaやPHP、Pythonなど需要や人気のある主要言語・周辺技術を中心に学習講座を作っています。なので、講座一覧を眺めるだけでも、ググるときの参考になるかもしれません。
さらに、paizaラーニングの講座一覧には「Webアプリケーションを作りたい」というカテゴリがあるので、Webサービスを作るための言語を選ぶなら、そのカテゴリの中から1個「えいやっ」って選ぶのもありだと思います。
余談ですが、ググる能力はプログラミング以外にもいろいろ応用できます。こんな記事も書いてるのでよかったら参考にしてください。
自分で何かを作れるようになる
私としては「プログラミングやり始めて間もないですけど、簡単なWebサービス作ってリリースまでしたことあります」って人が応募してきたら「おっ やるやん」って思います。場合によっては「学校で勉強してきましたが、自分でサービスを作ったことはないです」という人よりも光って見えることもあります。
作ったものはポートフォリオとして見せられる状態にしておくとよりいいですね。就活や転職の面接では、「作ったことがあります!」という言葉だけよりも実際に作ったものやコードが評価されるので。ポートフォリオについて詳しくはこちら
また、paizaラーニングでは、「ポートフォリオ制作」のレッスンを全編無料で公開しているのでそちらも参考にしてみてください。
あと、世の中には、すでにコンピュータサイエンスに関して豊富な知識を持ち、休日もコンピュータサイエンス関連の本を読んだり勉強会に登壇したりしている猛者がゴロゴロしています。そんな人たちに「今からプログラミングを学ぼうと思う人」が真っ向から打ち勝つのはかなり厳しい道です。
ただし、そんな人たちでも「自分でサービスを考えて、作って、リリースまで完遂させる」というスキルは持っていない場合があります。「自分で何かを作れるスキル」を持っていると、そういう猛者たちにも十分に打ち勝てる舞台があるわけです。
個人的な意見ですが、エンジニア初心者が読むべき本と言われている「リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)」もある程度自分で手を動かせるようになってから読んだほうが学びがあると思っています。「動かない綺麗なコード」よりも「動くクソコード」のほうが価値があるので。
確かに最初から綺麗な書き方を知っていればいいこともあると思いますけど、プログラミング学習を始めた直後とか…タイミングによってはあんまり身にならないかもしれません。とりあえず読んであとでもう1回読んでもいいですけどね。
モチベーションが維持できる
これ意外に大事なことです。最初は自分が作りたいと思ってるものが影も形もないところからスタートして、ちょっとずつできあがってきて、それらしい形にできて、最後に公開するっていう過程は大変ですけど、楽しいことも多いんでそのたびにモチベーションが高まります。
また、別に大層なものを作らなくても、「作ってみました!」って公開してみるといろんな人から意見をもらえる可能性もあります。「もっとこうだったらいいのになぁ」とか言ってもらえたら大成功です。次はそれを実装してみましょう。
それでも1つのことに向かってずーっと考えてると飽きることもあるので、そんなときはpaizaのスキルチェックやプログラミングゲームをやって気分転換してみてください。
まとめ
プログラミング初心者の方へ、「作りたいもの」を実現させるために「何ができないといけないか」という発想でプログラミングをやるといいよというのをお伝えしてきました。
もしエンジニアになりたくてプログラミングやり始めたけど、学校の勉強みたいでつらいなと思ってる人は今回書いたやり方にトライしてみてください。
それで何かアプリやサービスを作ることができて、しかも楽しかったなって思ったら、ぜひエンジニアを目指してください。
paizaが運営する「EN:TRY」は、若手・未経験者向けのエンジニア転職サービスです。
開発経験がない人・少ない人でも応募できる若手チャレンジ求人を中心に掲載しています。スキルチェック問題を解いて、スコアが一定基準を超えれば、事前の書類選考なしで複数求人へ応募できます。
詳しくはこちら
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら