Core language Vs Frameworks
Why you should learn the core language first before learning any of its frameworks

IN BRIEF
Although I am still a novice in the tech industry as per my view, I have gone through a lot in 10 months that I believe I can advise any newbie, especially those who are still indecisive about what to learn first (i.e. between a language or one of its frameworks). In this article I would be delineating the reasons why you should opt for the core language before its framework(s), no matter how difficult it may seem. No gain without pain anyway, so it’s better to go through the pain that will guarantee lesser pain when you want to add to your skills-set in the future. Happy reading!
INTRODUCTION
My journey in software engineering began around December last year (2018). I had just secured a job as a lead RPA developer with a company in Lagos and I was going through a training to understand the rudiments of RPA development. If you tried to guess my prior profession before joining the tech company, you will probably guess wrong. I am a Chemical Engineer by profession, and I’ve had this inherent love for software development since my first year in Federal University of Technology, Minna, Nigeria, before moving to Russia to complete my bachelor’s degree in Chemical Engineering. While in Russia, I joined a few tech companies, but my love for tech did not increase to the extent that I wanted to code stuff until July 2019. The only coding experience I’ve had before July 2019 was MATLAB which was not core coding but a second-year course, I had to take to complete my degree.
WHAT LED ME TO DJANGO, THEN CORE PHP
Although before I fully delved into Django, I had attempted to study python in futility because I did not have much interest in it, it was more of something to keep me busy. My first attempt to study Django was a big disaster, I did not understand much, and since I had no mentor to answer my numerous questions, I soon stopped. I am someone who prefer understanding HOW and WHY things work the way they do, to just making them work. The frameworks do all the hard lifting for the programmer in the background while the programmer handles the easy part of the work: assigning and calling variables, using libraries and making migrations, etc. This is not to mean frameworks are not difficult to learn, in fact the learning curve can be wider than you imagine!
Don’t get me wrong, learning frameworks is a good, in fact I advise everyone to learn at least one framework of their preferred language, not because I am currently learning Laravel, but because there are many positives to working with frameworks, and these positives are not limited to reducing the stress of having to build applications from scratch, instead of using ready-made libraries, models, functions, etc. So, here is a brief summary of why I learned core PHP first before moving on to Laravel.
WHY SOFTWARE ENGINEERING?
It is not an understatement when we say it is very difficult to find employment in Nigeria, in any field. However, the tech industry is more accommodating than all other sectors. However, unemployability did not lead me into software engineering. It remained 2 months to the end of my mandatory youth service when I was invited to join a budding robotics (RPA and AI) company, by a person who knew I was an enthusiast. I wrote a test, then an interview before getting employed. I was now an employee of (a lead developer for) a tech company and I had fallen in love with software engineering. It did not take long before I started devouring every online article about how to become a self-taught software engineer, in preparation for my planned journey of becoming a software engineer who commands respect in the tech industry. One very inspirational article that gave me the push I needed is this article by Austin Tackaberry. He is a trained Chemical Engineer like me, even though our situations are a bit different.
PYTHON_DGANGO vs CORE PHP

My decision to work with PHP was made halfway into my work on my idea, which is talsgrad. I planned to write the codes for the website myself because I wanted to learn software engineering. However, I started working with (using) Django for two reasons:
1. I have a friend who is well grounded in Django and Python, and I always saw myself going back to him for solutions to my coding questions or for fixing bugs.
2. All my research into the most popular programming language led me to python and my further search for the best Python framework for building web apps led me to Django (YES, you guessed right! Django!).
At the time, I had only heard or studied Django once in my life, and it was my friend who tutored me for about 3 weeks in November of 2018 before I resumed work in December of the same year. Hence my choice of Django as the right stack for my project was cemented by my rather vague knowledge of Django. When I started learning Django in-depth for the talsgrad project (I prefer to learn while working on a project, this instills the knowledge/skill without having to cram anything or making a lot of effort to remember things), I found myself asking many questions, why do I need to always run migrations in command line, etc. This made me feel like I was achieving nothing even though my talsgrad project was gaining good momentum. Since I needed to implement many functionalities for the talsgrad project, I found myself doing more of copying /pasting code snippets from stack overflow, blogs, etc. than doing actual coding by myself or learning how to code in python or any other programming language. After a rethink, and seeing that I was not actually achieving the goal I set at the beginning of the project (i.e. to learn Python in-depth by the time I finish the project), I decided to make a choice between two pathways to get out of the dilemma I was in at the time: the first was to stop the whole project and learn python, and the second was to continue the project but not with Django. I went for the latter because I really wanted something that proves I know a programming language, which the project could be. My search for social media tutorials on Google led me to different YouTube channels. Since those channels used PHP, I decided to learn and restart the whole talsgrad project with PHP.
I installed PHP and all other essentials for the new talsgrad project. It took me 3 months to complete talsgrad on my own, using PHP while determined not to copy code snippets online. If I did copy a code snippet from somewhere, I made sure, I understood how it worked and re-coded it myself from scratch, even though it was essentially the same code. I wrote codes for every functionality of the website in core PHP, JavaScript and used MySQL as my database engine of choice. After three months of coding (mostly after work) and 48hours every weekend, the talsgrad project was ready, although not the best it could be, I was happy that I could now write codes in core PHP and JavaScript to solve a variety of problems without the urge to copy code snippets online. Furthermore, I had learnt My SQL in-depth (writing queries, connecting to the server, etc.) and improved much in HTML and CSS. Furthermore, I made sure to go through the process of buying a domain, a hosting plan and uploading the website online using the two methods (i.e. manual upload via the files manager functionality of c-panel and using file transfer tools (I used for FileZilla) to connect to the server and uploading directly without launching c-panel). I also learnt how to attach SSL certificates to websites and how to set up email accounts for the domain. Though nerve-wracking, opting to learn core PHP was a step worth taking and I must say I enjoyed every second of the journey. Now that I am learning Laravel on Laracasts, my plan is to re-code all talsgrad with Laravel because it would not only look better but I will again learn Laravel while re-coding the talsgrad project.
NOTICEABLE IMPROVEMENTS!
The rate at which I am learning Laravel is marvelous, even I am surprised. And I know this is because I already am well grounded in PHP. Had I known (and understood) Python before trying to use Django, I am sure I won’t have had it difficult as I did when I was using Django for the talsgrad project. I will not go around writing about how using frameworks is better than writing codes in core languages, because the internet is filled with a lot of articles treating this subject. However, I strongly advise against diving into the frameworks of any programming language without learning the core programming language first. Your knowledge of the language might not be in-depth, but it will really remove a lot of headaches when you start learning the frameworks of that language.
SO, WHY CORE BEFORE FRAMEWORK?
One positive aspect of learning a programming language before its frameworks is the fact that you can later learn many different frameworks of that language without trouble (trust me, every programming language you know has more than 1 framework!). However, if you learn a framework without learning the language, I believe it will be difficult to learn another framework of that same language by using just your knowledge of the prior framework you studied. It is not impossible, but it surely will be more difficult than you expect.
The second good reason to learn the language before its frameworks is stability. While nothing is stable in the tech industry, languages are more stable than their frameworks, and this is logical because the frameworks are built upon the languages they implement. If you learn a framework today, there is every possibility that it would not be in vogue in a few years’ time and your knowledge/skills would be rendered redundant in the industry. Nobody knows how these shifts in acceptability happen and what dictates these fast changes; but a better strategy, if you want to be employable in the industry for a long time, might be to learn the languages before the frameworks. You could just learn the languages and code with the languages, but I strongly advise against doing so, because ‘well, why re-invent the wheel?’ Learning the frameworks will be easier and faster for you if your already know the language on which they are built and making a switch between different frameworks will not be a difficult task for you. Even if the industry is shifting from a framework, you have a good knowledge of the language, therefore your skills will always be sought after. Furthermore, I believe if it took you 12 months to learn a core programming language, it should take only one month or less to learn any of its frameworks, if you are persistent and determined. Though industry can shift away from languages too, the rate of shift from languages is not as fast as that of framework shifts.
FINAL THOUGHTS
This is my tenth month in the tech industry as an RPA developer, and I still see myself as a novice in the tech industry. However, I advise myself and every other newcomer to learn C/C++ because most Operating Systems, tech apps and even other programming languages are built upon C/C++. C++ is a derivative of C. I am currently drifting towards Machine Learning, a branch of Artificial Intelligence, and I have given myself only 3 months to acquire the required skills (since I have and am already implementing AI (e.g. Microsoft’s LUIS) in different projects at work). As you might have guessed, the first step in my drawn-up plan is to learn C/C++ and I will first be finishing the Harvard CS50 course on edX to achieve that goal. However, this all begins after I have finished the Laravel tutorials on Laracasts and built 2 projects with Laravel. I still hope to rebuild talsgrad using Laravel, though it is not a priority now. I know this will be a long (and tasking) but interesting journey, and I will continue sharing my experiences occasionally.
I wish you and myself good luck!
Happy coding!
