If you are new to software, frameworks are one of the most important concepts you will need to learn about. Behind almost every single mobile app, website, program, extension, you name it...is a framework. At a high level, a framework serves a fairly self explanatory purpose - it gives you the guidelines to work. Rather than starting from scratch, you can work within the bounds of preset structures and outlines if you start with a framework.
A framework's technical definition is an abstraction in software development that provides generic functionality that can be modified by user-defined code. An easy way to understand this is to imagine how you would display some text on a screen, like this blog! Without a framework, you might have to draw every single letter on the page by giving X and Y coordinates and telling the page to color them black. With a framework, you can simply say "display 'this text' on the screen."
Displaying text on a screen is a simple example, but one can imagine how complicated frameworks might get.
By giving software developers a framework and pre-defined functionality, you can reduce development times and costs significantly. Developers won't have to re-invent the wheel and can build on top of the framework. What frameworks provide is called "abstraction."
Let's Explain Abstraction Like We're Five (ELI5)
Dealing with new terms can be tough to digest, especially when they are this technical in nature. Let's breakdown what abstraction is with a nice example: cars.
A "car" is a generic term that refers to many classes of motor vehicles, including sedans, SUVs, pickup trucks, minivans, and much more. Yet it's an extremely helpful word for every day life. For example, maybe you're hosting a party and are telling your friends how to get there. You might give different instructions for people arriving in cars vs. people arriving by public transportation.
Imagine if you had to give a separate set of instructions for people driving sedans that were manufactured in America pre-2010, and another set for all European SUVs made in 2003 - 2015, and so on and so forth. It would quickly become a logistical nightmare for you as you tried to write instructions for every single type of vehicle that might be driving to your party.
In software development terminology, a "car" would be an abstraction for road-safe motor vehicles with 4 wheels and under some height/weight. You can know that whenever you're dealing with cars, they'll all share some properties. Each car is unique, but those minor details aren't important to know in order for you to give directions.
Cars all share some useful properties, namely that all cars can drive at high speeds on the highway/interstate, and can take major roads to arrive at your place. By knowing these properties, you can give the same instructions to all cars because you know what a "car" is capable of (and incapable of). It doesn't matter if the car is a sports car or a minivan, a Ferrari or a Honda.
You've generalized all these vehicles into one term, "car," and this has made it a lot easier for you to give people directions.
Now ELI5 Frameworks
We're going to continue the cars example to explain how frameworks work, and how they use abstraction. Let's say you're a new car manufacturer and want to create a sedan.
But you want your new sedan to be a little different from other sedans. You want its turn signals to be blue, and its brake lights to be green. Since you're new to the business, you have to spend millions on R&D to create a car from scratch, and make sure it follows road safety laws, just so you can make a car with different lights.
That will cost you not only a lot of money but also a lot of time. But what if you could just buy the chassis of a car from a competitor, and build on top of that?
You go out and buy a working chassis from a major car manufacturer. This particular chassis has already been extensively tested, and on the road for nearly a decade. You can be pretty sure it complies with all safety laws, and will be reliable. You take the chassis and just add your modifications to the turn signals and brake lights. You've now saved months, if not years of time, as well as millions of dollars just by building on top of an existing, tried and tested chassis.
This chassis is a framework of a car. It has allowed you to easily build on it and make modifications while also taking advantage of the work that has already gone into making the chassis a working motor vehicle. This is the same thing a software development framework does for developers.
While developers could build everything from scratch, there's two major problems with that approach. 1) it takes a lot more money and time, and 2) your end result has minimal real-world testing, unlike existing frameworks that have been used hundreds of thousands of times.
Popular Frameworks of 2021
You can't really just choose a framework because other people use it. It is important to do your research and figure out what frameworks are available to you, and then select the framework that is most conducive to what you need to do. So, we'll outline below some popular frameworks, along with their language, in the following format: Framework (language). I'll also include the link to each framework so you can dive in further!
Commonly used for dynamic web applications, Angular is a go-to technology framework. Developed by Google, Angular serves frontend developers and lets the applications live in an environment that is easy to maintain. If you ever hear of MEAN stack development, the A stands for Angular.
Used for both mobile and web development, Express is a free framework that is regarded as one of the best backend frameworks out there. Express is very minimal and easy to build on top of. It is also a common framework used for APIs. Referring back to MEAN stack development, the E stands for Express. (the N is for Node, a runtime environment, and the M is for MongoDB, a non-relational database).
- Laravel (PHP)
One of the most common frameworks out there for PHP is Laravel. While PHP may be an older language, Laravel remains an extremely popular and powerful framework for web development. An easy-to-use framework, Laravel keeps PHP in the fight.
- Django (Python)
As it is built on python, Django is one of the strongest and most reliable backend frameworks out there. For robust and complicated applications, developers commonly look to Django. With tools that are built to keep up speed without sacrificing quality and security, Django is relied on by some of the best out there.
If you are looking for state-of-the-art design, then Vue could be a good choice for you. Focusing on dynamic UI, Vue offers a beautiful framework for frontend developers and designers.
- ASP.NET (C#)
Focused on mainly PCs, ASP.NET is a framework that carries the .NET legacy. As some look to .NET as a legacy language itself, ASP.NET is making a comeback with ASP.NET Core. As a lightweight framework, ASP.NET is speedy as can be!
- Ruby on Rails (Ruby)
Now, if fast isn't fast enough for you, then Rails is somewhere you should look. The absolute speedster, RoR is fast acting and still can offer the flexibility to express the advantages of being a data-driven web framework.
If you have any questions, you know how to find us! firstname.lastname@example.org