Qiitaの記事が今回で50記事目になりました。
(大半が主に自分用の備忘録ですが)
3月に入って少しずつ暖かくなり、春の訪れの兆しと花粉症の症状の辛みを感じる中、
個人的にボーッと思ったことを書き連ねてみます。
🐺銀の弾丸はない
さて、IT業界、ソフトウェア工学の世界には昔から真理的な格言が存在します。
計算機科学者フレデリック・ブルックスの言葉で、
彼の著書である、システム開発における名著の**こちらの本**の副題としても有名ですね。
狼人間さんには、一撃で倒せる魔法の武器というものが存在します。
それこそが銀製の弾丸です。
ドラキュラにおけるところのニンニクや十字架。
八岐大蛇(ヤマタノオロチ)における草薙の剣。
バイオハザードにおけるロケットランチャー。
みたいな感じです。
「銀の弾丸はない」というのは、
この狼人間を倒せるような魔法の武器、銀の弾丸になぞらえて、
システム開発の手法やシステム開発のマネジメントにおける本質を表した言葉で、
「ウォーターフォール開発がいいの?アジャイル開発がいいの?」とか、
「クラサバシステムがいいの?webシステムがいいの?」とか、
「設計書って書いた方がいいの?」とか、
「静的型付け言語がいいの?動的型付け言語がいいの?関数型言語がいいの?」とか、
「Vimがいいの?VisualStudioCodeがいいの?」とか、
「Windowsがいいの?Linuxがいいの?」とか、
「データベースってRDBがいいの?NoSQLがいいの?」とか、
「サーバレスアーキテクチャがいいの?」とか、
「冗長化した方がいいの?」とか、
「枯れた技術より新しい技術がいいの?」とか、
その他諸々の「○○っていいの?」
みたいな質問に対して、一気にお答えしてくれます。
まぁ要するに
「そんなもんは時と場合によるんだよボケェ!」
ってことですね
※補足
ブルックス氏の言うところの「銀の弾丸はない」について重要な点は、
- ソフトウェア開発の複雑性について、「本質的な複雑性」と「偶有的な複雑性」 を区別する。
- プログラマの生産性の限界は「本質的な複雑性」についてのみ当てはまり
「偶有的な複雑性」に対する挑戦については支持している。
ということらしい。
まぁかいつまんで言うと、
解決可能な問題(原因がわかってるバグとか)に対する解決策はあるものの、
エンジニアたちは解決すべき本質的な問題の解決にほとんどの時間を費やす
ということみたいです。
🧘我思う、ゆえに我あり
哲学者デカルトの有名な言葉で、
「我思う、ゆえに我あり」
なんて言葉があります。
個人的にはこちらの言葉が先ほどの「銀の弾丸はない」
に想起させられます。
このデカルトの言葉は要するに、
「神とか真理とか、そうゆうの本当にあるの?」ってとりあえず全てを疑ってかかりなさい。
でもまぁ一つだけ言いきれるとしたら、
「こんなこと考えてる俺がここに居てる」ってことだけは間違いなく言えんじゃない?
というような意味です。
システム開発においての「我思う、ゆえに我あり」。
それが正に「銀の弾丸はない」ということです。
何が言いたいのかというと、
「これがいい。」とか、「あれがいい。」とか、
そゆことって言い切れないよね?
でも少なくとも、
「これが一番いいって言い切れるものはないんだよ?」
って事だけは言い切れんじゃない?
って事です。
まぁあくまで個人的解釈です。笑
⛩八百万(やおよろず)の神様
さて、話は変わりまして。
日本文化における宗教、信仰というのは、神仏習合といって仏教と神道とが入り混じっています。
皆さん日本に生まれた方であれば、
一度はお寺にも行ったことがあれば、神社にも行ったことがあるかと思います。
仏教においては「仏様」、「お釈迦様」が存在しますが、
神道における「八百万の神様」という考え方は
世界の3大一神教と比較すると、とても珍しい普遍宗教、自然信仰です。
世界の3大一神教である、
ユダヤ教、キリスト教、イスラム教というのは
神の代理人としてのアブラハムなり、イエスキリストなり、モハメットなりがいますが、
基本的には神というものは1柱しかいない。
という考え方です。(三位一体論なども含めて)
唯一神とか、ヤハウェとか、アラーとか、~~エンテイとか、~~呼ばれたりしますね。
それに比べると、
「八百万の神様」の考え方ってとても面白いと思いません?
世界を創造した唯一の神がいるのではなくて、
太陽の神がいたり、月の神がいたり、海の神がいたり。
その土地、その場所にそれぞれの神様がいるんです。
(あと、ギリシャ神話なんかもそうですけどね。)
この「八百万の神様」の考え方って、
システム開発における、「銀の弾丸はない」に通じるところが
あるのではないでしょうか?
少人数体制のプロジェクト、大規模システム開発のプロジェクト、
業務システム、ECサイト、ネイティブアプリ、社内システム
などなど。
システム開発と一口に言っても
色んな現場、色んな環境があります。
その土地、その現場に見合ったそれぞれの神様というのが
もしかしたらいらっしゃるのかもしれません。
💻日本文化とシステム開発論
さて、エンジニアの皆さん。
八百万の神様やギリシャ神話のように、プロジェクト開発という世界には
色んなたくさんの神様がいるのかもしれません。
一つの手法、一つの考え方に対して
神様のように信仰してしまい拘りすぎないようにしなくてはいけません。
もちろん個人的にはこれが好き!
というのは私自身もありますし、それは決して悪いことではないとも思います。
believeではなく、likeまたはloveですね。
(もちろん個人としての宗教の信仰自体は、「信仰の自由」の下の個人の自由です)
大事なことは、
「個人的には好きだけど今の現場にはそぐわないから、
今回のケースだとこの手法を使おう」
という判断をとることです。
その時、その場所に応じて、
ベストプラクティスを見つけ出して問題解決していくことが
我々エンジニアが果たすべき仕事なのだと思います。
最後に
なお、あくまで私が言いたかったことと言うのは
**システム開発においては、「銀の弾丸はない」**ということが主題です。
ボーッと連想して思いついたことをただ書き連ねたに過ぎず、
決して、キリスト教などの各宗教を卑下するつもりもなければ、
神道が優秀だなんていうことを言いたいわけでもありません。
海外出身のエンジニアの方や敬虔にキリスト教を信仰されている方にも、
優秀なエンジニアの方は大勢いらっしゃいますし、
人間としても素敵な方も大勢いらっしゃいます。
むしろ個人的には、
多様性や個人の考え方、在り方が
尊重されて相互理解される社会であるべきだと心から思っています。
長くなりましたが
最後まで読んでいただいた皆さんありがとうございました。