Should I Learn A Framework To Be A Professional Software Developer?
This is a question I get a lot from people starting out in software development. The short answer is Yes. Below follows the longer answer and hopefully my justification.
First, lets get definitions out of the way for two key terms we will use; Framework & Library. According to Wikipedia, “A software framework is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate development of software applications, products and solutions.” On the other hand, it defines a library as “..a collection of non-volatile resources used by computer programs, often for software development.” To a layman, these two things might sound the same, but the over-simplified way of putting in for someone new to programming is this: Your code calls a library, while a framework calls your code.
To be a pro developer, you need to be familiar with both frameworks and libraries. Basically you should try to know what they try to solve, how they solve it and what their weakness or trade off is. If possible, you should also learn what libraries are used in a framework to solve common problems. Then afterwards, depending on the type of problem you come across, you can decide whether to use a certain library you saw in a particular framework, copy the style in which a framework approached a problem, or if the framework is the perfect fit for the job, just use the framework.
Being a pro-developer is about having many tools at your disposal. An age old saying says “the more libraries you know, the better a developer you are.” And what better way to learn more libraries than familiarizing yourself with frameworks. Many pro developers know a tool that solves each of the unique problems they are faced with in the most efficient way. They don't spend too much time recreating what they know someone did a good job in and try write as little custom code as possible to only solve the unique business problems of a system while managing to beat client deadlines.
The next question is always, which framework should I start with? I usually recommend that someone start with the most popular framework in their programming language of choice, and then move slowly from there. If possible, build a typical application using that framework. So, something that has searching, sorting, storing, retrieving and displaying of information. As a cherry to the pie, try see how it interacts with other applications i.e. “consuming APIs.” Keep on the lookout for open source frameworks, so that you can also see how framework developers structure their code in trying to solve problems. The more code written by other people that you get to read, the better your skills in your programming language of choice will get.
Let me know in the comments below on what you think!