インフィニティソリューションズ株式会社ブログ

コーディングは創造性を発揮するものか、それとも複雑さをうまく管理するものか

初めてプログラミングした時、とても楽しかった記憶がある。そう、自分で作ったものが、思い通りに動いた時のことだ。開発者にとって、何かを設計し、動くものができると、本来うれしいはずだし、だからこそ、開発者になったのではなかろうか。だが、昨今そう簡単にはいかなくなっているようだ。SD timesでこんなことが語られている。

長らくSD Timesのコラムニストを務め、現在はDr. Dobb’s Journalに寄稿しているAndrew Binstock氏によれば、

Like most developers, I got into programming because I like creating stuff. Not just any stuff, but stuff other people find useful. I like the constant problem solving, the use of abstractions that exist for long periods nowhere but in my imagination, and I like seeing the transformation into a living presence. There is a joy in the steady work of creation and in its first successful test run. It is both a sense of building and consuming until at last, at long last, I can test the new feature, verify that it works, and feel the euphoric rush of frenetic little wicker gates opening and closing inside me in a triumphant, momentarily ecstatic pulsing.

「多くの開発者と同様、何かものをつくることが好きでプログラマーになった。何でもいいというわけではなく、何か人々の役に立つものだ。常に問題解決すること、自分の想像の中だけに長らく存在している概念を使うことが好きで、現存するものに変化していくさまを見るのが好きだ。創造する作業や、初めてテスト実行がうまくいったときに喜びを感じる。ついに、やっとのことで新しい機能をテストし、ちゃんと動くことを確認し、達成感と満足感で自分の中の小さなゲートが開いたり閉じたりする至福を感じるまでの製造と消費の感覚だ。」

Image courtesy of imagerymajestic / FreeDigitalPhotos.net

しかしながら、今やそう単純ではない。同氏いわく、

Project overhead, even for simple projects, is so heavy that it’s a wonder anyone can find the time to code, much less derive joy from it. Software development has become a mostly operational activity, rather than a creative one. The fundamental problem here is not the complexity of apps, but the complexity of tools. Tools have gone rather haywire during the last decade chasing shibboleths of scalability, comprehensiveness, performance. Everything except simplicity.

「シンプルなプロジェクトですら、プロジェクトのオーバーヘッドが大きく、コーディングに楽しみを見出すどころか、みんなコーディングする時間があるのかとも思う。ソフトウェア開発は、創造的なものというより、ほとんど作業活動になってきている。根本的な問題は、アプリの複雑さではなく、ツールの複雑さだ。ツールは、スケーラビリティ、汎用性、パフォーマンス、つまりは単純性以外のあらゆるものを標語して追い求めて過去10年間、おかしくなってきている。」

別の開発者であるEd Finkler氏は、”The Developer’s Dystopian Future“でこう書いている。

I think about how I used to fill my time with coding. So much coding. I was willing to dive so deep into a library or framework or technology to learn it. My tolerance for learning curves grows smaller every day. New technologies, once exciting for the sake of newness, now seem like hassles. I’m less and less tolerant of hokey marketing filled with superlatives. I value stability and clarity.

「コーディングでどのくらい時間を使っていたかを考えてみる。大量だ。習得するために、ライブラリ、フレームワーク、あるいは技術にのめりこむのを厭わなかった。習得カーブの傾きは日々小さくなってきている。新しい技術は、一時新しさゆえにワクワクするものであるが、いまや厄介ごとに思える。賛辞で満たされたマーケティングにますます耐えれなくなってきている。安定性と明快さに価値を見出しているのだ。」

壮大なコンセプトに基づくフレームワークは、様々な専門知識が必要で、一生懸命習得しようと努力したものの、結果的にすべてを把握できる人がいないというか、できないという事実に直面して、そのフレームワークは消えていく。後に残るものは何なのか。