こんにちは。倉内です。
プログラミング学習には、paizaラーニングのようにブラウザ上で動画講座を見るものから、スライドや書籍を読んで学ぶものまでさまざまな学習方法がありますが、実際にコードはあまり書いていないという方もお見かけします。
もちろんきちんとアウトプットするためにまずはインプットが必要というのも分かります。ただ、初心者こそ作法に則ったきれいなコードを書くより「動くコード」を意識してたくさん書く練習をしてほしいんです。
そこで今回は、なぜ自らコードを書くことが大切なのかをお伝えするとともに、アウトプットをたくさんするためのおすすめ学習コンテンツも合わせてご紹介します。
なぜ「きれいに書く」ことにとらわれてしまうのか?
プログラミングには、命名規則だったり、改行位置やインデントなどのフォーマットだったり…コードを書くお作法があることを知っている方も多いと思います。
以前当ブログでも「エンジニアになるならコーディング規約というものを知っておこう」とお伝えしました。
また、2012年発売にもかかわらず、いまだにエンジニアのバイブルとして挙げられることが多い書籍『リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック』を読んだことがある、もしくは読もうと思っている方もいるかもしれません。
たしかに、
- 他の人や半年後・1年後の自分が見ても分かりやすいコードを書く
- 保守性や品質を高めるために作法に則ってコードを書く
といったことはとても大切です。業務でチーム開発をするとなったらなおさらです。
そのため勉強をし始めたばかりの方は「まだきれいなコードを書けないから…」「コーディングの作法を知らないから…」と書くことをためらいます。
もしくは本来は実現したい機能があって、そのために動くコードを書くことが目的なのに、きれいにコードを書くことが優先されてしまいなかなか手が進まないという場合もあるかもしれません。
しかし、おそらくどちらにしても現役エンジニアに聞いたらみんな口をそろえて「むしろ勉強中だからこそ、下手でも汚くてもとにかくたくさんコードを書いたほうがいい!」と言うはずです。
初心者こそ「動くコード」を書くことを意識すべき理由
どうして「とにかくコードを書いたほうがいい」と言うかですが、結論からさきに言うと、プログラミングは自分の手を動かすことでしか身につかないからです。
たとえば、以下はpaizaが提供している「スキルチェック」というサービスで出題されるプログラミング問題の中でもっとも難易度が低いDランクに相当する練習問題(平均解答時間は5分程度)です。解き方は分かりますか?
「気温の変化 」問題文:
昨日と比べて、今日の気温が高いのか低いのかを教えてくれるプログラムを作成したいと思いました。
昨日の気温と今日の気温が入力として与えられるので、気温がどれだけ変化したかを計算して出力してください。---
入力は以下のフォーマットで与えられます。
t1 t2
・t1は昨日の気温
・t2は今日の気温
・t1, t2は0以上の整数---
以下のとおり出力してください。
・昨日より今日の方が暖かければ、+(気温差)
・昨日と今日が同じ気温なら、0
・昨日より今日の方が寒ければ、-(気温差)
おそらくなんらかのプログラミング言語の基本を学んだ人ならこの問題を解くための知識は必ずあります。
上記の問題は条件分岐(if)を使って解く問題ですが、基礎文法の中でも条件分岐(if)は概念だけであれば一瞬で理解できます。「もし●●という条件だったら××という処理をさせる」なんてなんだか簡単そうですよね。
しかし学習動画を見たり本を読んだりしていただけでは、このレベルの問題でもどう解いたらいいのか、条件分岐処理をどう書いたらいいのか分からないことは珍しくありません。
つまり「コードを書かない」ではなく、「コードを書けない」ことに気づくのです。
ちなみに上記問題はPython3とRubyの解答コード例を参照できます。気になる方は挑戦して確かめてみてください。レベルアップ問題集「Dランク早解きセット」はこちら
動かないきれいなコードは動くコードに勝ることはない
私は大学で情報工学を専攻していましたが、プログラミングはそれほど得意なほうではありませんでした。
それどころか同級生とグループワークで課題をするときに自分の書いたコードが冗長で汚いと思われるのが恥ずかしくて、得意な人に任せるなどして書くということから逃げていた気がします。
しかしあるときものすごく実装が早い友人のコードを見るとそこまで整然としているわけでもなく、命名もちょっと適当だったり…でもそれは仕様通りに動くものでした。任されたささいな機能さえ満足に実装できない私とは雲泥の差がありました。
今思えば、大学時代なんていくらでも間違ってもいいし、むしろプログラミングが得意な友人からアドバイスをもらい放題なのに何をそんなにためらっていたのかと思います。
エンジニアとして働きたいという目標を持ってプログラミング学習をされている方は特に、めちゃくちゃでもいいので今はとにかく手を動かしてたくさんコードを書いてみてください。そして自分が書いたコードと他の人が書いたコードとを見比べて、「もっといい書き方ができそうだな」といった気づきを得てください。
もちろん動く綺麗なコードがよいことは言うまでもありません。しかし動かないコードに意味はありません。どれだけ冗長だろうが、他人が見たら解読できないコードだろうが、まずは期待したとおりに動く・正しい実行結果が導き出せるプログラムに価値があると思います。
そして実際に書いてみなければ、自分が作法に則ったコードが書けるかどうかも分からないのです。
アウトプット力を鍛える方法
ここまでとにかくコードを書いてみようとお伝えしてきました。ただ、そうは言ってもプログラミング学習を始めたばかりの方が自分で作りたいものを考えて、仕様を考えて…というのをいきなりやるのは難しいと思います。
paizaではインプットだけでなくアウトプットをたくさんしていただけるコンテンツをご用意していますので、活用法とともにいくつか紹介します。
paizaラーニングの動画講座
paizaラーニングはプログラミングを動画で学ぶ形式ですが、下図のような構成になっているため同じブラウザ上でコードを書いて実行できます。
動画はプロの声優さんによる解説つきで、学習した内容をすぐ演習課題で復習できるのが特徴です。
課題を解くのもよいですが、動画に出てくるコードをそのままエディタに写すのもよい勉強法だと思います。(いわゆる「写経」というやつです)
講座は主要プログラミング言語の基本を学べる「体験編」や「入門編」から、Webサービスやサイトを作成する実践的な講座まで多数公開しています。講座一覧はこちら
レベルアップ問題集
さきほども取り上げた練習問題集「レベルアップ問題集」では、いろいろな種類・レベルのプログラミング問題に取り組んでいただくことが可能です。
特徴として、難易度が低い問題から順に解いていくことで自分にとって難しい問題まで段階的に理解を深めて、最終的には自力で解けるようになることを目指した作りになっています。
こちらは解答コード例がある問題もありますので解けなかったときは参照して、コピペするのではなく実際に自分でコードを書いてみて動かすとよいでしょう。
もしコードを書くのが苦痛だと感じたら
エンジニアと言ってもコードを書くだけが仕事ではありませんし、開発系以外にもさまざまな職種が存在します。ただ、未経験から中途転職でIT業界に入ろうと思うと、大抵の場合は比較的間口の広い開発系のエンジニアを目指す方が多いと思います。
ここまでお伝えしてきた「とにかくコードを書く」ことがもしあまりおもしろくない、それどころか分からないことを調べながらプログラミングをするのがつらいと感じるのであれば、開発系のエンジニアへの転職はもう一度考え直してみる必要があるかもしれません。
初心者のうちからコードを書くことをおすすめするのは、自分が本当にITエンジニアに転職して生き生きと働けるかというのを判断するひとつの指標にもなるからです。
また、経済状況がよかったころは未経験でも採用し、エンジニアとして働けるように育てる余裕のある企業もありました。しかし、今は未経験から希望通りのエンジニア転職をするには相応の努力が必要です。
ちょっと厳しいことを言ってしまいましたが、コードを書いたりIT技術を学んだりするのが楽しいと感じられ、これを仕事にしたいという意志を固くした方はぜひがんばっていただきたいと思います。
まとめ
ここまで、きれいにコードを書くことにこだわらず、とにかく動くコードを書くことを意識してほしいとお伝えしてきました。
お作法に則ってきれいなコードを書きたいと思う意識はエンジニアになるにあたってとても大切ですし、業務でチーム開発をする上では欠かせないことでもあります。
ただ、まだプログラミングの勉強を始めたばかりでそういったことにとらわれてコードを書いていないのであれば少し考え方を変えてみてもいいかなと思います。
今回紹介した学習コンテンツ以外にも無料のWebサービスや問題集も載っている参考書など、多くの選択肢からご自分に合うものを見つけてみてください。
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら