Over 5 years as a Software Engineer. These are the most important things that I've learned.
Tags: beginners, softwareengineering, myexperience
Published: 2020-08-31 12:47:18

In 2015 I started my journey as a software engineer and at the moment I was completely blank about how a software engineer should be, I only had with me the knowledge acquired from my previous degree and some courses that I took in order to learn the basic of how some things worked back then but that wasn't the reality.

In these years I have learned a lot of things about software engineering and the software industry itself and at this point in my career I've been reflecting about them and I want to share my experience with you. 

---

These are all the most important things that I need to remark and share with the community, but especially with the new ones that are starting their journey in the software industry.

## You don't have to know it all

At the beginning of my career as a software engineer I used to think that I wasn't allowed to say **"I don't know"**. I  used to think that if my job was to develop software, I should answer and know immediately how to do everything that I was asked, but no, that's totally **WRONG**.

It's okay to say **"I don't know"**. It's okay to say that you will investigate how the things work and then you will give an answer. People do not expect you to know everything, but they do expect that you are going to give useful and real information about what they need. If you say anything that comes into your mind with the only purpose of looking like you know the answer; You'll be affecting your team negatively and diminishing the possibility of making the right decision simultaneously. 

Always say the truth, say that **you don't know**.


## It's okay to be wrong

Okay, so your boss or somebody else on your team asked you something that you thought you knew how it worked and you gave your answer, but it was a wrong answer or it wasn't what was needed. Does that mean that they will think that you are not a good software engineer? Of course not, it's okay to be wrong.

It's okay to be wrong, what it's not okay is to don't investigate why you are wrong. If you are wrong about something you should learn more about that, you should investigate deeper to clarify your doubts.


## Software engineering is not only about technical skills

We all know a movie where a software developer is an isolated hacker living in a room like it is a cave. You don't have to be like that to be a great software engineer.

Software developers are not what you see on the movies, that was like 20 years ago. Software developers are not Isolated people that only know about tech stuff without any social skills. Times has changed and tech people behavior has changed as well.

The industry realized that living in caves was not the way to attract new people in order to expand and to find the new generational relief that in any industry you need to survive.

We are living in a digital era, and it is so easy to access information that the technical skills are not the only thing needed to be a great software engineer.

Of course, you need to have excellent technical skills but a great software engineer needs to have excellent soft skills in order to be the teammate everybody will respect and appreciate in any team that you join. 

Soft skills are not specific to a technology stack and once you learn it you won't ever forget it. Here is a [list of soft skills](https://www.wikijob.co.uk/content/interview-advice/competencies/soft-skills) that are very important to handle.

## Be patient

Programming is easy to learn. There are a lot of resources that will help you on that, but to be honest, it is not easy to be a great software engineer. 

It takes a lot of time, discipline and dedication in order to convert yourself into a great software engineer. Be patient, because that's what will help you to increase your knowledge and experience through time in order to become a great software engineer.

You will be wrong a lot, you will say "I don't know" a lot and you are going to be frustrated as well, but be patient, because at the end even if you have a talent for programming without discipline and dedication it will be really hard to master your skills.


## Always evaluate yourself

We are living in a fast changing era, each day we have a new technology, each hour somebody is creating a new project and each second a new JavaScript framework is created... 

This doesn't mean that you need to learn everything, because you won't, is impossible, but what you  actually need is to evaluate yourself to think about what you want to accomplish and with that what you need to do in order to reach that goal.

Make a plan to keep updating yourself, keep reading, keep watching videos, keep studying, keep practicing... The software industry is not waiting for anybody, is always keeping his fast track.

## Coding is not your air and food, take a break!

Sometimes social media makes software engineers feel that they need to be coding everytime, everyday and that if you take a break to enjoy something else you are wasting your time but that is a lie. Take a break!

It's okay to take a break, in fact it is better if you plan the amount of hours that you are going to stay coding on the day. When you spend too much time coding there's a moment when your brain is not giving quality decisions because it is exhausted and it needs a break. 

I know that we as software engineers love to code, but coding is not your air and food, you can have another hobby or simply you can enjoy your time doing nothing because your brain needs it and you don't have to feel guilty about it.

## Read the requirements twice before coding 

A common error that I used to make in my firsts days as a software engineer was that I used to start coding without understanding the requirements, at the end I had wasted a lot of time because what I've done wasn't what was needed.

Take your time understanding the requirements, read it twice, if you don't understand something make all the questions needed immediately. The more time you lose coding something without understanding the more time you are wasting to help your team in anything else.

If you need to write down your ideas, make diagrams or whatever you need in order to start coding with a clear idea of what you are going to do, then do it, the quality of solution that you provide will show the understanding of the requirements.

## Stay updated with software communities and digital platforms

In this era if you can't be founded on the internet then you don't exist. You have to keep yourself active on the digital platforms and software communities because that's what will appear google your name. 

A good thing that you can do is to build a reputation, this is not easy and it takes time, but once you built it, then your name will be shared between the communities without your effort and your opportunities will increase.

Stay updated on platforms like: 
- Linkedin
- Github
- Twitter
- Stackoverflow
- Dev.to

There are a lot more, and you can choose the one that you like most.

---

I hope that my experience would be useful for some of you. Please share with me about the most important things that you've learned in your journey.

Thank you for your time! :smiley: