Let's talk about learning new things - you can learn literally anything. It's all about committing you to want to learn and then sit down and start. But am I right saying, that it is always about learning things as much as possible, as fast as possible and with the lowest possible cost?
I think it is, but at the same time, I know that not even the majority of people actually think about it.
People want to learn something, but they don't do the planning, don't set up deadlines nor milestones, they aren't consequent with what they've thought on the first day. They never make notes and then they never remember what they committed to.
So you can learn anything but let's focus on a few tips on how to learn effectively.
And don't worry, I won't go crazy with it. You can follow Connor Grooms, who had a nice talk on TedX about learning Spanish or anything else in 30 days, or you can go obsessive like Max Deutsch, who challenged the World Chess Champion, Magnus Carlsen, after learning chess for one month - and did pretty well.
But those guys liver from teaching how to teach. So they can go extreme and do well. Normal guys, however, usually don't have this luxury. This is why I'll keep things rational and achievable also for people who don't live from teaching how to teach.
I'll tell you my story about how to learn web development. How I did that and how I suggest everybody doing so.
For every level, I'll tell you a bit of advice and add an example from my life so you can verify and adapt whatever you'll find useful.
You will need a few basic skills to even start thinking about web development.
Your first step is to choose, what technologies you want to use and what kind of projects you want to work with. This is not a trivial step as for people without experience in web development, choosing the right technology and programming languages in an Ocean of abstract words is just guessing.
My advice for this? Don't spend too much of that. At a certain level of skills, changing technology is just a month or two, and getting as productive as before in a new one, takes up to three months. Just choose whatever fits for you, whatever is currently on top, has a nice community and a large number of resources available.
This is exactly what I did when I choose ruby for my first commercial projects. I asked myself:
All three questions I answered 'yes' - so I didn't look much more. Just tested it out.
Without basic knowledge about syntax, language/framework mechanics and possibilities it offers you won't go far. When you'll choose the technology stack, just go to google and type what you want to learn. You can grab a course on Udemy if you like video classes or written tutorials. Whatever works for you.
The key is, however, to find something implementing a working project from scratch so you can follow these steps and create something on your own. There is nothing better to get new skills than practice. At this point, you can really easy verify if your technology choice was right and it's not hard to switch.
It doesn't matter what you'll choose as a starting course. Just pick any. On Udemy you have hundreds of them and most can be bought for 9$, like my course about API. And there are countless free courses and articles out on the Internet.
I would not start from getting a book to read, but rather a video course showing a real project from scratch.
When I started my adventure with web development, I also picked up a few courses. I used classes created by Gregg Pollack, at that time CEO of Codeschool company which unfortunately doesn't exist anymore. Now he is head of a VueMastery, another online-teaching company but focused on Vue.js.
However, If I'd start now, I'd just buy one of the most popular courses on Udemy and start from there.
I write a lot about Git, but usually, I cover some advanced concepts leaving basics for documentation. This is a basement of any kind of development though, and if You want to work efficiently, You need to master it at some point.
At the beginning just focus on basics. How Git works and why it's a must. How to commit changes and how to use merge/rebase. How to solve conflicts. This should be enough probably for few next months or years depending on how fast you want to advance.
Git is a powerful and I knew it can speed up work of any developer as crazy if used properly.
As I'm a perfectionist and productivity madman, I didn't want to go back to learning git in a few months or years so I grabbed an online course related to Git and learned everything at once. With total focus, it took me 3 days to grasp what is possible and how to resolve problems.
But honestly, I'm learning Git all the time trying to be better at it every single day. And I wish every single dev would do so too.
But that's actually it for basics. When I knew how to make use of Git, I knew my language-of-choice syntax and elementary assumptions, I just moved to step 2.
A lot of people stucks grinding theory over and over again, buying more and more courses, and before they even realize, they're totally burned out. Where is the sparkle from the start? Where is that enthusiasm?
The problem is that it's not about starting things that make people happy. It's all about finishing them.
The soonest you'll write and release a project that you can share with others compare with others, verify the quality and usefulness with the competition, the bigger is the chance you'll actually stay committed to learning.
The soonest you'll see actual real effects of your effort, the easier it'll be for you to stay motivated and focused.
So just create a project. It doesn't need to be a million dollar startup. It's just for you. Write first version and release. Ask others in the community how it is.
Don't think about creating Facebook as your first project. First of all, Facebook already exists so it'll be hard to earn a single dollar on that. Then it's too big.
Just make something small, something you really need. Maybe it's an application helping to plan your home budget. Maybe a task manager or a blog app. Who cares that there are hundreds of them out there already? It's for you. It'll solve your problems, allow you to practice skills and will be a position in your portfolio. Isn't that cool?
At the very beginning, I started a blog. I mean: I started to write a blog application. Sounds trivial? I say: "So?". I know that DHH published 15 min blog app video.
I, of course, know about Wordpress and all Ruby frameworks for blog applications. But none of that mattered for me as I didn't plan to be a billionaire out of the blog.
I wanted to be a developer and I needed to practice on something simple.
It doesn't exist anymore, but that's completely not a problem. I created a project, released it, added to the portfolio, wrote a few articles and get my first commercial job. That was all I needed.
If you want to be good at web development, you need people you can learn from. And no one teaches you more than your teammates from the project you're working on.
Even if you dream about own startup you just need a regular job at least for some time. Just to level up your skills in no time using the power of a team.
Getting a job quickly is better than finding a perfect job from start. If you'll start working for an unfair company though, just don't hesitate to apply to a better place.
I had a lot of luck at the beginning and a lot of friendly people around me wishing me the best and helping me out. Jakub Peter, a very talented Ruby Developer is one of them and he is probably the person having the most contribution in where I am right now.
I got my first commercial project from him and only after that, I got My first regular job. The Useo company is what I always dreamed about when it comes to the Employee-Employer relationship and I work with them part of my time since now (writing it in 2019).
What you can learn yourself is quite restricted and it discourages you very fast. If already are a programmer though, the same way you've made a lever from your team to boost your skills, you can make a lever from one more technique. A really long term one and really powerful. Teaching.
I believe that there is no better way of learning stuff than teaching. I don't say a regular school-teaching - but teaching in any way that works for you.
You can start blogging from time to time on Medium or blog on your own. You can shoot video courses or even do a talk on a dev summit or something like that. You can just help your teammates. Doesn't matter, it'll all help you much more than you think!
But this is not an easy task, I admit, so here are few points helping you with that.
Offer your help to somebody being a way better than you are at the current time. Maybe offer to do some tasks in exchange for coaching. If something will be too hard to you, he'll grab it at the same time guiding you about it.
Do you think it's not doable? You're wrong. Professional and enterprising developers know the power of teaching and they'll get also a lot of benefits.
In Driggl, we never accept free help for non-open-source projects, as we believe, that every work should be paid for, however, offer to allow several other ways of helping others how to evolve.
So you don't even need to look far to find people interesting in helping you grow.
Find a person who has either similar skills to your (or complements your skills) and build an application together. Then you can learn from each other, there are more inspiration, motivation, and ideas.
From my experience, it's always better to involve others in your projects if possible. If you don't know other programmers,
try to go to the developer's events, or even organize one. It's the easiest way to find someone with an initiative - like you!
At the very beginning, I worked on small projects with people from my university. It was a really nice approach but I had problems with finding anyone wanted to be an entrepreneur like me. Then I just looked for people near my city on the Internet and found several really enterprising guys and we worked on several small projects together which brought me a lot of fun and allowed to improve teaching skills a lot.
The next step is to find people that are where you were in the past and want to be where you are right now. This is a key mindset to actually start sharing knowledge. They're always there.
Just start, as early as possible, sharing what you know.
You don't need to be an expert in everything to start blogging. You don't need to be an expert yet to find people interested in your content. If you start learning something, they'll be always people that want to start. If you have a developer with a few years of experience, there are always people who just started their adventure.
And you don't be an expert to organize your own events. It's only about convincing better than you to come and have fun.
I started blogging from the very first project I released. I got several orders thanks to that and met a lot of interesting people I could collaborate with. Now I am still blogging, but other than that I connect people with similar skills and interests together.
I had several years of experience with advanced API applications when I started recording my first online course but the truth is, that I learned the most AFTER started doing so. From the people that actually bought it and asked questions, I learned twice as much.
And I won't stop doing it as this is the best way to improve my own skills.
The best way of learning is teaching. Everybody will tell you that. This is why you have so many people selling knowledge on the Internet. This is why there are more and more free resources available.
If you want to be a real expert in what you do, I suggest sharing what you already did. Confront with other opinions and skills. And then evolve.
But I also agree that the focus is the key. If you don't have enough focus, you'll never achieve extraordinary results in anything. Choose one thing at a time and put your whole effort on that and you'll be surprised how far you can go.