みなさん、おはようございます!タカハシ(@ntakahashi0505)です。
こちらの記事は、タカハシが音声メディアVoicyの「スキルアップラジオ」にて放送した内容から、ピックアップしてお届けします!
今回のテーマは、プログラミング上達のための8つの約束です。
なお、以下で実際にお聴きいただくこともできます!
では、よろしくお願いいたします!
プログラミング上達のための8つの約束
プログラミング上達のための8つの約束とは、僕が運営している学習コミュニティ、ノンプログラマーのためのスキルアップ研究会(通称ノンプロ研)の初心者プログラミング講座の事前課題で動画を観ていただいていたり、毎回のオープニングでお話したりしているものです。この約束を守って学習すれば、間違いなくプログラミングが上達しますよというものなんです。
ノンプログラマー向けではありますが、本職プログラマーを志向される方にも適用できますので、みなさんの役に立つかなと思います。
では、8つの約束、それぞれについて詳しく解説していきます。
実務で使う・習慣化する
2つまとめて解説していきます。実務で何かが作れる程度までプログラミングを習得するためには、必要な学習時間が、200~300時間といわれています。
期間としては、毎日1時間ならば半年から1年、毎日2時間やっても3~6ヶ月かかる。毎日学習時間をブロックして継続しないとなかなかものにならない。なので習慣化が必要ということです。
ノンプログラマーの場合、本業が別にあるので業務時間でプログラミングになかなか触れられない。平日だと業務時間前の朝、もしくは仕事が終わって夜、あとは休日を使うという感じになります。
それだと時間の捻出がきついので、できれば、実務ルーチン作業の自動化・効率化をするようなツールにできるだけ早く着手したいわけです。
そのようにして業務時間内に触れるようになると、プログラミングに触れられる時間が一気に増えるので、学習時間の確保がとても楽になります。
さらに実務で使うには、それ以外にも絶大なメリットが2つあります。
まず、仕事に関係させることで自我関与が高まります。自我関与とは、自分への関係が強いということなんですが、学習においては、自我関与が高いほど学習効果が高いといわれています。これによって、実務で使うことで学習効果が高くなるわけです。
もうひとつのメリットは、時間を生み出すことができるということです。実務のルーチンを自動化・効率化できればその分時間が生み出せるわけですよね。
その生み出した時間を他のクリエイティビティの高い仕事に割り当ててもよいし、さらに学習時間を増やしてもよいという選択肢が生まれます。
また学習してスキルが上がれば、別のルーチンも自動化・効率化して、さらにまた時間を生み出すことができる。
こうして、働くの価値を上げ続ける良いスパイラルに入ることができる、というメリットがあります。
構文どおりに書く
プログラミングはルールが決まっていて、正しく書けば、必ず正しく動くようにできています。
ただし、人は正確に覚える、正確に操作するというのは苦手なんです。
私たちは子供のときの学習で、正確に覚えてその記憶をそのまま引っ張り出すというのが良い、と教わってきてしまっているので、そういうクセがついています。
人間のあやふやな記憶に頼って、「確かこれかな?お願い動いて」ってやっちゃうわけです。
ただ、ちょっとでも間違えるとエラーが出ます。
そんな記憶に頼らないで、本とかネットとかを頼りにして、確実に構文どおりに書けばいいのです。
調べて、頼る
これは、Google の人工知能研究部門のルールなんですが、どういうものかというと、
問題が起きた時は
- 最初の15分は自分自身で解決を試みる
- 15分後も解決していなかったら必ず人に聞く
前者を守らないと他人の時間を無駄にし、後者を守らないと自分の時間を無駄にします。
プログラミングをしていてエラーが出たとき、この先どう書いていいかわからない、というとき。自分の頭の中から答えを探そうとして固まってしまうことがあります。
ただ、ちょっと考えてわからないなら、脳みその中に情報が無いということなので、いくら頭を回転させても無駄だったりするんです。
その場合はGoogleなどで検索したり本を見て調べたほうが早い。こういった場合、言語名とエラーメッセージで検索するだけで、けっこう解決します。
15分頑張ってそれでも解決しない場合は、すぐに他者に頼る。多くの人は、他者に頼るのが本当に苦手で、何時間も自分ひとりで頑張ってしまうのすが、それは本当に時間がもったいないと思います。
オープンな場で頼ってくれれば、それを観ている周りの人もその知見を得られるし、頼られた人は教えることで2度学ぶことにもなります。株も上がりますよね。
何より貢献できるというのは幸せなことなので、そういった機会をどんどん提供してあげたらいいと思います。
打ってはいけない
『構文どおりに書く』でお伝えしたとおり、プログラムはちょっとでもスペルを間違えると動かないんですね。スペルはもちろん、ほとんどの言語では、大文字小文字を間違っても駄目です。
慣れないアルファベットや記号をがんばってひとつひとつ手打ちしたりして、どうしても間違ってしまいます。
ではどうするかというと、文明の利器を使って打たないでコードを書くということなんです。
たとえば、プログラミングのエディタには、インテリセンスといって、自動でキーワードを補完してくれたり、次のキーワードを予測して一覧してくれたりする機能があります。なので、そういった機能を使うことで1文字1文字打たなくてもコードを書くことができます。
スニペットツールというものがあり、よく使う構文を登録しておいて、簡単なキー操作で呼び出すこともできます。
これらの機能やツールを使うことで、確実かつ素早くコードを書くことができますので、これらを使いこなしましょう。
構造化データを使う
データの持ち方には、構造化データと非構造化データがあります。
構造化データというのは、データベースなど、コンピュータがデータを操作するのに適した構造で置かれているデータのことをいいます。
Excelやスプレッドシートにデータを置くのであれば、縦横にきれいにデータを敷き詰めたようなテーブルという構造で置くと、構造化データとして扱えます。
非構造化データというのは、書類などのオフィス文書、メール、Webコンテンツなど、特定の構造を持たないデータのことです。仕事上で扱うデータで言うと、圧倒的に非構造化データが多いのではないかと思います。
ノンプログラマーの多くは、データの置き場としてExcelやスプレッドシートを使っていると思うのですが、そのデータの置き方が非構造化データになっていることが多いです。
人にデータを入力してもらうためや、人にデータを見せるために作られていて、つまり人に易しい見た目で置こうとするので、そうすると非構造化データになります。
ただ、それは人には易しいけど、コンピュータでは扱いづらいので、プログラミングしようとするととても複雑なロジックを組まなくてはいけなくなります。
初心者はそのことを知らないので、自分にはプログラミングは難しい、自分にはプログラミングは向いてないと考えがちですが、実はデータの構造がプログラミングからは大層扱いづらいものだったということがよくあります。
まずは、データの置き方が適切なものなのかどうかを確認していただきたいと思います。
読みやすいコードを書く
人が読んで、早く解読できるコードを書こうということです。リーダブルコードなどともいいますね。
初心者のうちは、動かすことに夢中になってコードを書いてしまって、動いたらOK!、あとはコードを見ない、というふうになりがちですが、そうはいかないです。
そのプログラムを運用していって、あるとき不具合が発生するようになった、機能を追加したいというように、コードを確認・改修するタイミングが必ずやってきます。
そのとき、自分が書いたコードであったとしても、読み解くのにものすごく苦労をしてしまうということがよくあります。
そういう悪いコードをどんどん作って、たくさん運用するようになると、雪だるま式に保守メンテナンスで自分を苦しめるようになるわけです。
そうならないように、未来の自分や他人が見たときに、読みやすいコードを書いておこうということが大切です。
逆に読みやすいコードは、別のプログラムを作ろうとしたときにそれを参考にしたり、再利用したりがしやすいので、むしろ資産になるんです。
アウトプット
学習をする際のインプットとアウトプットの適切な比率は、4:6もしくは3:7が良いと言われています。アウトプットの比率を6~7割確保したいということですね。
本職プログラマーのみなさんは、社内で勉強会を開いたり、仲間とコミュニケーションをとったり、教え合ったり、ドキュメンテーションやブログを書いたり、アウトプットの機会がそれなりにあったりします。
ノンプログラマーの場合は、社内でそういった環境や仲間がないことが多いので、本を読む、動画を観るといったインプットに偏りがちです。ただ、それだと6~7割のアウトプットが確保できず、効率が悪くなってしまうんです。
かなり意識してアウトプットの機会を確保しないといけないということになります。
具体的には、Twitterを使って発信する、ブログを書く、社内で勉強会を開催してみる、コミュニティに参加してコミュニケーションをとったり、イベントに参加したり。そういった機会を積極的にとっていくことが必要になってきます。
おさらい
以上、プログラミングのための8つの約束をお伝えしました。
- 実務で使う
- 習慣化する
- 構文どおりに書く
- 調べて、頼る
- 打ってはいけない
- 構造化データを使う
- 読みやすいコードを書く
- アウトプット
8つの約束を、机などに張り出しておくと良いかもですね。
ぜひプログラミングを学ぶときには、意識してみてください。
まとめ
ということで、今日はVoicy「スキルアップラジオ」の放送から「プログラミング上達のための8つの約束」をお届けしました。
タカハシのVoicyの放送はこちらからお聴きいただけます。
チャンネルのフォロー、コメント、SNSでのシェアなどなど、楽しみにお待ちしております。
では、また。