Last November, I just graduated from my college. While most of the fresh graduates still have no idea about being a professional software engineer, I feel blessed that I got a head start on working as a software engineer. I never regret my decision to take a part-time job while still pursuing my bachelor degree, even though I had less time to play with my friends. During my two years being a software engineer, I realized and learned that being a software engineer is a life-long process. The following are some keys takeaways that I would like to share to everyone who wants to become a software engineer.
Have a Growth Mindset
I met many people who studied computer science/software engineering with a fixed mindset. Fixed mindset people believe that their qualities are fixed traits and cannot be changed. During my years in college, few of my friends are quitting on programming course because they believed that they are not gifted or talented to do that. They believe that you need the talent to be able to write computer programs. The world of software engineering is ever evolving. You can’t thrive and be successful if your mindset is fixed. While people with a growth mindset believe that their learning and intelligence can grow over time. One of my friends really sucks in programming in his early days in college. But he always pushes himself to become better. Now, he’s far more skillful than my other friends who are smarter than him who never push themselves to achieve more.
Focus on your problem-solving skill
I’m so grateful to visit Microsoft Indonesia’s office during my college orientation. We were having an office tour event and a brief seminar about tech-industry and some motivational talk from the tech evangelist.
“Focus on your problem solving skill. Pay a lot attention on the algorithm and data structure class.”
- Mr N. (Microsoft Tech Evangelist)
I didn’t expect that technology will evolve in such a very fast pace. Frameworks come and go. New programming languages are released every year. So what should I learn if I can only use that skill for a few years?
As a software engineer, you are a problem solver. You are not just writing codes but you are instructing a computer to solve problems based on your solution. Do some coding challenges that enhance your logical and algorithmic thinking. You can find it from websites like Hacker Rank or Codility. Understand the problems, and fix it using codes that you write!
Be Flexible with Programming Language
Many software engineers are either too comfortable with a language or too afraid to try a new language. Ajey Gore (GO-JEK’s CTO) said that programming language is like metal. Every metal has its own potential and capabilities. Gold is good for making luxurious stuff. But will you create a tank with gold?
The same thing goes to the programming language. Each programming language is created with a purpose and to solve a certain problem. You love C++ so much, but using C++ to build a web app is not a good choice. Choosing the right tool for a certain problem is something you need to learn in your journey as a software engineer.
But I’m not saying that you don’t need to master or go deep with a programming language. Being fluent with a programming language is also necessary. It will help you to finish your task faster and you can move on to another challenge.
Software Engineering is Craftsmanship
Everyone who learns programming can create a program that runs. But what distinguish a good program and mediocre or even bad programs?
Writing good code is a life-long journey. When you are working by yourself, you may think that everything is fine. You write code, you test it, and it runs based on your intention. But one day you will work in a team. With other fellow software engineers. Writing code in solo mode is really different with when you do it in a team. You will find that your teammate hates your code, and you hate your teammate’s code. Your program shows up error, you fixed the bug, but new bugs arise after that. You are dealing with the legacy codebase and you hate that you are assigned to maintain that project while you can’t even understand the system because you can’t read the code.
That’s why it is called craftsmanship. You are not just writing software but you craft it. You write good and readable code. Your software is bullet-proof because you test everything that you write. Your teammate is happy to work in the same codebase with you because it is easy to read your code.
With two years of experience, I’m sure that there are still many things out there that I don’t know yet. I’m happy that this career is not a repetitive job and I can always improve myself to become better and better every day. I hope this article can inspire anyone who wants to pursue their dream to become a great software engineer. If you like problems and challenges, this world is suitable for you!