多くのソフトウェア開発者が物事を複雑にするのを好みます。 彼らは、シンプルで簡単である可能性のあるものを手に入れ、ほとんどの人がインターネット上で伝えることにより、それを複雑にします。
ソフトウェアはシンプルであるべきです。
ソフトウェアはシンプルでなければなりません。
そこで質問ですが、ゼロからソフトウェアを構築するにはどうしたらよいのでしょうか?
John Sonmez:
やあ、どうしたんですか? Simpleprogrammer.comのジョン・ソンメスです。 今日は、ゼロからソフトウェアを構築することについての質問です。
この質問はAkashからで、「Hey John、あなたのビデオは素晴らしく、あなたのアドバイスにとても感謝しています。 私が直面している 1 つの問題は、大きなソフトウェアを構築する場合、全体をゼロから設計する方法を思いつかないことです。 例えば、全体を小さなサブタスクに分割し、それぞれのサブタスクを実装して、それらをまとめて動作させる方法です。 この問題を克服する方法をご指導いただけると大変助かります。
ここで私が言いたいのは、あなたがやりたいことは、システム全体、つまりトップダウン式のアプローチを取ることを考えるのではなく、すべてのピースに分解し、すべてのピースを組み立てて、それらがどのように組み合わさるかを見て、この巨大なトランスフォーマーやレゴを作ることなのだ、ということです。
私が言いたいのは、本当にシンプルなものから始めるということです。
つまり、本当にシンプルなものから始めて、あまり多くの機能を持たない最もシンプルなものから始め、それを、彼らが「大きな先行設計」と呼ぶものを行う代わりに、行きたいところへ進化させるのです。 とはいえ、全体的なアーキテクチャについて決して考えてはいけないということではありませんし、デザインや特定の事柄を前もって考えてはいけないということでもありません。
さて、電子機器に組み込むソフトウェアを設計していて、ハードウェア エンジニアが回路やカスタム チップを開発しなければならない場合、おそらく多くのものを前もって設計しなければならず、それを行わなければならないでしょう。 そこで制限されることもあるかもしれません。
なぜこれが重要かというと、ソフトウェア開発の悩みの種、ソフトウェア開発における最悪の事態の1つは、複雑さだからです。 このチャンネルはSimple Programmerと呼ばれ、私のビジネスは複雑なものをシンプルにすることなのです。 ソフトウェア開発者の主な仕事の1つは、複雑さと戦うことです。なぜなら、複雑さがシステムに入ってくると、メンテナンスが難しくなり、理解するのが難しくなるからです。 また、バグや不具合も発生しやすくなります。 私たちは、できるだけ複雑さをなくしたいと思っています。 単純化したいのです。
起業家の世界では、多くの場合、これを「MVP」または「最小実行可能製品」と呼びます。
起業家の世界では、しばしばこれをMVP、つまり最小限の実行可能な製品と呼びますが、大きなソフトウェアシステムを構築しようとしているときに何ができるかというと、本当に小さく始めることができるのです。 とてもとても小さなものから始めるのです。 どんな本だったか思い出そうとしているのですが、テスト駆動開発のステップバイステップか何かだったと思うのですが、とてもいい本を読んだんです。 その本では、彼はメモ帳アプリのようなものをデザインしていました。 彼はまず、非常に漸進的な方法でこれを行い、アプリケーションにはデータベースが必要だと思うのですが、データベースを持たないことから始めました。 その代わり、テキストファイルにデータを保存して、テキストファイルから読み取るようにしていました。
これは物事の自然な進化であり、このように複雑なソフトウェアを構築することができます。
これは自然な進化であり、このように複雑なソフトウェアを構築することができます。 その多くは、前もってすべてを設計するのではなく、すべての部品を構築し、それが機能することを願い、祈るのです。 そうしないと、予算やスケジュールを大幅にオーバーしてしまいます。 残念ながら、そういうことはあります。 成功したい、できるようになりたいと思うのであれば、とにかく小さなことから始めてください。 この世に難しいことは何もない。 複雑なものは何もない。 単純なものの束で構成されているから複雑に見えるだけです。
最も複雑な建築物を作ることはできます。
最も複雑な建築物を作ることもできますし、巨大なものを作ることもできますが、まずは単純なものから始めなければなりません。 すべてはシンプルなものから構成されているのです。
最も複雑な建築物を作ることも、巨大なものを作ることもできますが、まずは単純なものから始めなければなりません。 それを進化させるのです。 始めるのです。 何かを作る。 その機能に近いことをする、最も小さな、最もシンプルなものは何でしょうか? そして、機能を追加していくのです。
そのために役立つであろうおすすめの本が、「Clean Code」という本です。 ロバート・マーティンによる私のお気に入りの本の1つです。
この本をお勧めしますが、アーキテクチャを進化させたいのであれば、この本をお勧めします。 それから、もう一つ言えることは、物事を進化させるときには、巨大で複雑なものにならないように、抽象化したものを作ってシンプルに保つということです。 時には、全体を書き換えたり、一部を書き換えたりすることもあるかもしれませんが、それはそれでいいんです。 ソフトウェアの進化というのは、そういうものです。
多くの場合、ソフトウェア開発者は時期尚早に最適化したがります。
多くの場合、ソフトウェア開発者は時期尚早に最適化したがりますが、それは物事を非常に柔軟にするためです。 彼らは、この非常に非常に堅牢なシステムを構築しようとしているため、ソフトウェアに対して時期尚早の最適化を行っているのです。 しかし、それはしばしば失敗します。 何が必要になるかわからないのですから、予測しようとせず、ただ「よし」と言う方がいいのです。 今、私はこの新しい機能を追加したり、このように動作させたりする必要があります。
忘れないでください、ソフトウェア開発は橋のようなものではありません。 コンクリートが敷かれていて、これから家の建築を変えるというようなものではありません。 ソフトウェアは可鍛性です。 粘土のようなものです。 変えられるんです。 ソフトウェアに手を加えたり、変更したりするのに高いコストはかかりません。
アカシのお役に立てれば幸いです。 素晴らしい質問です。 過去に多くの人がこのことについて質問していると思います。 もし私に質問があれば、[email protected] までメールしてください。 このビデオが気に入ったら、まだ購読していない場合は、下の大きな購読ボタンをクリックしてください。 もし、まだ購読していない場合は、下の大きなボタンをクリックしてください。 次回までお楽しみに。
お元気で。