プログラミングを上達するには量と質のどちらがより大切なのか?
プログラミングの技術を身に付けようとした時に、早く上達するにはより多くのアプリを作っていくべきなのか、1つのアプリの質をじっくり高めていくべきなのかは難しいところです。この問題について、エンジニアのケビン・ジョースさんが1つの考えをブログに書いています。
Programming: doing it more vs doing it better – Kevin Martin Jose
https://kevinmartinjose.com/2019/04/08/programming-doing-it-more-vs-doing-it-better/
「量か質か?」問題を語る上で避けては通れないものとして、陶芸家のベールズさんとオーランドさんの共同著書Art & Fearに登場する実験が上げられます。
実験はある学校の陶器を作成する授業で、生徒を「量」と「質」2つのグループに分け、一定期間つぼを作成する練習をしてもらうというもの。実験前に、「量」グループには作成したつぼの量で評価をくだし、「質」グループには作成したつぼの質で採点するということだけが伝えられました。実験の結果、「量」グループが最もクオリティーの高いつぼを作り出すことに成功。著者によれば、「量」のグループは多くのつぼを作成している間に犯したミスから学習し、いい結果を生み出せたとのこと。一方「質」グループは、完璧に作成する方法を考える事に時間を費やしましたが、実際の作品に反映させられませんでした。
ジョースさんはプログラミングを学び始めた当初に上記の話を聞き、「プログラミングの技術を向上させる最善の方法はより多くのプログラムを書くことだ」と考えてきたそうです。もちろん、量さえこなせばなんでも良いというわけではなく、量をこなす中でできるだけバグが少なく、読みやすく、保守しやすいコードを書くように心掛けてきたとのこと。
そして「いつの日か、考えずとも呼吸をするように美しいコードを書けるようになるのではないか」という考えが心の奥底にあったそうです。コードを修正する必要がでてくるのは自分がまだまだ未熟だからであり、十分な量をこなした熟達者はそうした修正に悩まされることはないのだろうと思っていたとのこと。しかし時間がたってもジョースさんはそうした熟達の境地にはまったく到達する気配を感じず、自分の書いたコードがチェックを通らずに返ってくる度に落ち込んでしまったそうです。
しかしジョースさんはある日、次のようなエッセイを目にします。
ドイツの偉大な小説家、トーマス・マンは「文章を書くという行為は、小説家にとっては普通の人よりも難しいものだ」という言葉を残しています。最もすぐれた小説家は筆をとるのが非常に遅く、例えばユリシーズを書いた20世紀最大の小説家ジェームス・ジョイスは1日に100単語のペースでしか執筆しませんでした。
上記のエッセイを読んでから、ジョースさんは「よりたくさんのコードを書く」ことに固執しなくなったそうです。ジョースさんはこの内容をソフトウェア工学的に解釈し、以下のように表現しています。
1. システムの設計をさらによく考える
2. 自由に、そしてぜいたくにコードを修正する
3. 徹底的にテストを行う
4. 楽しい時を過ごす
現実的なビジネス目標を達成しようとすると、上記のような行為はなかなか難しいものですが、ジョースさんはジェームス・ジョイスを引き合いに出し、「ジョイスはおそらくユリシーズを書く時に締め切りに追われてはいなかっただろう」と述べています。
良いコードをさらに良いものにし、普通の人をエキスパートプログラマーにしてくれるのは1つのものにじっくりと長い時間取り組んでいくことなのかもしれないとジョースさんは結論付けています。
・関連記事
プログラミングで問題解決するためにとるべき3つの手順 - GIGAZINE
6歳の子どもに「関数型プログラミング」を教える方法 - GIGAZINE
結果を出すためには「質」よりも「量」をこなして学習することが重要 - GIGAZINE
創造性はひらめきではなく「積み重ねた失敗」から生みだされる - GIGAZINE
いつ来るか分からない15分のために常に準備をしているのがプロ、デザイナー奥山清行による「ムーンショット」デザイン幸福論 - GIGAZINE
・関連コンテンツ