If you are a computer scientist you might have noticed that new frameworks are constantly popping up. Programming languages just keep showing up and old ones that can’t keep up are becoming deprecated.
For experienced programmers, it is a normal part of everyday life. New technologies like to be promoted as things of the future, it is beautiful they said, it will help us they said, it is the hottest framework today they said… It is like these technologies have a cult following.
Believe me, you do not have to master all the frontend web frameworks to be a frontend web developer, just use things that make you comfortable. It just annoys me that there are so many different frameworks that it gets confusing.
It starts out very intimidating because while there are many similarities between frameworks, the manner in how we use them is very different. Phoenix, Spring Boot, Ruby on Rails, Django, and Laravel are among the most sophisticated web frameworks that can boost development speed because it is easy to use.
Adding to that, the level of abstraction in these frameworks can also be very hard to understand. This doesn’t only apply to frontend frameworks because backend frameworks also have a lot of ‘magic’ frameworks. These ‘magic’ frameworks are very confusing for people who want to learn to program, the level of abstraction in some of these frameworks are so high-level that it’s hard to grasp the basics. In the end, you might end up memorizing code other than understanding them.
Even though memorization seems like the most likely answer to this problem, frankly it is not. Memorization of code is the worst thing to do because different programming languages already have different syntax, but a framework based on the same language also have different syntax. It is not the optimal answer, that’s what I am trying to say…
In a hero’s tale, the villain overpowers the hero in the first battle. Only for the hero to train intensively and face the villain again to finish the tale once and for all. This story is a good metaphor for the learning curve. At first, it seems impossible to learn every single thing to complete a task, but when we ‘train’ ourselves by doing these tasks separately and repetitively it becomes easier and it becomes more understandable.
We can see patterns in the task that we could never have seen before, this is when we master a subject, this happens when we have reached past the hard learning curve. But to understand the framework you need to understand the fundamentals, the architecture, the language and many more. It is not a simple task to learn a new algorithm or a new design pattern but to learn those things will help in the development of our understanding.
This brings me two the second part, the beast. Learning algorithms and another basic computer science subjects are as hard and as boring as it can get, at times it might feel like we want to give up because honestly when I was learning an algorithm it was hard for me to visualize what kind of scenario would this certain algorithm be used in, but the more I learn about the basics of computer science and programming the easier it is for me to understand the frameworks because it follows a pattern. For example, Ruby on Rails and Django are web frameworks designed with the same architecture in mind. The Model View Controller architecture or MVC for short. If you understand the fundamentals of an MVC framework transitioning from Ruby on Rails to Django is only a matter of syntax. Development-wise there will be a lot of similarities. Learning the basic architecture pattern is are like beasts.
Beasts are hard to tame, they are hard to understand and they seem intimidating. Sometimes it may be easier to ignore the beast altogether and try to force learn by memorization. Sadly, it will end up in a faulty understanding of the system at hand. Thus, resulting in a misconception of what the reality of the system is.
Taming the beast should be the first thing all of us ought to do. Like in every story to save the beautiful heroine you must tame the dreaded beast. Sadly, not everyone is fond of your journey. Some might worry, some might question, and others are skeptical. But all you should know is to tame the beasts and save the heroine. What I am trying to say is. Yes… theory sucks, learning algorithms aren’t as fun as building a website with Rails, and architectures seem unimportant. But knowledge about these fundamentals is going to define you and what you know.
I believe that if we truly understand the fundamentals of programming, the new tech wouldn’t be much of a hassle. Technologies keep evolving, it’s a good thing! Tech evolves to improve upon the mistakes of the previous generation or to bring new things to the world. People should really embrace change. Programming knowledge is subject to change. I realize that I should continuously improve my knowledge of current technologies every month or so. It is a process which all of us should do.