More often than not, you’ll come straight out of University, perhaps have an internship under your belt and exposed to a whole heck of stuff you didn’t know existed in the first place. I started a list of tools that I was exposed to in my first few weeks as a “Developer”: Docker, Rancher, Bamboo, Jenkins, Puppet, Maven, Gradle, Sass, Transpilers, Babel, Angular, React, JSP files, Continuous Integration and Delivery, AWS, Swagger, Inferno, Elastic Search, LDAP, Spring. The list goes on.
My point here is that in your first few weeks, months, if not years of being a software developer, you will be overwhelmed. There are so many industry standard tools and utilities that you just don’t hear about in an academic setting. We never learnt about CI/CD, how to deploy applications to an AWS EC2 instance, or how to debug a Maven project. Forget about learning industry standard tools, let me show you how to reverse a linked list again.
There’s a vast difference in the skills that university teaches you, and the ones you’ll need to become a competent developer. But realize this. You are not alone. Almost every junior I’ve talked to feels the same way. They come into the “real world” and are promptly humbled by the vast extent of learning they have yet to do.
There’s some good news though. Everybody knows. Every senior and intermediate dev out there has been through the same feelings of inadequacy, of feeling overwhelmed, of feeling like a fraud. They know what it’s like to have the title of “Junior Developer” and contemplate every life decision that lead them to take a job they feel like they don’t really know how to do.
So here’s my advice.
Embrace the feeling of inadequacy. Use it as the fire under your ass to learn everything you can. My first year as a developer I dubbed the year of the Annoying Talking Sponge. As an Annoying Talking Sponge, it’s your responsibility to ask as many questions as you can, and absorb as much information as you can handle. Do your due diligence first, if you have a problem, try fix it yourself, if it takes you longer than half an hour, ask. Most of the developers I’ve encountered are quite happy to sit and knowledge share because they’ve sat in your seat before.
Focus on depth rather than breadth. I assumed to be a competent developer that I’d have to understand everything about the software delivery process. I wanted to be able to write my own Spring backend application, design and implement the front end in React, plug it through to AWS then automate the build process with a CI/CD pipeline. What I set up for was an exercise in frustration where I’d flit from one technology to the next, gaining a general understanding of what it did, but without implementing anything.
Comparing yourself to others I’d also deem a necessary evil. “I wish I was as good as X, they know f*****g everything”. It’s an unfair comparison, but a necessary one. They’ve most likely been in the industry for several years, and this is your first. It would cheapen their years of blood, sweat and tears if you came in at the same level as a senior developer. Sure you’ll feel like you’re ‘not as good as’, or ‘know as much as’, but that’s the whole point of having role models and people to aspire to. These are the people you need to surround yourself with to learn! If you can, approach one of these people and secure them as a Mentor. It’s easier said than done, but you’d be surprised how many intermediate or senior developers are quite happy to take up that mantel for people they think are worth their time.
When I pressured some of these seemingly omnipotent lords of development how they got over this inadequacy hump they surprisingly all came back with the same answer…“It just takes time.” So, if you are a junior developer, perhaps feeling a little overwhelmed. Stay focused, work on things that are relevant to you right now, and just give it some time.