Share your biggest challenges as junior developers

I have few friends and colleagues that have recently started working as developers and testers, and I've tried to mentor them a bit. We've talked about what they were struggling with and I've noticed that most of them were under the impression that they were the only ones experiencing a particular problem. From my experience I know this is very unlikely so
I would like to write a post (or few) about the most common problems junior developers are experiencing and for that I need your help and input.

What were the biggest challenges you faced during the first years working as a developer/tester?
Were these mostly technical (e.g. unknown tech stack, in-house framework), social (difficult colleagues, bosses, etc) or was it something else?

If you would like to help, leave a comment below and I hope that will show others that they 're not alone in their struggles.

Not even my first year yet as a developer - only on the job for 5 months now, but my biggest challenge has been knowing when to time-box myself if I'm stuck on something (asking for help). I can be very stubborn in wanting to figure out things on my own. It's a delicate balance.

Knowing your own limitations and accepting them is probably the biggest challenge. We all want to do good right away. Facing your lack of knowledge on a particular subject is difficult enough, asking for help can be tough for some people. When I started, I used to tell myself that I didn't belong there, thanks to the good old imposter syndrome. Having a mentor or a colleague reassuring yourself that you are just where you are supposed to be right now helps tremendously.

Damien, it's great to hear that you have someone to support you on that journey. Almost everyone I know went though some of these situations and that's why I'd like that we as a community discuss it more, to show others they're not alone :)

As background I have a degree in Computing with Game Development. Lots of OOP, some project management, some database stuff, 25% general game development. After an internship in my current company I now work there full time, graduated one year ago. I aimed most of my degree towards becoming a game programmer. I'm now work in web, sometimes iOS.

Everything I directly do at work I didn't learn in university. Learning Swift during my internship to ship some Apple Watch stuff, Javascript (mostly Node) and now PHP. Learn quick, get to work, improve as you go. SQL never clicked with me in university, luckily I work with a great developer who started out doing DB work before anything else. Thanks @scottharrisondev
.

I had learnt everything in a beautiful OOP, compiled, statically typed language world. Then I worked with Javascript.... But actually the hardest part is learning where and when you can compromise now, accrue some technical debt, and get a feature developed. Most features over the last year have involved doing something slightly new and different for me. Huge learning opportunities but it's harder to estimate how long things will take, also makes it easier to introduce bugs which I have to later fix. So then I keep creating technical debt and struggle to find the time to fix that. Luckily I get away with it, our lead dev praises how I like to do everything correct and well structured so maybe it's not that bad.

There's often a lot of assumed knowledge in the web development world, even as we try to make it more and more accessible. For example when I started I didn't know what a .env file was and because they're not tracked by git I didn't know it was missing. Why does nothing work? Should I bother others because I can't even run the project or just keep googling? The answer is ask people, it gets easier. It keeps getting easier.

One of my biggest challenges when I was a junior dev was about self-doubt and losing track of what I was actually accomplishing. It's easy to get caught up in a project you are having problems with and lose confidence in yourself. In reality this is just a sign of you moving on to bigger and better things and learning. I try to keep in mind all of the projects I've been a part of up until this point and realise that hey actually I have made some pretty cool stuff that has made peoples lives easier and this is just another one of those projects...only difference is that it's in progress!

I would say two of my biggest challenges have been finding a job and staying abreast of learning everything you need to be successful. It's an interesting logistical challenge. However, I end up creating a lot of stress for myself as a result. I've learned over a long time of trying that project based learning is far better than just reading books.

I agree, George, skills need to be learned through practice. Josh Kaufman said it the best in his great talk about learning new things quickly: "you want to learn just enough (from books) that you can actually practice and self-correct".

What were the biggest challenges you faced during the first years working as a developer/tester?

Were these mostly technical (e.g. unknown tech stack, in-house framework), social (difficult colleagues, bosses, etc) or was it something else?

As a tester, the biggest technicalish issue in the beginning was that a lot of testing is tribal knowledge. I'm in Pittsburgh, and there's 1 university in the whole city that has a testing class. And it focuses only on unit testing, so even if I went there (I didn't) and took that class (still didn't), I wouldn't know how to be a QA. (The course textbook is open sourced if this topic interests anyone).

It wasn't even issues with how to Selenium or Jasmine or whatever. It was just like how do I write addequite coverage or think in a way to write tests like a user would use the system. Or what is regression testing or integration testing or acceptance testing and what's black boxes and stuff...

Which kind of leads into the more social issue I had which I still have 4 years later: what the hell is anyone saying? I'm not from a CS major. Just half the words people say are confusing. Day 1 they wanted me to go to stand up (that's a noun?) where people were talking about not having bandwidth (get a better cable provider then?) to do everything this sprint (why are we running?) and how that was the biggest blocker (okay, context clues, woo!) and impediment (speech?).

Like, it's a whole new world and people take for granted that they're immursed in it. I felt like an anthropologist (or mathematician, I guess) studying a new group of people for months. When I onboard someone now, I tell them to go to the meetings, nod occationally, and IM me when something confusing happens. That way they look attentive but can have their wtf moments over Slack where I can explain and they can refer back to it later.

For me, it's what technologies to learn and work on. I'm an Oracle APEX developer, which I do love. But I want to branch out and learn other languages so I'm not stuck in one field, and potentially even move onto one I prefer. But I just can't choose one and everyone is like "Oh do this language, but don't do that one", and everyone contradicts themselves aha.

One of my biggest difficulties so far has been getting connected. I did a remote boot camp for a few reasons and it took me about a year and a half to finally find my way into a comfortable place socially. I'm still looking for work (working hardware in the meantime) which I think has a lot to do with not knowing how to talk to other developers. Not having others around is lonely and for that reason I feel like I've missed out on a lot of learning.