As time passes in your engineering career you’ll quickly learn that part of being a Software Engineer is learning new technologies and effectively applying them (as quickly as you can). Therefore a prerequisite to this guide is at least a strong fundamental understanding of a single stack (this can be mobile, frontend web-dev, or backend development).
Many moons ago in my first internship, I had to quickly onboard myself onto PHP and Symfony. Having worked only with C++ and Java throughout my university career, I spent an entire night learning how to learn and setting up a plan to quickly onboard myself onto new technologies. It paid off in the end because I got a return offer.
I’ve broken this down into a framework which is merely a combination of the following two resources
And hence coined the term, The Suboptimal Question Driven Developer.
What is the framework?
The framework itself is relatively straight forward and split across 2 weeks, you want to spend a few hours on the weekday coding in your language of choice (yes, before you watch any tutorials), and afterwards watching a tutorial.
The general split of time is 70% coding and 30% tutorials. I prefer video tutorials because it's easier to calculate how much time you’ll need to finish a certain part of the course.
On the weekend, you’ll want to start crafting a larger project, and closing the day off with watching tutorials. In the second week you’ll want to apply the same approach but now including the framework.
Example workflow of framework
1. Time commitment
This process generally requires around ~15 hours, but if you wish to do more or less I recommend splitting your time into the aforementioned 70/30 coding to tutorial ratio.
Your days would look something like this
Weekdays (Monday - Thursday)
- 1HR: Coding
- 1HR: Watching tutorials
- 1HR: Plan out what you’re going to build over the weekend and remember to setup your dev environment.
- 5HR: Coding your large scale project
- 1HR: Passively watching tutorials
2. Planning what to build and where to learn
In my case, I needed to become more familiar with PHP before I even thought about picking up a framework, so I spent the first week doing easy Hackerrank/Leetcode questions.
I would like to reiterate that I did this before I watched any tutorials on PHP, I jumped in head first, and Googled my way out of problems. This is what you’re going to have to do on the job on many occasions, so why not start now?
Picking a video tutorial is relatively straightforward, just go to Udemy, Frontend Masters, or YouTube and find a tutorial you’re comfortable with. The main learning really isn’t the tutorial, but it’s a good supplement to feed you some information you may have missed.
On the weekend, I decided to build a project (an e-commerce platform) that I knew would be easier with a framework. This was intentional (and recommended). You’ll only really understand the need for frameworks once you’ve tried to build something without it.
In the second week, I pretty much repeated Week 1, with two exceptions
- Replace the PHP content with Framework (Symfony) content
- Instead of Leetcode/Hackerrank I started building out my project in tiny pieces (i.e building out the e-commerce platform feature by feature).
If you’re coming in with an existing deep understanding of the programming language, and just want to learn the framework, I would simply replace Leetcode/Hackerrank with tiny projects throughout the week (think random number generator, BMI calculator, temperature converter).
This is the hardest part, but it’s also where the most learning happens. I keep repeating myself but I will say it again, just start coding. Don’t watch any tutorials, any questions you may have, just search them. PHP had a strange way of declaring variables, so in this process my first search was as rudimentary as “how to declare variables in PHP?” and I repeated that process for functions, and so on. I did the same when learning Symfony (the framework).
The core idea is you want to be absolutely fearless when coding, you want to produce garbage hacky code that you wouldn’t show your grandmother, you want to brute force your way to solutions. That’s okay because you are learning. You’ll only understand good code from the tutorials, once you’ve written a bunch of bad code yourself.
To summarise, code first (and be sure to code a lot!), watch tutorials later.
Will this framework teach you everything? No. Will it make you a ‘master’ of the programming language/framework? No, I’ve been writing Java for almost 5 years (2 years professionally) now and I’m still learning something new every week. All this framework will do is make you competent in navigating a codebase, reading the existing code, and give you some confidence as you’ve produced some tangible results.
Most of your learning will be on the job anyway, but this process makes it a lot less painful.