How to be a better junior: an overview
I realize that not a lot of actual first-time juniors will read this article. However, I'm convinced that anybody who works in a team and has to deal with people (either more experienced or less experienced) will find this text useful. So, here it goes!
Hey, have you just landed your first job in tech? First of all, congrats! Second of all, after the initial excitement passes, don't panic. Everything's gonna be fine. Yes, you don't know these people who you share an openspace with; you're not familiar with the project they're expecting you to work on; you have no previous experience with the frameworks and languages used - it's fine. We all start somewhere.
When I got hired by Spectory, I found myself in a pretty difficult position. It was my first real office job; I didn't know what to expect. I also didn't speak Hebrew well and was too embarassed to admit it to anyone. First weeks were tough, man. But these first weeks in particular taught me something that I wouldn't have learned any other way. So let me share these tips with you.
It's important to understand that you're not completely alone on your quest. You've probably been introduced to at least one person in your team, so talk to them. Ask questions, listen carefully. They're working on the same project as you, and they want the project to succeed, so they'll do their best to educate you, be sure of it.
There's a caveat, though - if you rely too much on others helping you, you don't learn a whole lot. Besides, at some point you become annoying. One thing new developers often forget is that they're not anybody's responsibility - apart from their own. Yes, all this is stressful for you. But this is stressful for everybody else as well; they have work to do and there's a junior constantly bothering them with questions and complaints. "I tried everything, it doesn't work!" - first, if you need help, make an effort to articulate the problem as best you can. But more importantly -
You have no idea how many problems I solved - or helped solve - by just entering a correct set of keywords into google search. That's right - I don't know everything, and I forget a lot. So I do a lot of googling, as does every single developer with Internet access, junior or senior, unless they work with some really exotic or cutting edge technology. And your designated help will google your question too, chances are. So, next time save you both some time and google it yourself.
By the way, as it turns out, googling is not as easy as it sounds, and somehow I often find myself in need of an "How to google" article. In general there's not much to say, though. The only thing that helps to come up with a correct google query is understanding exactly what your problem is.
Three things you're required to know in order to successfully look for answers: what you're doing, what you want to achieve and what is the actual result. Sometimes you run a shell command and get an error output - google the error if it's unclear what could've caused it. Sometimes it's gonna require more knowledge.
It's easy to understand stuff when you've worked with it for some time. More often than not, though, we have to work with technologies, tools, libraries or language constructs we didn't know existed until two minutes ago. There's one important point that I want to make. Not to state the obvious, but when dealing with unknown, make yourself acquainted with it. Read documentation; look up code examples. Devote half an hour of your day to learning more about things you don't fully understand. Why am I emphasizing it? Because people tend to misunderstand the "learn by doing" concept. Practice makes perfect, that's true - but no practice is considered healthy when it's all mindless copy paste. So, come on, educate yourself.
Since I adopted these principles (God, I sound like a sixty year old, do I?), my life became much easier. Yes, this text is for developers facing new challenges, but not really. It's about unfamiliar things and curiosity, communication and problem solving. These are things we encounter a lot in our everyday lives, so it makes perfect sense to apply some techniques. And as developers, we're damn good in applying techniques.