エンジニアの楽しみは創造と達成か
プログラミングやっているとき、あのAPIを使ってとか、こういうアルゴリズムを実装して、キャッシュメカニズムを取り入れて、高速な処理を実現するとか、いろいろ工夫するのは楽しい。
ビジネスアプリケーションの処理をルールに従って作るというよりも、そのベースになる何か新しい仕組みとかを試行しているときとかは、とにかくプログラミングして、ぐちゃぐちゃになりながらも、「出来た出来た!」って満足感を得ていた気がする。
その後、ようやくアーキテクチャを意識しだして、全体を整備しなおすのだけど、クラス図を描いたりしなおして、インタフェースを定義しなおして、、、ってここからきちんとやり直す感じがある。
本格的な開発にはこういった試行がすこしあったあと、構造を定義し、処理パターンを確立させる。
一気にすべてを見通せることはなかなかなく、デザインパターンやその他先人の知恵を活用しながら徐々に洗練させていく。
こういったプロセスを知っているので、世の中のフレームワークとかの出来については、いいなあと思ったりするものもあって、もっと知りたいと思ったりする。
単純に楽になるとか、コードを記述しなくてもいいとか、そういった方向性の話と、楽しくプログラミングしながら、でも、あんまり楽しくないコードは書かずに済んで、面白さが残っているのが理想だろうか。
プラグインコードを書いて拡張するとか、ああいったアーキテクチャって、プログラマの楽しみを残しながら、全体が成長できる意味で、とても創造性の高い感じがする。
一方、最初から完成度がとても高いのだけど、拡張する自由度はあまりなかったり、完成度が高い割りにコードはあまり創造性に満ちていなかったり。
ま、どちらも楽しみはある。完成度の高い仕組みを使って、早くいいものを作っていくってのもあるし、すこし時間はかかるけど、基本的に自由度の幅があって、プログラムの工夫が残っているのがいいってのもあるし。