Frameworks Make Software Development Easier
I often take some things for granted as a developer and one of those things is software frameworks. I am able to complete very complex websites and apps, even working alone, all because of the frameworks I use to achieve what would be an otherwise difficult task.
So, what is a software framework? Software frameworks can be defined in a broad context as including support programs, compilers, code libraries, tool sets, and application programming interfaces (APIs) that bring together all the different components to enable the development of a project or system.
However, for the focus of this blog, software frameworks narrows the definition to include software written to provide generic functionality which can be selectively changed by additional user-written code, thus providing application-specific software.
They provide a standard way to build and deploy applications and also provides a universal, reusable software environment that provides particular functionality as part of a larger software platform in order to facilitate the development of software applications, products and solutions.
The framework is often written as an abstraction- a separation, from the core programming language. Take Laravel, the PHP framework that I rely on for web apps, it allows me to develop with the framework which is more fluent when compared to working directly in the PHP programming language.
The Abstraction Advantage
Like I mentioned above, frameworks typically abstract the underlying programming language. In the case of Laravel, it means working with the Laravel API together with some PHP instead of working directly with PHP all the time.
The framework provides consistent guidelines on the paradigms to use in developing the software. Again in the case of Laravel, it provides a popular software development paradigm known as Model View Controller (MVC) which helps in the separation of concerns.
The framework API sits at a high-level in terms of programming language complexity that allows the developer to use high-level syntax in order to perform common actions. If a developer is working from the low-level language, everything would have to be coded from scratch and often there is a lot of code duplication and repetition involved.
The result of adopting a framework is large gains in speed during development. There is of course the initial overhead of having to learn the framework but once that is done, software development speed can be increased significantly in subsequent projects.
Abstraction that frameworks provide also allows developers to focus on implementing the business logic rather than spending too much time on low-level tasks such as figuring out how to connect to the database since these common tasks are often handled by the framework.
The Open Source Advantage
Most software frameworks are free and open source. This means that anyone can use them and modify them without being required to pay for them. "Free" should not be confused with "cheap" or low quality.
The free and open source movement is the best thing to have happened for me because otherwise I would not have been able to get into software development due to expensive licensing fees.
You can read the blog post titled What You Need To Know About Open Source Software to learn more about Open Source Software.
The advantage to Open Source Software is not just the price, or lack of it. It is really great software. In order to produce great software, it has to be thoroughly tested and Open Source Software undergoes extensive testing before it is released.
Small teams or individuals releasing their own software privately would not have adequate resources to take it through extensive testing. Open Source Software often has large communities of users who volunteer their time to develop and test the software. The result of which is very robust software.
By virtue of being Open Source and hence extensively tested, software frameworks are inherently more secure than individuals or small teams can manage to produce. The large numbers of people working on Open Source software ensure that more bugs are identified and eliminated.
The Rationale For Adopting Frameworks
I have adopted frameworks in my software development solutions and it is a decision that I stand by and will continue doing so. I would therefore encourage others to adopt frameworks when developing software or ensure that those they hire to develop software for them adopt frameworks in their development process.
With the abstraction that frameworks offer, cleaner code that is reliable and with fewer bugs can be produced. There are massive gains in speed in the software development process and that will enable teams or individuals to deliver projects faster. Furthermore, solutions developed with the aid of frameworks will be more secure and robust compared to the results obtained without frameworks.