電子工作のブログで、疑似コーディングの有効性と説いていらっしゃる方がいます。
心の琴線にふれたので、自分なりの解釈で記事を意訳し、まとめておこうとおもいました。
できれば、自分の言葉になるように。
http://gataro-avr-ken.cocolog-nifty.com/blog/2012/04/mpl115i2c-eepro.html
ハードとソフトのものづくりの楽しさが伝わってくるサイトです。
個人ながらも、果敢に物作りにチャレンジする様がかっこいいです。
妄想でおわっていることの多い自分にサヨナラしよう、っておもいます。
"Hello World"の世界から、ちょっと実用的なプログラムを作るまでのレベルに到達するまでには越えなければならない山がいくつかある。大抵の人がそれを乗り越える前に挫折してしまうようだ。
LEDの点滅とか、"Hello World"のLCD出力くらいなら、いきなりコーディングして何の問題もないが、C言語でステップ数が200を越えるあたりからは、周到な準備を事前にやって開発にかからないと完全な動きをするプログラムを完成させることは難しい。
この山を乗り越えるコツの中で重要なひとつに、「ひとつづつロジックを確かめて完全に動くことが確認できるまでコーディングに入らないこと」がある。そのロジックを確かめる重要な道具がこの擬似コーディングである。
簡単なプログラムではその目的が理解できないかもしれないが、少し複雑になると効果がてきめんにあらわれる。是非みなさんも試していただければと思う。効能はバグの少ないプログラムが出来ることだ。
できるならば、疑似コーディングレベルでの質問するべきであり、それに比べ、 最も論理性の高いソースコードは、また、最も人間にとって理解しにくい言語であるため、 余程熟練した人でないとお互いの言おうとしていることが先方に伝わらず、おかしなことになる可能性が高い。
たとえば、下記の例でいくと、左に行くほど、人間が理解するための時間がかかるのである。
機械語->アセンブラ->C言語->JAVA->疑似コーディング
考えた通りにプログラムを作ろうと思うなら、自然言語、つまり普通の言葉で、完全に論理(ロジック)を確認してからコーディングに入れば良い。
ロジックさえ間違いなければ言語は何であっても実現可能である。それなら日本語でこれからやろうとすることを全部説明できるのなら、プログラムは成功したのも同然なのだけど、どうも、このあたりが理解されていない。
コンセプトレベルから細かいところまでつめること。さもないと、「失敗を達成」することになる。
ディズニーランドを企画した、堀場さんのデータ主義のお話を思い出しました。 とにかく、最初から細部まで詰めることは力をもつことと同じことだというわけですね。
リーンスタートアップという書籍を書店で購入してよみはじめている。
この本は、一言でいえば、物作りでつかわれるアジャイル開発の概念とQCの概念を起業に適用させるための指南書ではないかとおもう。
なぜ、この本をよんでいるのかというと、事業計画を作成するにあたって、損益計算書をつくるわけだが、いきなり売上の数値をいれるというにはその根拠が必要だと感じるところがあった。
この書籍には、実験を推奨していた、インドで洗濯業がはやるかどうかを確認したなどのベータ版の例が載っている。
さいとうひとりさんの製品開発も、はじめは小さく広めていくスタイルなので、うまくいくやり方なんだとおもう。
コンセプトレベルで細部まで詰めるとは、その段階で検証しているとも言い換えることができるだろう。
抽象的だけど、徒然なるままに、その学びの段階を記述していく姿こそが、学びを目標とした結果だといえるだろう。
この文章は、下記の書籍をみて書いています。
たった2か月でiPhoneアプリをリリースするためにやったこと
またよし れい著
遅延評価勉強法とは、「必要なところを、必要になった時に勉強する」という勉強方法です。
たぶん弁護士の資格勉強とは正反対みたいなやり方です。
なんだろ、事件が起きてから法律勉強しますみたいな。。。
余計なたとえだったかな。
疑似コーディングで紹介されていたやり方との類似点は、
コンセプトをノートにイメージしやすい形で写真付きでつくっていたということだとおもいます。
トヨタのアンドン方式にをシステム開発で実行する方法なのではないかとおもったりしています。
また、2ヶ月というのは、個人がモチベーションを保てる期間なのではないでしょうか?