パスワードを忘れた? アカウント作成
13319896 journal
日記

kenketsuの日記: プログラミングにおける目的意識

日記 by kenketsu

某氏へのコメントを書いていて、話の流れ的に本当に言いたいことからちょっとずれてしまった感も否めず、どうにも頭がもにょもにょしているので、少しこっちで書いてみる。

プログラミングをする上で目的意識を持つことをなぜ重視するか。例えば、今書いた1行のコードへどのような意味を込めたのか、クラスなり変数なりメソッドを何故そう命名したのか、何故そういうクラス構成にしたのか、ループ的な処理を扱うにはfor/while/iterator/lambda/再帰などあるが何故それを選択したのか…などを自分に課せられた「目的」を基準にして常に「何故」と問い続けることが、自身のプログラミング技術の向上や技術者としての視野を広げることになったり、結果的に自身が関わる様々なものの品質向上に繋がるはず、と信じているから。

そのためには、まずプログラミングをする目的を明確に意識しておかなければならない、と思うのである。目的には色々なものがあるだろう。例えば仕事で担当している機能を仕様どおりに動くようにしているのか、ユーザーから上がってきたバグの修正をしているのか、可読性を高めるためのリファクタリングをしているのか、メモリ使用量を抑えたり処理時間を短縮するパフォーマンスチューニングをしているのか、言語仕様のバージョンアップで追加された新しい構文やAPIの勉強をしているのか…などなど。

それぞれの目的に合わせた手法や前提知識がプログラミング時には求められ、一方で良しとされることが他方では駄目とされることもある。でも、目的に合致した手法を適切に選ぶことができる、適切な実装ができる、問題の原因を正しく認識・特定し対案を出せる。そういうプログラマーが重宝されるのは事実だと思うし、せっかく仕事をする上でプログラミングを学ぶなら、そういう人になってもらいたい。

そうなるためには強い目的意識が必要だし、そもそもプログラミングの目的には様々なものがあるという視点や理解がなければならない。これは放っておいても自分で気付く時もあるだろうけれど、機会がなければ永遠に気付かないものかもしれない。自分で気付くまで苦労するのはきっと良い経験になるとは思うが、できるなら最初にきちんと教えてあげたい。

目的意識が低いと、実務をする上でも色々と大変だと思う。例えばコピペでソースを乱造しても、それが自分が達成すべき目的に合致していないことがあるとは、知らなければ気付けないだろう。本人の意識としては「動いているからいいでしょ」であろうが、機能を実装するという目的には合致している一方で、後の人が改訂時に困らないよう保守性の高いコードを書くという目的には合致しない。

自分としては「何故」を常に自身に問い続けることがスキルアップには必要で、その「何故」は目的から出てくるものだと思う。またまた例えになってしまうが、美しく無駄のないコードを書くことが何故必要なのか、ということへの答えは人それぞれだろう。保守性とか審美性とか潔癖症とかミニマリズムの実現とかそうするとかっこよく見られそうじゃん?とか、色々あると思うけれど、結局は何を目的とした上で何を良しとているかだと思うのだ。

…やっぱり、まだずれている気がしないではないけれど、せっかく書いたのでこのまま載せよう。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

読み込み中...