プログラミングと設計、これから必要なスキルとは

 

プログラミングとは、「プログラムを作ること」ですが
人によって、あるいは状況によって、その意味が異なっています。

毎度、管理人イガジーです。

プログラミングに際しては、
(1)仕様を決める(これも細かくは色々あります)
(2)処理の方法、アルゴリズムを考える/決める
ここまでが、主に「設計」と呼ばれる作業です。

(3)プログラムを入力する(コーディングと呼びます)
(4)実際に動かして動作確認する(デバッグ=不具合修正と呼びます)

規模が大きくなるとその後
(5)検査と呼ばれる大掛かりなテスト(試験)をする
という作業もあります。

「プログラマー」と言う(呼ぶ)場合は、(3)の作業をする人
すなわち、設計書(仕様書)を元にプログラム化する人を
指すことが多い気がします。

ところが、情報系の学校で出される課題には(2)の作業を
要求するものが多かったりします。
もちろん、(2)だけではなくて(3)(4)も行なって提出なのですが
比重としては(2)が重い。

それが悪いという訳ではなく、情報系の学校を出たら
設計者=システムエンジニアになる事が多いからかも
しれないとも思うのですが、
(3)の作業もおぼつかないのに、(2)を課せられて
プログラミングが嫌いになる(苦手意識を持ってしまう)
のはかわいそうだ。と思ってしまいます。

プログラミングは、仕様決めも含めて、本来楽しいものです。

(難しい)アルゴリズムを考えろ、と課すよりは
・要求仕様の分析(input/output整理)
・矛盾が起きそうな部分の洗い出し
・ユーザインタフェース(使いやすい、分かりやすい画面)の設計
・早く動かせる状態にもっていくテクニック・経験
・改良、改善要求の迅速なフィードバック
などのスキルを磨くことに注力すべきだと思います。

そして(3)のコーディングの演習としては、
抽象化、一般化の訓練を行うべきだと思います。
まずは、動くものを作る。
そして、そのプログラムをもっと抽象化できないかを見直す。
という作業を繰り返す必要があるでしょう。

現実のプログラマーは忙しすぎて、動いたコードを
見直す余裕なんて無いのが現実だと思います。
だからこそ、演習時にそういうトレーニングが必要なのです。

みなさんは、どう思いますか?

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)