Creating software with a framework vs library: what tech recruiters need to know
As a technical recruiter, it’s no longer enough for you to know only the names of certain programming languages – you should also understand the basics of how software is made.
When it comes to creating production software, there are two very important factors to consider: The first is developing applications is becoming more complex. The second is programmers are always trying to be more effective and more efficient in their work. As a result, every team of programmers must decide whether (or not) to build an application using either a software framework or a software library (or a number of libraries).
For the same reason, you need to be aware of which libraries and frameworks are relevant to a given post you’re recruiting for. In this way, you’ll be able to seek out developers with the best fit for that position. Not only that, but it’s obvious to nearly all candidates when recruiters haven’t done their research. Fully understanding how programming languages, frameworks, and libraries work together will make you really stand out as a recruiter (as well as make you feel more confident when talking “tech”) with candidates.
The technical difference between a framework vs library?
As you can see in the graphic below, the technical difference between a framework vs library is the question of who is in control of certain key actions during the course of creating software (and when the software actually runs).
When a software developer uses a feature from a library, the developer is in control – in other words, the developer’s code is in full control of the sequence of events. However, with a framework, the direction of control is inverted (this is known as Inversion Of Control), as the framework controls the developer – in this case, the framework controls the developer’s code. In a sense, a framework works in the same way as the so-called Hollywood Principle: “Don’t call Us, We’ll call You”.
Source: Fatos Morina
So what exactly are frameworks vs libraries? In particular, what is the difference between these two concepts?
What is the purpose of frameworks and libraries?
As you probably know, application code written by programmers constantly changes as the application they are working on evolves and develops. However, frameworks and libraries are fundamental building blocks that do not change, and which are used as the structure of a particular application. Both libraries and frameworks have been developed by developers to prevent the need to carry out repetitive tasks over and over again. They can also provide some functionality without needing to implement that functionality from scratch.
What are libraries in coding?
A library is essentially a set of functions that a developer can access (“call”). These days, a library is usually organized into so-called “classes”. The whole idea of such a library is that it contains code that is reusable for a particular purpose in a specific domain. In this way, a library simplifies specific tasks by providing a set of generic functionalities. These are then ready to be used in (“plugged into”) a software program. For example, most programming languages provide libraries for functionality, such as formatting a string or logging the exceptions that may occur during runtime. By using appropriate libraries, developers are able to reduce the amount of code which they need to write. At the same time, well-known libraries have good documentation and have been well tested. Therefore, in most cases, it is better for developers to use a library rather than go to the time and trouble of writing, testing and documenting their own code.
What is a framework in programming?
A framework can be described as an architecture that facilitates the implementation of software in a well-organized manner. Such a framework, therefore, embodies some pre-defined abstract design which is coupled with more built-in behavior than is the case with a library. In a framework, all the control flow is already in-place and there are a bunch of predefined hooks where the developers can place their own code. As a result, a framework defines a skeleton where the developers of a particular application define their own features to fill in the skeleton. In other words, you can think of a framework as a collection of patterns and libraries which help developers to build an application. On the downside, however, a framework also dictates the architecture of a given application. For example, it will define the overall structure, partitioning into classes, the key responsibilities of classes and how objects collaborate.
When is it better to use a framework vs a library?
As with just about any real-life issue, it’s a complex question that is difficult to answer clearly in every case. For example, a team with many junior developers may be better off with a framework, which therefore enforces a certain structure and particular standards, dictating to the team how it should build software. On the other hand, an experienced team who is working on an application that’s not run-of-the-mill and has niche functionality might be better off using a library (or libraries) rather than using a framework, because this gives them greater flexibility and control. In more extreme cases, it might even be better for a particular team of developers to build software entirely from scratch, without using either a framework or libraries.
What to look out for when screening candidates who need to know certain frameworks or libraries
Here’s a mini-FAQ about how programming languages, frameworks, and software libraries are used in the real world. Where relevant, we have also added some suggestions about what to look out for when screening candidates.
- Q: Can programmers code an application without either a library or a framework, but by using only their own code written from scratch?
A: Yes, they can, but this will always take longer.
- Q: Can programmers code an application using a framework plus some of their own code?
A: Yes, they can.
- Q: Can programmers code an application using either one library (or more than one library) plus some of their own code?
A: Yes, they can.
- Q: Can programmers write their own library?
A: Yes, and most programmers do this in the course of their own work. It is one of the best ways of avoiding any form of duplication, which all programmers dislike. Developers sometimes decide to release to the community libraries which have proven to be particularly useful. As a recruiter, it’s worth asking candidates if they have made any such open-source contributions.
- Q: Can programmers code an application using a framework plus either one library (or more than one library) plus their own code?
A: Yes, they can. If a team of developers are already familiar with a framework and relevant libraries, and the particular framework is a good match for the domain in which the new software will work, then this approach is likely to be the most efficient and effective one. This means that, when recruiting, you’re looking for developers who are already familiar with the frameworks and libraries which your team is currently using.
- Q: Is it possible for a library to become obsolete?
A: Yes, but this is unlikely to happen to a well-known library which provides significant functionality.
- Q: Is it possible for a framework to become obsolete?
A: Yes, and this is one of the potential downsides of using a framework. Frameworks do come and go, and even if a framework is popular for a long time, any framework can change dramatically from one major version to another major version. Of course, the creators/maintainers of popular frameworks try to limit such changes, but it can and does happen. You should try to keep abreast of, at least, major changes in the frameworks used by your team.
- Q: Can programmers create their own framework?
A: Yes. After a team of programmers have finished creating a new type of software, it quite often happens that, based on their particular experience, they later create a framework which is designed to make it possible to create a similar type of software in a way which is significantly more effective and efficient. It’s a good idea to review resumes to see if candidates have had any such experience.
To reiterate, as a technical recruiter, it’s very important that you screen candidates not only in terms of programming languages, but also in terms of frameworks and libraries.
We know that some of the technical language used to talk about programming languages, software frameworks and libraries can be confusing. If you have any doubts, we recommend that you take a look at the glossary which we have prepared specially for this purpose: https://devskiller.com/glossary-it-terms-tech-recruiters/.