ysaz (ImanazaS) blog

最近はデータ分析や機械学習が中心。たまに音楽や書評。

プログラミングを学ぶ上で心がけるべきこと

多少入門書を読んだり、CourseraをはじめとするMOOC (Massive Open Online Course) を履修したりして学んではきたが、ここでは、プログラミング(python)初心者として読んでよかった本・受講してよかったコースの紹介ではなく、僕が重要だと感じた心構えや意識といった観点から、記事を綴っていきたい。

共に学ぶ仲間の存在を感じること

プログラミングに限らず何か新しいことを始める上で重要だと思うのは、自分と似たような立場で同じように取り組んでいる人の存在を知り、刺激を受けることだと思う。自分の場合は大学院の講義がそれにあたり、宿題の締切があるからきちんと取り組むという姿勢が保てたし、わからないことがあれば経験値の高い他の学生や教授に質問して、教えてもらっていた。

ただし、こういうふうに書くと、教室における対面授業が最も有効で手っ取り早い手段のようにも聞こえるが、必ずしもそうではない。なぜなら、自分が受講した上記の講義は、機械学習の理論的な部分が主であり、Rとpythonの使い方については触りの部分を少しやっただけであったため、講義を最後まで履修することには価値があるが、そこで満足してそこから継続して学びを続けたり発展的な学習をしない限り、本当の意味での知識やスキルは定着していかないのだと思う。
逆にMOOCなどのオンライン講座を受講する形であっても、Forumを活用して他の受講者に質問したり回答を返したりすることで仲間の存在を感じることができるし、その気になれば形式は何だっていいと思う。ちなみにオンライン講座の利点として僕が感じていることの中には、対面と違って期中での受講開始が可能であることや、講義を受けるにあたって場所や時間を選ばないこと、最新・最先端の知識を学べることなどがある。

実際に手を動かしてみること

Googleで「python 入門」と検索すると非常にたくさんの結果が返って来て、pythonの使い方を紹介してくださっている様々なBlogや個人ページにたどり着くことができる。しかもその多くを無料で閲覧することができるため、非常にありがたいことに、情報は取ろうと思えばいくらでも簡単に入手可能である。しかし、与えられた情報をただ漠然と眺めていても何も身につかない。もちろん優れたコードを読み参考にすることで、より簡潔で美しいコードが書けるようになるかもしれないが、それ以前に重要なのは、人の書いたコードを真似るだけでもいいから、実際にコードを自分で書いてみて、コンピュータ上で動かし、何が起こるのかを自分の目で確かめることだ。これはスポーツをすることや楽器を演奏することと同じで、よほど特異な才能でもない限り、ギターの譜面をじっと眺めただけで、初心者がいきなりギターを演奏できるようにはならない。譜面を追いかけながら一つ一つ音を鳴らし、体に覚え込ませることで、上達していくものである。

次に、人の書いたものを真似することの有効性について、「新しいアイデアは既存要素の組み合わせによって実現される」というジェームス・ヤングの言葉を踏まえて考えてみる。新しいアルゴリズムやプログラミングにより実現される新たなサービスは、既存のコードを新しく組み直したものにすぎない、とも言えるため、人が書いたものを真似してどんどん試し、「こう入力すればこんなアウトプットが出る」という経験をたくさんストックしておくことは、非常に有用なことである。必要に応じて引き出しを開けて組み合わせていくことで、新しい価値を生み出すことができる。このとき、必ずしもコードをすべて記憶しておく必要はないと思う。こういうことをする場合にはあの本を参照すればいいとか、Stack overflowのあの回答に書いてあったなとか、必要な情報にすぐにアクセスできるようにさえしておけば事が足りるんじゃないかと感じている。

アイデアのつくり方

アイデアのつくり方