ソフトウェア開発は芸術なのか、それとも単なる仕事なのか?
2025-05-03
Finding Beauty in Functions, Creativity in Code
出典: Is Software Development An Art Or Just Work?
プログラマーの分野は本質的にクリエイティブですが、それは芸術と言えるのでしょうか?
プログラマーは無から何かを創造します。それは物理的に触れるものではありませんが。同じことを二度することはほとんどなく、常に既存のものの上に構築し続けています。
私がエンジニアだった頃、このような実践的な仕事が大好きでした。
フロー状態という特別な体験
作業に没頭し、ゾーンに入ると、特別なフロー状態に入ることができます。これは、執筆や絵画をしている人が経験するものと同じだと思います。心がキーボードとつながり、まるで彼らの心が紙やキャンバスとつながっているように、分離できない感覚を覚えます。
エンジニアリングをしているとき、様々な場面でこの感覚を得られるのが素晴らしいところです:
- リサーチをしているとき
- バグの調査をしているとき
- 問題の解決策を探しているとき
- すでに解決策があり、コーディングするとき
- 新しいものを創造しているとき
芸術家が感じるようなインスピレーションを感じます。私が言っているのは「芸術のための芸術」ではなく、建築のような機能的な芸術のことです。
ソフトウェア開発と建築の芸術の類似点
ヨーロッパでは、建築家たちが現代建築を古い街並みに調和させる方法を見つけているのが興味深いです。私が住むリスボンでも、このような取り組みが数多く行われています。新古典主義、ムーア様式、バロック様式、モダン様式が共存し、シームレスに混ざり合っています。
建築家たちは新しい建物を古い建物と有機的につなげることに成功しています。また、完全に改装された古い建物の中に入ると、古い建物の中にいることがまったくわからないこともあります。
これはまさにソフトウェアでプログラマーがやっていることと同じです:新しいデザインを古いシステムに機能的かつ美しく融合させること。
機能性と美学のバランス
建築の課題の中には、ソフトウェア開発の課題と似ているものがあります。
例えば、建築家が建物やインテリアをデザインする際に、過剰なデザインをしてしまうことがあります。デザインが目立ちすぎて、空間の目的が忘れられてしまうような場所です。
ガウディの作品などは賛否が分かれます。おそらくソフトウェア開発でもこの問題に遭遇したことがあるでしょう!
逆に、機能性に偏りすぎた建物やインテリアをデザインしてしまうことも容易です。退屈で美的に魅力のない空間になってしまいます。
例えば病院。一般的に、病院は純粋に機能的な建物で、美的体験にはあまり重点が置かれていません。これもソフトウェアで見たことがあるでしょう!
しかし、建築とソフトウェア開発の真の芸術とは、以下を兼ね備えたものをデザインすることです:
- 機能的である
- 使いやすい
- 美的に魅力的である
- 環境に調和している
- 同時に快適である
建築のように、優れたソフトウェア開発はこの融合を体現し、時の試練に耐えるのです。
問題解決によるイノベーション
建築と同様に、ソフトウェア開発は複雑な問題を解決します。
例えば、ゴシック建築の飛び梁の構造革新を考えてみましょう。これにより、中世の建築家たちは薄い壁と広大な天井を持つ、前例のない高い大聖堂を建設することができました。これらは形と機能の両面で驚異的な建造物でした。これがなければ、ノートルダム大聖堂やカンタベリー大聖堂のようなユネスコ世界遺産は存在しなかったでしょう。
ソフトウェア開発でも、問題解決を通じてイノベーションを生み出します:
- パーソナルコンピュータやインターネットのような、技術を家庭に持ち込んだイノベーション
- スマートフォンとアプリの登場
- AIやLLMのような、現在世界を変えつつあるイノベーション
プログラマーは、構造と美しさを融合させ、ユーザーとビジネスの両方に貢献するシステムを創造します。芸術の本質は微妙なニュアンスにあります:
- 機能的なアイテムに対する人々の感じ方
- 彼らの認識
- そして彼らの体験
しかし、想像力に欠け、従来の考え方に囚われていては、このようなイノベーションの高みには到達できません。この分野にいる人は、生まれながらにしてクリエイティブだと私は信じています。
でも、芸術って本当は何なのでしょうか?
望むなら、何でも芸術になり得ます。結局のところ、美は見る人の目の中にあるのです。
人々は多くの機能的な役割の中に喜びと創造的表現を見出すことができます:
- 機械:バイクはそのラインとフォルムで一般的に評価されています。エンジン、特にその音も評価されます。
- 集積回路:ノートパソコンのチップを近くで見ると、そのデザインを鑑賞できます。まるで小さな都市のコレクションを見ているようです。
- 配管:きちんと設計された配管を評価するYouTube動画やRedditコミュニティがたくさんあります。完璧に整列された複雑なパイプシステムが、こんなにも美的に魅力的になるなんて、誰が知っていたでしょうか?
- 整理整頓:こんまりさんを見てください!完璧に整理された家は、本当に創造的な活動となり、喜びをもたらすことができます。
何かについてより多く知るほど、その複雑さをより深く理解できるようになります。この分野の外にいる多くの人にとって、ソフトウェア開発は舞台裏で行われるもので、あまり意識されません。しかし、その中にいて適切な考え方を持つプログラマーにとっては、創造的なニュアンスや、それを作り上げるための努力を真に評価することができます。
選択はあなた次第
何でも芸術として捉えることができ、それはあなたの内面にあるものです。単に仕事をすることもできますし、あなたが提供し創造するものを評価することもできます。
私を含め、この分野の多くの人々はソフトウェア開発を芸術として見ており、それで報酬を得られるのは幸せな偶然です!しかし、そう見ない人も多くいます。彼らにとっては単なる仕事であり、お金を稼ぐ手段なのです。
明確にしておきたいのは、どちらの視点も完全に正当だということです。しかし、後者の場合、その経験はそれほど満足のいくものではないと私は信じています。
そういった人々は、要件や期待を満たすために必要なことをします。しかし、彼らが一日を始めるときに目に輝きを見ることはありません。休暇後に戻ってきて、休暇中に開発や実験をしていたと話すこともありません!
前者のグループ(私を含む)が共有する情熱は、最終的に仕事と人生においてより大きな満足感を与えてくれると信じています。単に1日8時間働くこともできますし、志を同じくするアーティストたちの素晴らしいコミュニティの一員になることもできます。
芸術的コミュニティの育成
ソフトウェア開発全体で私が最も好きなことの1つは、コミュニティ精神です。
もちろん、すべてのソフトウェア開発が利他的だと言っているわけではありません。ライセンス、知的財産、ソフトウェアで収益を上げる人々がいます。しかし、それでも驚くべきコミュニティ意識があります。
例えば、どんな製品やプロジェクトでも、見知らぬ人が書いた何百、何千というコードを使用します。彼らは自分のコードを共有し(通常は無料で)、ドキュメントやサポートを提供します。または、人々が次のことのために集まります:
- 創造する
- サポートする
- 協力する
Metaを見てください。彼らのオープンソースのLLaMaモデルは、OpenAIのGPTやOモデルに匹敵し、ほぼ同じパワフルさを持っています。彼らがリリースしたとき、無料で提供しました。Metaやザッカーバーグが物議を醸すことはありますが、彼らがオープンソースコミュニティの大きなプレーヤーであることは否定できません。
一般的に、他の分野で見られるような所有権や盗用の感覚はありません。ソフトウェアエンジニアリングには、より「恩送り」的な考え方があります。フリーソフトウェア財団は、この考え方を体現しています。このオープンソースコミュニティは1980年代に誕生し、今も強く、これからも続くことを願っています。
ソフトウェア開発を芸術として扱う人々についても同じことを願っています。
まとめ:内なるアーティストとつながろう
建築のように、ソフトウェア開発は、イノベーション、問題解決、そして長持ちする機能的システムの構築を含む幅広い創造的プロセスです。
ソフトウェア開発の芸術的性質で私が評価している他の点:
- スタイルと実質:機能性と美学の融合
- ブレークスルー:問題解決を通じて素晴らしいイノベーションが生まれる
- コミュニティ:コミュニティの側面は私にとって魔法のようなもの
エンジニアリングマネージャーとして、プログラマーも機能性と創造性のバランスを取らなければなりません。締め切りや予算の管理も必要ですが、イノベーションにつながる芸術的環境を奨励することも必要です。これがエンジニアリングマネジメントの芸術の1つです。
技術的専門知識だけでなく、創造的表現も支援する環境を作ることで、あなたとあなたのエンジニアの職場満足度とイノベーションが向上すると信じています。
だから、本当の問題は:あなたはソフトウェア開発をどのように捉えるか—仕事として、それとも芸術として?