プログラミングとコーディングの違い
プログラミングとコーディングは違う。プログラミングは設計も含むけど、コーディングは渡された仕様をプログラム言語言語に書き換える「翻訳」作業だ。
米Liferayフォーラムで他技術者の回答を見ていると違いが分かる。例えば以下のスレッドでインド人技術者が質問に回答している。質問は、ユーザ登録の必須項目を減らしたとのことだ。質問にインド人技術者は回答しているが、実際にLiferayの内部を理解していれば、必須項目はデータベースでインディクスされているので、入力されないと、システムが正常に動作しなくなる。これらをすべて修正するのはかなり大変な作業である。
何をするべきかっていると、値をディフォルトに入力するクラスを作成して、ユーザ登録を行う場合はこのクラスを使うようにすることだ。これだと1クラスを追加するだけで済む。
インド人の技術者はLiferayのソースコードを詳しく理解しているそうだが、全体の仕様を理解していないため、このような回答になってしまっているもだと思う。
http://www.liferay.com/community/forums/-/message_boards/message/11060312
さて、このように技術を本当に理解していないと見積もりを間違えることがある。話は少し違うが、社内で私が富士山の五合目からだと2時間半で登れると話したら、本当に簡単に富士山を登ることができると思ってしまった人がいる。他の人が普通ではもう少し時間が掛かると指摘して、無謀な登山計画は実行されなかった。
同じように、簡単にポートレットを開発しることができたり、文書ファイルをLiferayに登録できると話している。実際にポートレットを数個、作成して見せたりもしている。Liferayに作成したページの検索も簡単できでるとも話している。だけど、少しでも技術をもっていれば、そんなに簡単ではないことは分かるはずだ。
例えば、左側に目次を設けたページを目次項目で検索すると、結果はすべてのページになってしまう。それはすべてのページの左側に目次を入れているから当然のことだ。毎回、すべてのページが検索結果に表示されてしまうので、検察する意味がない。右側に表示しているページのみを検索結果に表示させるには、もう少し工夫をする必要がある。仕組みを考えるのに少し時間が掛かると思う。仕組の仕様が明確にできたら、コーディングは数時間でできてしまうものだ。
プログラミングとは、このような問題に対して仕様とコードを作成することだ。そのためには、コーディングにそんなに時間を掛けずにできるようになる必要がある。例えば、小説を書くっと言って、単語毎に辞書を調べていたらまともな小説を書くことはできないと思う。小説を書く時に話も自分で考えるように、プログラミングをする時は仕様も自分で考える必要がある。
プログラミングを勉強するのなら、言語の文法を細かく暗記するよりも、全体の仕様を理解するのに時間を掛けた方がよいと思う。
話は変わりますが、まだ富士山に雪が積もっていないようです。まだ半袖、半ズボンと運動靴で登れますよ。私と一緒に登りませんか?(笑)
最後に、個人的には慎重的です。周りからも必要以上にコマ目に下準備をすると良くいわれます。