Modularization

In terms of the delivery of software.

This whole article references the book ‘The Pragmatic Programmer’ by Andrew Hunt and David Thomas – Definitely a good recommended read, purchase here: https://amzn.to/2GP04fB

Original Question

Will it take more or less time to get a monolithic block of software to the required quality compared with a system designed in modules? (source: The Pragmatic Programmer by Andrew Hunt and David Thomas – https://amzn.to/2GP04fB)

Definitions

Monolithic block of software – “A monolithic application is self-contained, and independent from other computing applications. ” (Source: https://en.wikipedia.org/wiki/Monolithic_application ). Example – Some personal finance applications

system designed in modules – “is a design approach that subdivides a system into smaller parts called modules or skids, that can be independently created and then used in different systems” (Source: https://en.wikipedia.org/wiki/Modular_design )

required quality – In this instance it refers to the requirements that were set forth, probably by either a team within the company or end users themselves.

Answering the question

I believe it will take more time to get monolithic software to the required quality compared to a system designed in modules because it’s essentially a program that works together. Where as a system designed in modules has code that can be reused – I think of this an application where a user has a login and then they are redirected to a dashboard; authenticating a user can be used within another part of the application or other application entirely and more importantly, one developer can be working on that part without having to wait for another developer to finish one part of the application.

I’ve been taught that it’s important to make code that is DRY (Don’t Repeat Yourself) and that can be reusable for another application. In the case of working in modules, it’ll be easy to start building out the login system since I’ve done it before for another application.

Providing an example

I do believe there may be a time and place for monolithic software and while doing some research I found this example of a monolithic application:

Breaking Down a Monolithic Software: A Case for Microservices vs. Self-Contained Systems

In this example, note that the website started out as a smaller application controlled through one stream and has since grown quite large and is not scalable on the platform it is now using. This leads me to believe that ultimately all applications that start out as monolithic and then grow that they should then be moved to using modules.

Resources

Explaining what monolithic is: http://microservices.io/patterns/monolithic.html
If you prefer charts and graphs: http://www.codingthearchitecture.com/2014/11/19/what_is_a_monolith.html
I found this to be an easy to understanding of monolithic: https://www.sam-solutions.com/blog/microservices-vs-monolithic-real-business-examples/