忍者ブログ

RPG製作ソフト「Role Paint」を作っていくぜ!ツクールのようなRPG製作ソフト「Role Paint」を作っていくブログ。 相互リンク募集中

非常に効率の良いプログラミングの教育方法

ずっとRole Paintを作っているわけだが、この中で非常に良いプログラミングの教育方法を思いついた。
やり方はこうだ。

・誰も使った事がなくて、ネットで調べても全く情報が出てこない何らかのライブラリ(ゲームのライブラリやGUIツールキット等)を用意する
・次に、プログラムそのものの入門書やライブラリのリファレンス(全部英語で書かれていて、説明が不十分なら尚良い)と英語の辞書、大量の他人が書いたソースコード(要するにサンプルソース)を用意する
・質問サイト等で質問するのを防ぐため、ネットに繋がっていないコンピュータがある部屋に閉じこもる
・後は自分で課題を作ってひたすらに書く。これを一ヶ月続ける。

超スパルタ方式のため、嫌になる人が続出するであろう事が欠点だが、これを逆に利用して「どれぐらいプログラムが好きか」や「プログラムに対してどれだけの根性があるか」を試す入社試験にも使えるだろう。

何でこんなのを思いついたというかというと、自分で言うのもおかしいが、Role Paint開発以降、プログラムに対する能力が馬鹿みたいに上がったと実感しているからである。その原因を自分なりに探っていくと、かなり厳しい環境に身をおいたからに他ならない。

当てになる本はないし、Role Paintの開発に使っているGUIツールキット、Ultimate++はマイナーすぎてネットで探しても当てになるコードは殆ど見つからない上、リファレンスも不十分である。平然とリファレンスに書いてない関数やクラスが大量にある。

こんな状況の中、延々と作り続けているのだから、我ながら何というか・・・。

どうすれば効率の良い教育が出来るか、という一つの答えを自分なりに出した形でもある。現代の日本(というか、おそらく世界中)では新人社員の教育が問題となっている。どの会社も教育にお金をかけることが出来ず(就活中に面接で「新人社員の教育には1千万円かかる」と言われた。実際計算すればそれぐらいお金がかかる)、そのせいで失業者が増えているのだ

ならば答えは一つ。教育そのものを効率化し、短期間で新しい事を吸収でき、どんな環境にも対応できる人間(プログラマで言えば、新しい言語にもすぐに対応し、ゲームもウェブサービスも作れるプログラマ)を育てるしかない。それで思いついたのがこれだ。

どんな環境にも対応するには根本の基礎となる知識(プログラマで言えばfor文やif文の意味等とコンピュータそのものの大まかな仕組み)と応用力(プログラマで言えば新しい言語の文法や技術をすぐに覚え、ソフトを作る等)が必要となる。問題なのはこの応用力の育て方である。

指摘されて久しいが、現代の教育の問題点を上げると、応用力が身につかない事である。何故身につかないのかと言えば、「この難しい問題はこの方法で解けます」という、どうしても手段を教える事に終止するためだ。「この方法とこの方法を組み合わせれば解けるんじゃないか?」という能力を伸ばす事をやってない。そして、そう言われてもどうやってその応用力を伸ばせるかが分からない。

この問題に対して自分なりの回答がこれである。とにかく「手段を覚える」という方法が通用しない環境に身を置く。これが応用力を身につける方法の一つだろう。

ちなみにこれ、任天堂の故・岩田聡社長とドワンゴの川上氏が実際にやった方法である。彼らがプログラムを学び始めた時期は当然ながらインターネットはなく、おまけに肝心の説明書も全くと言っていいほど役に立たない状況だった。こんな中でプログラムをやり続けたのである。

http://www.4gamer.net/games/999/G999905/20141226033/


こんな厳しい状況に身を置く方法はネットが普及した現代でも結構ある。Ultimate++のような、質問サイトで質問しても誰も答えてくれない程マイナーなかつ優秀なゲームライブラリやGUIツールキットは探せば山のようにあるので、それらを使ってやると良い。

で、他の業種で何か応用力を身につける方法はないのだろうか?例えば事務員では電話対応が最も応用力が求められる物になると考えられるが、この能力を上げるには一体・・・こんな事を書いてあれだが、プログラマでもプログラミング能力だけが求められるわけではなく、コミュニケーション等の問題もあるし

拍手[2回]

PR
Comment
name
title
color
mail
URL
comment
pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
コメントの修正にはpasswordが必要です。任意の英数字を入力して下さい。