I began my programming journey, by writing my first line of code in TurboC++ Compiler, back in 2012 and at that moment, I was completely blank about the infitinte possibilites that could’ve been achieved by these boxy machines called ’Computers‘.
Like most of you, I took my baby steps into the field of development, with HTML (Yes, I know It’s Not a Progamming Language) & CSS. The most striking thing that excited me about web Development was that,
It gave me this huge empty canvas, that I could use to showcase my creativity and share my art with anyone in the world.
It’s been a long & exciting journey since, then. Over the years, I’ve worked with several amazing people, won several hackathons, been an active open-source contributor, did an internship etc and I’ve realized that, the things I did back then were so different from the reality of the industry.
In these years I have learned a lot of things about software engineering and the software industry itself and I’m still learning new things everyday. However, at this point in my career I’ve been reflecting about a few of them and I want to share my experience with you.
These are the things that seem important to me and I wanted to share with the community, especially with the new ones that are starting their journey in the software industry.
1. Software engineering is not only about tech skills
We’ve all seen movies, tv shows where a random computer geek (*hacker) isolates himselfs from the world by sitting in a living room like it is a cave, and just rapidly types stuff on keyboard and stares at screen. You don’t have to be like that to be a great software engineer.
Software developers are not what you see on the movies. They are not Isolated people that only know about tech stuff without any social skills. Times have changed and tech people behavior has changed as well.
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. All of us stackoverflow around half of the time.
Of course, you need to have excellent technical skills but a great software engineer needs to have excellent soft skills too in order to be the teammate everybody will respect and appreciate in any team that you join.
This includes skills such as Communication, Leadership, Responsibility, Teamwork, Problem Solving, Flexibility, Ability to work under pressure etc.
2. 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.
As I mentioned in one of my earlier posts here, You can never learn a language to it’s full extent and this is what should motivate you to keep learning more and more every day.
It takes a lot of time, discipline and dedication in order to convert yourself into a great software engineer. You can study C++, .NET or any other language/framework for over 20 years, and still discover new things in them, every day. You can be a pro at something, become a quite renowned personality in the same, but there’ll always be more to be learnt.
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.
3. You don’t have to know it all
At the beginning of my career as a software engineer intern 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 and your own credibility as an individual negatively and diminishing the possibility of making the right decision simultaneously.
Always say the truth, say that you don’t know.
4. 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.
5. Take some rest in-between
Sometimes social media makes developers feel that they need to be coding all time, all-day long 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 focused while 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’ve been a victim of this. I’m a night owl and sometimes, I even push my limits to stay awake to try and resolve a bug in which my sleep pattern gets disturbed.
And a surprising thing that has happened with me at several times is that as soon as I go to my bed to sleep, when I’m not able to resolve a particular bug, after 4-5 continous hours. I get dreams of some sort of similar issue, and in that dream I find a clue to solve the bug with a neat 1-min trick, which I was not able to come up with in 4 hours of brainstorming. Weird, I know.
We as software developers 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.
6. 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.
7. Make your own identity on the internet.
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 when you 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:
I hope that these few key takeaways from 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.