Sooo... I just created a new Youtube channel (yikes) called Developer Habits. The main topics discussed in the channel are growth mindset, developer lifestyle and technical tutorials.
The first video is about tips for beginners. It's mainly about the things I struggled with as a junior but also saw our interns do when I was mentoring them.
That said, feel free to check out the video(and subscribe???) or just go through the list below:
So instead of trying to learn multiple languages and/or frameworks at the same time, just pick one. You can narrow your focus, learn the basic concepts. After you've mastered one, learning the next one(if you need it) becomes so much easier.
2. Take it slowly! Instead of rushing, take it slowly and try to understand what you're actually doing.
Another thing I did as a junior but also noticed when mentoring the interns is rushing. When you get a task, it's easy to get excited and start coding right away. Probably you'll succeed, eventually. In a hackish way. Based on my experience, you should instead grab a sheet of paper and start thinking about how you'd approach the task. In case you've got no ideas, ask help from your mentors or research from the internet. This way you can create a logical solution beforehand and turning the idea into a working solution becomes much easier.
Which brings me to another point...
3. Don't copy and paste the code. When you find a solution online, understand it, play around with it and rewrite it!
When you do find a solution from the internet, PLEASE do not copy-and-paste it. Believe me, I've been through the phase where I created various Wordpress websites sites just by copy-pasting different parts of code together. I got the work done, but the quality of my code didn't tolerate any criticism. It contained bugs and I didn't learn much...
So my advice in case you find a working example - go through it line by line, understand it and then rewrite it, adding your own modifications to it. This way it's not just an example from the internet but actually something you've written.
Oooooh boy! I can't emphasise the importance of that point. Timebox yourself when you start something new.
I've seen myself doing it and also noticed it during my last project that it's easy to get lost in time and try out various solutions that just don't work. I do encourage you to try things out yourself before, but a good developer knows when to ask for help. And that's why my advice is: whenever you start a new task, create time slots of 30 minutes. If you see that there haven't been any advancements during the last 30 minutes, go ask for help.
Regarding planning and chunking your tasks, just a simple and easy-to-follow tip - convert your task into small chunks. This way it's easy for yourself to follow what you're doing + you get the feeling of accomplishment whenever a chunk gets done.
If you're working as a beginner developer, then my advice would be to have a side-project that utilises the technologies you're using at work. Usually, at work, you can't create projects from scratch, but having your own projects gives you an opportunity to work with the part of the language/framework that you otherwise wouldn't use.
I remember when I started out as a professional developer. We were just about to start utilising Docker. I didn't understand much what it was all about. But then I created a pet project that utilised Docker combined with automatic deployment. After that, I was able to have a say in things related to Docker and actually use my skills at work.
I remember when I was pair-programming with my mentors. Sometimes I was thinking "omg, how doesn't he know that shortcut or that function"...Having been a mentor myself now, I got to see it from the other side. And my takeaway from that is - be humble because no one will know everything. Software development is about continuous learning. You may be more acknowledgeable about the latest small tricks/methods than your mentor. But that alone doesn't make you a great developer. Development is much more about communication, architectural decisions and software design than it is about small syntax shortcuts.
So...be humble. When possible, teach others but always be thankful!
Something I learned from my colleague when he was a junior - keeping a journal or log of what you've done and learned. A great idea for two reasons - firstly, you have to write things down the way you'd understand it later. But also, there's always a reference for how you've solved problems in the past.
I can't count the times I've come up with solutions for my problems while I'm doing something completely unrelated to programming. Sometimes it's when I wake up, sometimes it's when I've gone jogging. Sometimes it's just I go for a small coffee break.
My point here is that... You don't have to be working behind the computer all the time. You can still think about the problems while being offline.
The previous point naturally leads me to the importance of having a rest. Something I myself struggle to do, but...I strongly recommend you to take regular breaks. For example, you can program for 30-45 minutes and then take a 5-minute break. Believe me, it's good both for your health and mind.
Also, don't forget to take time for non-programming-related hobbies.