突然ですが、もしあなたがたくさんの仕事を一気に依頼された場合、どのような順番で仕事を処理されるでしょう?
ちなみに私は、必ず簡単な仕事から片付けていくことにしています。その理由は、簡単な仕事は短時間で片付くため、仕事の総量がどんどん減っていくからです。こうなると気分的にも楽で、後からじっくりと難しい仕事に取り組むことができます。
|
そして万が一、仕事の期日に間に合わないような事態が発生した場合、難しい仕事のみ納期遅れとなりますが、その前に完了している簡単な仕事は問題なく納品ができるため、被害が最小限で済みます。
これが、難しい仕事を先に取り掛かった場合、最悪"一つの仕事も"期日に間に合わない…という事態を招きかねません。
これはあくまでお仕事の話ですが、ことプログラム開発に関しては全く逆になります。
つまり開発では、まず最初に「一番技術的に困難なところ」から、取りかかるべきなのです。
これにはちゃんと理由があります。もし簡単なところから開発を始めて、あらかたプログラムが完成したとしましょう。
しかし最後に肝心の一番技術的に難しい部分が完成できないとなると、そのプログラム自体がお蔵入りになってしまう可能性が高いからです。
これではせっかく開発した部分のプログラムも、それまでにかけた労力・時間も、すべて無駄になってしまいます。
プログラムには必ず実装する必要のある「核(コア)」になる部分があります。通常、その核の部分が一番難しく、その部分を称して"プログラムのエンジン"と呼ぶこともあります。
ということは、プログラム開発ではまず、この"エンジン部分"から取り組み、実装可能であるかどうかを判断したのち、その周囲の部分をプログラミングしていく方が、より効率的だといえるのです。
例えば、私がこのソフトを開発したときは、まず"和了ルーチン"という、麻雀の和了を判定できるエンジン部分を先に作りました。
そして、このソフトを開発したときは、ユニットを配置するUI(ユーザーインターフェイス)の部分を先に実装しました。
これはつまり、これらの機能が実現されなかった場合、それ以上これらのソフトを開発しても"意味がない"・"無駄だ"と思われるほど、それぞれのソフトで重要な部分だからです。
幸いこれらの機能は無事、実装することができましたので、後はそれ以外の部分をがんばって作り、きちんとゲームとして完成させることができました。
これからフリーソフト、フリーゲームを開発される方は、必ずそのソフトウェアで"一番難しい"と思われる部分をまず、完成させてください。
これさえ実現できれば、その他の部分は時間をかけさえすれば、いずれ実装できます。
フリーソフト作者の開発にかけられる時間は限られています。
新しい技術や、表現にチャレンジすることはすばらしいことですが、まずチャレンジする部分が、実際に実現可能かどうかを見極めてから、他の部分の開発に移るよう、心がけてください。
|