We grow up in the education system being told to work hard and study so that we can understand any given subject inside and out. Put the hard work in and we can master a subject to pass any exam put in front of us. With subjects like math or English, this may be true. Looking at mathematics we first learn Algebra, then Geometry, Algebra 2, Trigonometry, and then you can apply those skills to understand Calculus, and onward to advanced statistics and number theory. Each piece builds on the last along the way, and once you successfully understand the subject you are able to solve any problem put in front of you. Well…for the most part at least.
There are mathematical proofs out there that still have not been solved, and if you can solve any one of them you will be rewarded with a hefty sum. The fact that these unsolved mathematical problems exist make me question if maybe there is some flaw in the educational model? In education, we are taught that exams are passed by individuals, alone, in a quiet room. The only people who succeed are the ones who simply know it all. If learning all the material in a class makes us masters of a subject, wouldn’t these proofs be solved by now? More often than not, when you fail, it isn’t due to a lack of understanding, it’s likely a simple arithmetic error, a single misjudgement in a choice of direction. In software it may be the lack of a single line of code, or even as simple as a missing semicolon.
Coming from an educational environment and into a professional one feels like the rules of life are thrown out the window. You did the work, aced an interview, got the job, thought you were prepared with all the skills for success. Now you have people you just met demanding things that you have never heard of before with deadlines for tasks that you don’t know how to complete and a seemingly endless list of things to learn. It is certainly not the most comfortable place to be in, but there are ways to ease and shorten the transition period and begin to thrive.
The tech industry in the modern world is a fast paced environment where the only people who succeed are constantly learning and building on their skills. Imposter syndrome is very common, and no matter how much we learn, we constantly feel behind. The second a developer starts to feel comfortable with what they know, an update comes out, a new technology is introduced, or they are simply asked to do something they have never done before. Of course there are fundamentals that will always apply; like objects, algorithms, and basic coding logic structures. These concepts will never disappear, and understanding those will help a new developer pick up new skills along the way, but that does not mean you can put your feet up and relax.
In software, it’s impossible to know it all. Even a senior engineer with 20+ years experience must continue to learn and grow or they risk falling behind. As a junior developer, this idea is extremely intimidating. How can someone new to the industry catch up? Is it even possible? It certainly can feel like it isn’t, but that doesn’t mean new developers should throw in the towel and walk away.
Software engineering is the only industry I have seen where a developer with under 3 years of professional experience can end up leading a team to success. It is certainly debatable if letting a developer with less professional experience lead a team is a good idea or not. There are no seniors telling you that you don’t have the experience to succeed, nobody holding you back from your ability to provide value to the team, and certainly nobody telling you that you’re incapable of being great at what you do. The only thing holding a junior developer back is themselves.
What should a junior developer be doing to propel themselves forward?
Junior Developer Tip 1: Read the Documentation
If you’re considering asking your mentor a question, attempt to prepare yourself for the answer. Engineering documentation will never go away, it should always be a first stop, certainly before asking others for help. Complicated questions rarely have simple answers. There is a minimum amount of knowledge required to be able to understand what you’re being told. Well written documentation will familiarize you with the nuances of the languages and concepts you’re trying to understand and it may even remove the need to ask for help in the end. Documenting your own code is equally important as ingesting others’. Don’t be surprised if you find yourself replacing your nightly novel with programming documentation for months to come.
Junior Developer Tip 2: Ask Questions
Ask a lot of questions. Asking questions can make us feel inferior, putting us in a place of vulnerability where we are openly admitting that we don’t understand. Although this is scary and as mentioned before it goes against everything we were taught in the education world, it is hands down the best way to wrap our heads around new ideas. Junior developers are intentionally surrounded by developers who know more than they do. Use that to your advantage. Don’t let your ego stop you from taking the path of least resistance. Use pair programming to learn from those with more knowledge.
Junior Developer Tip 3: Don’t Be Afraid to Fail
Failing is the quickest way to grow as a developer. Each failure is a learning experience, each failure is an opportunity. To grow from failures you must reflect on them. Figure out what you did wrong and how to avoid that mistake in the future. Just because code is easy to copy/paste and replace, doesn’t mean that is how you should fix your mistakes. Reading code is a skill that is debatably more important than writing it for a developer. When the skill of reading code has been mastered, finding your own mistakes will come much easier.
Being a junior developer is hard. There is a reason the career path is rather fruitful, and it isn’t an environment for everyone. As a developer, the path to success is simple. Find a place to work that treats you well and provides room for growth. The rest is up to you. There is endless documentation to read and millions of videos to watch. Learning takes time, be patient with yourself, strive to learn something new every day. See every challenge as a learning opportunity and never give up.