Every engineer has questioned at least once in their life whether they are skilled enough for their chosen field. I experienced these doubts when I started my computer science degree at university, and despite the fact that I got through the first three years successfully, I still wasn’t fully confident in my abilities when I started my internship at FreeAgent.
However, this is entirely normal. Every engineer faces challenges on a daily basis, no matter how many years of experience they have. In this blog, I’ll share some methods that helped me overcome the fear of not being skilled enough.
Practice makes perfect
One of the main ways to gain more confidence is to practise. Yes, it’s that simple… or maybe it isn’t!
At university, you should be able to learn the basics of a programming language and practise them while developing different projects. The problem is that the number of projects that students typically participate in is simply not enough to explore the different ways of implementation, and sometimes there might be a more efficient solution.
Another thing to keep in mind is that people are different and some of them need more practice. So don’t compare yourself to others, because everyone learns at a different pace.
It’s important to develop your thinking along with your programming skills, which you can do by completing coding challenges at free websites such as LeetCode and FreeCodeCamp. These challenges are a good way to prepare for job or internship interviews, as most companies use the same format to examine their candidates. They will definitely boost your confidence and help you to remain calmer in these kinds of situations.
There are also really useful YouTube tutorials for different programming languages where people show step-by-step how to implement certain functionalities or even whole projects. These can be a great way to maintain your skills and learn something new.
The more experience the better
As a software engineer, the best thing you can do is solve as many problems as you can. That way you’ll be more confident when dealing with a similar situation in the future because you will have already experienced it.
Internships are a great opportunity to gain this extra experience and put into practice the knowledge you gained at university. If you’re a student, I’d encourage you to find one, as this is the perfect opportunity to learn something new and actually be paid for it.
You’ll have the chance to work with people who are more experienced in the computer science field, each of whom has a different way of thinking. This will really benefit you, as they’ll suggest different unique solutions that will be applicable not only to the current project but also to future ones.
People will be happy to guide you, so don’t be afraid to ask questions when there’s something you’re unsure about or you don’t understand. This doesn’t mean that you’re not smart enough – on the contrary, it shows that you’re being involved in your task, paying attention to the details and trying to learn as much as you can.
Give yourself time to do the necessary research
The first thing that came to my mind when I started my internship at FreeAgent was: “Am I going to be able to finish this project on time?”
I spent the first few days copying and modifying some existing code, which was my first mistake. I didn’t give myself enough time to analyse the code and its structure and to understand the purpose of the existing classes.
What’s more, this was a completely new programming language to me, which made the coding even harder. I barely made any progress because I didn’t understand it, which in turn affected my confidence.
The first step to achieving a better understanding of a piece of code is to take the time to learn the basics of the programming language. Although programming languages tend to follow the same logic, they have some specificities in their syntax.
The next step is to read about the architectural pattern being used, because this will give you a rough idea of the functionality that each structure has. And last but not least, if you’re in a company, ask a team member to explain the main parts of the code and how they work. I guarantee this way you’ll fill in most of the missing pieces in your head.
Just keep in mind that there will always be something that doesn’t make sense when you start a new project, so be prepared for that and accept it. No one expects you to know everything from the beginning and you don’t have to figure out everything alone.
Take a break
Some of us, including me, tend to overcomplicate a given problem and spend a lot of time on it. This happens sometimes even to the best software engineers.
Most of the time, the reason is that after hours spent in front of the computer, our eyes are getting tired and we can’t even see the obvious and simple solutions. This leads to frustration, which impacts our concentration and thinking.
We start blaming ourselves and become less productive, but in reality, we just need to rest. In these situations, the best thing to do is to take a break from the monitor or move on to a different task. Once your brain is refreshed, you’ll find the solution more quickly.
Don’t copy solutions without understanding them
Speaking of fixing bugs, let’s not forget that Google is our best friend – or more specifically Stack Overflow, where we can find solutions to thousands of common problems.
For a beginner engineer, sometimes it might be hard to understand the proposed solution or apply it to the code. In both cases, don’t hesitate to ask someone from your team to explain the code to you and help you modify it for your project.
What’s more, the person might suggest even a better and more efficient solution. Try to avoid using a code that you don’t understand, because you won’t be able to work with it nor modify it if needed, and you probably won’t be able to solve the same problem in the future.
Play with the code
To me, programming is like maths. Even if you have a lot of ideas for a solution, you need to implement them in order to see which one will actually work.
Don’t be afraid to play around with the code, because you won’t find the solution by staring at it – and sometimes what appears to be the most absurd solution can actually be the answer. Also, testing different implementations means making mistakes, which is not a bad thing. This is the best way to learn and get a better understanding of the flow of the code.
Don’t ignore the ideas that don’t appear to be good enough, and don’t try to implement the perfect solution from the first try – you can always improve your code later. The important thing is to make a start and write a few base lines on which you will continue your work. And remember that you can always ask for help if you can’t spot an error or you don’t understand why a solution that seems right to you doesn’t actually work.
Conclusion
Being a software engineer is not an easy task, considering that you need to be up to date with the latest technologies – which are evolving each day – and that you have to maintain and further develop your coding skills at the same time.
So don’t lose confidence in yourself. It takes bravery to start this journey, which will be full of ups and downs. If you’re really involved in it and make the effort, you will definitely achieve results. Just give yourself time.