Many business people do not fully understand the complexity of a software development process. It’s natural, since specialized development books are read by developers and other IT people, and many others may still be referring to a software project as ”coding” or ”writing”. With better luck `design’ and `test’ could be added. Quite inaccurate.
One can think of several metaphorical comparisons to describe software development, such as writing a book or building a house. Some of them are a good light in the dark, others are quite deceptive. And although many people may argue whether software creation is an art, a science, or a precisely crafted process, we would leave that decision in someone else’s hands. It cannot be described in a dispersed way. But we will try to give some descriptions and comparisons in a compact and clear way.
Do we write software?
One of the common but rather vague things is to compare software creation with writing. Writing code, writing a book, etc. You can start writing a book without a plan and go with the flow; with custom software development you can’t, unless the developers do a little software work on their own and for themselves. In addition, an outsourced software project never begins with code writing.
Both books and software can have strict deadlines. But once a book is published, what is written is written; rewriting is not an option. But the software keeps improving constantly with the release of new versions, it’s natural. It’s almost impossible to get all the needs of your end user, to catch up with technological and business changes once and for life. Books don’t depend so much on change; software does. But that’s a good thing: your software, unlike a book, can’t become another mediocre thing on the market, can’t become irrelevant and old-fashioned. The processes are absolutely different: we prefer to use the words ”create” or ”build” software instead of ”write”.
Do we grow?
Growing” software on a good foundation and a good set of documentation is possible to some extent. As with writing, it is not the best description one can suggest. It gets partially the incremental and agile nature of creating and maintaining relevant software. But as it “grows”, the product is rarely tasty until it is ripe, and the owner has to wait a while.
The difference is that in software development there are different stages of being “mature. In general, start-ups demand that a minimum viable software product be placed on the market, that feedback be obtained, and that corrections and improvements be made. Each version is more “mature” than its predecessor, and has to be “watered” by support and maintenance, staying fresh in the midst of all business and technology changes.
Do we build software?
This is considered by many specialists to be the closest way to describe software development, and we agree with it. Construction works show the enormous importance of careful planning, preparation, guidance and execution of works. The limits of software depend on how its architecture is constructed. The number of works does not grow gradually, as each building is different and requires a different approach. There may be a hospital, an office building, a school or a barn, and the same physical size does not mean the same amount of work. Something is done with concrete, something can be done with wood and nails, and nails don’t work well with complex and valuable software for mobile startups and other businesses.
– It all depends on the type of building you need. You need to figure out the problem the software will solve, and carry out the necessary preparations, do market research, gather information, etc. The more complex the software, the more resources will need to be devoted to planning. Bad planning – and the whole application fails, it falls like a house of cards in the first gust of wind.
– Then you and your chief architect (project manager) can proceed to a design that seamlessly combines functional requirements and interface, resulting in a proper user experience. You want those who work or live in the building to be fully satisfied with it. The same goes for software. One more good thing, once the design is approved, it is much easier to give more accurate estimates for the rest of the construction (development) work.