If I Could Start Over As A Software Engineer

If I Could Start Over As A Software Engineer

Starting a career after college can be daunting to a lot of people, certainly that's the case for me. In an ideal world we want to have a mentor. Someone who would show us the ropes right from the start. Someone who would help us make sense of the complexities of different career paths that we could take especially in a loaded field like Software Engineering. Somebody that would point us to the right skills to acquire in order to excel in this field.

But for most of us this is far from reality. We had to try a lot of things, and make tons of mistakes along the way. Which is what happened to me. Even with more than 8 years of Software Engineering experience under my belt, I feel that I'm just getting started. From these mistakes, I've identified things that I would have done differently if I could start over.

Create a Github account and learn how to use Git

It is embarrassing to admit that I only learned how to use Git after my 5th year in Software Engineering. Looking back, I don't understand why it took me so long to learn about a crucial tool used in my field. My immediate response would be that we're using a different kind of version control system. While that was accurate, it's not enough of a reason to be unaware of such an important tool.

Tools of the trade

Having a Github account is a way to document my development as a programmer. I've taken numerous programming challenges starting from college to job interviews throughout my career. It would have been better to have those saved in Github. Also, when trying to learning a programming language I found that it's much better to work on small projects to solidify the concepts rather than spending all my time reading a book about it.

With all of these potential artifacts, Github would help me store these codes that I can look back on. Somewhere where I can also point potential employers to to show what I have worked on. While it's not comprehensive by any stretch, I think it's better rather than the bulleted items of skills in a resume. A lot of companies are doing this right now. Instead of asking you to reverse a linked list or invert a binary tree on the spot, they would ask for your Github account to get a better understanding of your total body of work.

Build a solid foundation of Computer Science concepts

A good Software Engineer isn't someone who knows eleven programming languages, nor someone who knows all the features of a language by heart. At the end of the day, these programming languages are just tools of the job. And just like any other jobs, there is a tool best suited to accomplish a particular task. Once I started to accumulate some experience and get to learn about different programming languages, I started to notice that they have a lot of overlapping concepts – a pattern of some sort.

A popular Computer Science course, Harvard's CS50

So instead of trying to learn multiple programming languages to puff up my resume, I would focus mainly on having a really solid understanding of important Computer Science concepts. To deeply understand what it means to write an beautiful and efficient code. While I may have not actually written a breadth-first search or a merge sort algorithm in my daily work, it's crucial to have a knowledge on these fundamental algorithms and data structures at my disposal. Recognizing these concepts would allow me to arrive at an optimal solution for a programming problem.

Seek difficult tasks

One of the biggest mistake that I've done early in my career is that I was hesitant to work on difficult tasks. Fearing that it would reflect badly on me if I don't get it right the first time. Projects that were too ambiguous were avoided at all cost. I needed some level of certainty, a direction on how to do my job. I don't want to look bad. I was intimidated of the unknown. What if I overlooked an important requirement? What if I misunderstood something? These are the type of questions that paralyzed me.

Understanding that these challenging jobs are what would stretch my capabilities and accelerate my development is a crucial lesson that I needed to learn. Realizing that hiding behind comfortable and familiar tasks wouldn't help me in the long run is something that I needed sooner.

Regularly work on my craft

Needless to say, taking my mind off work after each day is important especially for a cognitively demanding work like Software Engineering. Everyone needs some rest. But I realized that if I want to get better at what I do, I need to find time developing and expanding my skills outside of my time at work. It doesn't even have to be for long hours. If we can doomscroll ourselves to oblivion, allotting thirty minutes to an hour a day for something that's more productive and fulfilling should not be that hard. This, when done consistently, would ultimately add up and significantly help advance my career.

It's true that experience is the best teacher, but if one can learn from other people's mistakes, the better, since a lot of time would be saved. And it is this very idea that our society is built upon.

Subscribe to Dom Aquino

Sign up now to get access to the library of members-only issues.
Jamie Larson
Subscribe