Learning how to learn
- SenchaUI (ExtJS)
Backend languages became the new explosion
Led by none other than, node.js...
- C# / ASP.Net
And then those had frameworks on top of those to learn... the .Net Framework, Drupal, Django, WordPress, Ruby on Rails, etc...
So much learning... It truly is impossible to stay on top of all of it. IMPOSSIBLE!
What you can do is learn how to learn faster. It is like anything else in the world, you need to practice. However, the saying practice makes perfect is a lie. If you practice bad habits all the time you will become better at bad habits. The goal is to learn how evaluate your own learning process and hone it over time.
Here is what I do:
Let's say I'm learning a new language/framework.
- Create a new repo
- Setup a new starter project
- Deploy that new starter project
- Build on top that something that is useful to me - A signup flow?
I default to signup flows because I wrote signups for Microsoft for almost 7 years, so I know it REALLY well.
After those steps, I go through a tutorial somewhere on the internet for that language.
What do I need this framework/language to do?
- Do I need it to do some cool animations?
- Do I need it to handle timezones better?
- Do I need it to improve my scalability for a project?
- Do I need to improve the security of the framework?
- What dependencies does it have?
- How does it handle scale/maintenance/security?
As you can see one question can lead to the next. I try to be methodical about answering those questions and document, document, document. Every repo SHOULD have readme.md. It doesn't mean it will, but it should.
That is how I get started and then I have a project with that new framework/library and I keep plugging away. Something to note on my steps above, EACH STEP IS IMPORTANT!
- If you don't have a repo, then you can't save your progress
- If you don't know how to setup a starter project, then you can't create a complex one.
- If you can't deploy it, then you are NEVER done. (I'll rant on that shortly)
- Expand and grow - if you can't build on top of it, you haven't learned anything, you are only a C&P engineer.
If you build an amazing web application and it is secure, scalable, well-documented, and runs amazing on your machine, then you are not done.
Until you deploy your application on the internet it is not done!
I have interviewed hundreds of people over the course of my career and they all want to show me their amazing class project. They bring their laptop to the interview to show me.
The dialog usually goes something like this:
ME: "That's looks great, how do I see it on my laptop?".
CANDIDATE: "I haven't deployed it, I don't have that setup, Its not public facing...".
ME: "Cool, I understand, how would you deploy it?".
That often takes the interview down a path that the candidate didn't want to go. It continues:
CANDIDATE: "I would deploy it on Heroku."
ME: "Why Heroku?"
Oh, the twisted path of DevOps that no developer speaks of, but always refers to the infamous "DevOps Team" that handles the CI/CD pipelines.
IF YOU HAVE NOT DEPLOYED YOUR CODE THEN IT IS NOT COMPLETED
End Deploy Rant
I hope this helps you get started with your learning process. Remember we all do not learn the same way. You need to figure out what works for you. I like creating a project, tweaking, deploying, tweaking some more, deploying, etc... The more I do it, the more I realize there is a better way, and then I keep refactoring until it is "perfect". For the record, I have yet to stop refactoring, so perfection is not yet achieved.
QOTD- A goal without a deadline is only a dream.