Imitation is the Greatest Form of Software Engineering?

Living in Los Angeles virtually my entire life, moving to Silicon Valley about 7 months ago was a very new and scary experience for me. Just a little over a year ago I did not know anything about the tech industry and especially did not know anything about software or programming. However, as I mentioned in my previous blog posts, fate seemed to be on my side and the people I associated myself with all seemed to be doing the same thing, being into tech, which also made me gravitate towards it as well.

It has been 7 months now, and starting today I am happy to say that I have just surprisingly been offered a full-time job. If you told me how I would have a full-time job as a software engineer this soon now on day one, then I would not believe it, and still can barely fathom all that has taken place. But as surprising as it is all sounds, it happened, I’m living it and I’m going to tell you the most important lesson I learned in my time here: imitation.

I think the most important lesson I have learned being in this environment is to copy engineers around you. What do I mean by that? What I mean by that is that you can learn so much from looking at the workflow and thought-process of other engineers (especially ones more senior than you) and emulate all the great qualities they do that you do not yet. For example, I remember very early on my roommate who at the time was just an intern (so technically he is more senior than me since I was nothing at the time) and I vividly remember he reiterating to me two things when he would give me advice: get good with Linux commands and be good with theory learned in data structures class/Leetcode because that is how you are ever going to get a job. I think everyone learns this lesson sooner or later, but I think it is safe to say that learning sooner is better. Another thing that I learned from him without him directly telling me is the importance of keyboard commands when regularly navigating your computer or when you are using an IDE. It increases the time and therefore productivity.

During my internship, I have also learned and emulated a ton of different aspects that I have seen or been told by fellow senior engineers around me. One example which was rather recent was about project prioritization. For example, as an engineer, you are probably going to be working on multiple projects big and small, hard and easy. This can overwhelm someone especially when you do not know which to work on first. Of course, nearer deadlines are a pretty good indication of what to work on first but what I learned this may not always be the case. There is a concept called “low hanging fruit,” which means to get the easier tasks done first before you tackle the harder ones. This is good because being on a harder bigger project can really be mentally draining and switching off to something totally else and getting stuff done is not only productive but lets the brain mentally rest from this context switch and boosts confidence since you are accomplishing and pushing more code faster and easier. Personally, doing this in my day-to-day workflow has been extremely helpful to not only being more efficient, but lots of the time I figure out bugs when not actively looking at the code I am trying to fix. Must be a psychological reason behind this, but it works and you should give it a try too.

Overall, my main message in this blog is to not talk about all the things I learned throughout my journey, but more of that one of the best ways to learn is to copy others instead of learning yourself by being burnt by fire. This not only will make you a better software engineer but also give acknowledgment to others of respect since I guess as Oscar Wilde once said, “Imitation is the greatest form of flattery”.

Print Friendly, PDF & Email

Leave a comment

Your email address will not be published. Required fields are marked *