Building software is surprisingly similar to many other types of engineering. If you compare software development to architecture, some software projects are similar to being a child and building a blanket fort. It solves your needs, but does not last long. There is a big difference between a blanket fort and a skyscraper: the amount of thought, time, planning, research and resources are all drastically different. Similarly, building a small command-line program is very different from building a large software product. The great difference between software and building physical things is that you can build skyscraper-esque projects by yourself, or with a small group, without large amounts of resources.