So you're a new software engineer ay? Well, let me bestow upon you some of the knowledge I gained over my 8-year career as a software engineer.
Contrary to what you may think, seasoned software engineers don't know that much. Let's be honest our industry moves incredibly fast regardless of your area of focus (devOps, frontend, backend, etc.), and because of that, it becomes impossible to know every little detail about every new tool/library/language.
What seasoned software engineers do have is experience. Since there is a ton of overlap in core concepts between all tools/libraries/languages seasoned software engineers just pull from their past experiences and apply that knowledge when working with something new. That's why it may seem that they can pick things up relatively quickly, but that's only because they've spent countless hours over years gaining that knowledge.
So don't get yourself down if you see seasoned software engineers pick something up quickly, instead ask them how or why they did something and try to absorb some of the knowledge that they took years gaining.
P.S. Us seasoned software engineers google even the most basic things so don't feel bad about doing the same 😃
Ok, so seasoned developers know a lot... but they don't know everything! So stop expecting anything different of yourself. To build off of that further it is extremely difficult or damn near impossible to be good at everything.
Instead what I suggest you do is learn the essentials/core concepts for software engineering and then focus on a sub-set and become an expert at that. This way people will start coming to you with specific questions/problems they have for your specific sub-set.
This kind of goes back to the first point, but it just takes time to learn this stuff. Don't be hard on yourself and don't try to learn everything at once. Take it one step at a time and you'll be fine.
So the good or bad thing about our industry (depending on how you look at it 😬) is that it moves so freakin quickly that you have to take the time to learn the hottest stuff. Now I'm not saying become a certified x technology developer, but what I am saying is keep your eyes and ears open to just play around with stuff so if you do need to use it something work or for a project you'll already have experience! At the same time though if you do see something gaining a lot of traction like Docker or React a couple of years ago, take some extra time to learn it in detail.
How does one keep up to date and learn?
Well, there are tons of different ways of doing so. You can listen to podcasts, read articles, follow prominent software engineers on Twitter, read books, or just simply research. Point being there are different methods, just do whatever you like the most.
One thing to note is that this shouldn't only apply to software engineering, you should always be looking to improve yourself in a multitude of ways.
I know this all may be overwhelming and at times you might feel like quitting but don't give up! It takes time to learn something or to work out some problem, but imagine how you'll feel once you figure it out! If you're ever feeling stuck its best to take a step back or even a step away from the keyboard and revisit the problem a little later.
This is something I had to learn the hard way. It's great if you love writing code all day and don't get me wrong there is nothing wrong with that. But it's important for you to take an interest in some other hobby/activity as well, it helps take your mind off of code and often helps you become a better person. You can learn so much from other activities and apply things you learned to software engineering. So taking time for yourself will help you become a better software engineer.
Phew, that was a lot of info but hopefully, that helps you on your journey down software engineering lane. If there is one thing I want you to remember from this, its this, just have fun, make cool stuff and just enjoy yourself!