Skip to main content

What I've learned in my 3 years as a Software Engineer


“The more that you read, the more things you will know. The more that you learn, the more places you'll go.”
- Dr. Seuss

I just completed my three full years as a software engineer and it absolutely flew by. Along the way, I learned a lot hence I wanted to take some time to reflect on it and share a few important things that I've learned as a Software engineer.

1. Turning Problems into Learning Opportunities


Things are always going to go wrong, but there’s always an opportunity to learn from mistakes and then not make the same mistakes again in the future. We don’t control everything around us and there is no need to feel guilty when unexpected and unwanted situations appear. The art of turning a problem into an opportunity is a skill that can be learned by mind practice, clear thinking, by developing focus and acceptance.

Look at the things you can change, calculate the odds and analyze your chances. Accept the situation the way it is without exaggerating it and making the problem bigger than it actually is. Don’t try to fix the whole problem, try to transform it (breaking it into smaller ones) and turn it into a source of new possibilities. Concentrate on the possible outcomes of the specific situation, not on the problem by itself. The problem has nothing to give you, but the way of finding a solution for it can open many doors of possibilities in front of you. 

Create a list with all the possible moves you can do and choose one or more of these options. It is important to stay active and to create an action plan. Whatever the situation is, it is important to be able to move on and continue your journey.

2. Writing a good and clean commit message

Commit messages are a way of communication between team members. Let’s say there’s a bug in the application which was not there before. To find out what caused the problem, reading the commit messages could be handy. The proper commit message can save a great deal of time finding the recent changes related to a bug.

If we fix a bug or add a feature we will probably completely forget about it a month or two later. It’s not a good idea to think that if it’s not clear for others, they can ask us about it. Instead, we should provide proper commit messages for people to use as a resource in their daily work.

The perfect commit message should have certain qualities:
  • It should be understandable (by any person and not just your teammate) even by seeing only the header of the message.
  • It should be just enough with to the point information, and not too detailed.
  • It should be unambiguous.

3. How to Share Just Enough Information

As Albert Einstein once said, “If you can’t explain it simply, you don’t understand it well enough.” Being able to target, identify, and express a pain point or issue is essential to solving it in a way that is ultimately successful. 

In these 3 years of my career, I learned how to share just enough information considering the end person with whom you are going to share it. This information can vary depending on the end person because the information which your co-developer wants is not useful to your manager and as soon as this hierarchy goes upwards (till the CEO) you need to provide a more crisp version of your base information. Let’s say you have provided information with 10-12 lines to your co-developer. The same information should get crisper in 5-6 lines to your manager. We always need to think about the end person who is going to read your information and need to write that accordingly.

4. Attention to details


Developers who pay attention to detail tend to write higher-quality code. Computers only do what you tell them to do. If a code does not compile or a product has a bug, it’s not the computer’s fault. Exercising the ability to think through corner cases and writing codes that will handle various use cases allow for a much easier development process.

Early in my career, I would often declare work finished too early. I recall several occasions where, after letting my team lead know I was finished with a feature, they would review it and immediately find issues. Even if the code worked well enough, my pull request would still be appeared with comments. Situations like this often result from poor attention to detail.

A few strategies I’ve used that have helped me develop quality code while ensuring strong attention to detail include:
  • Testing: One way to make sure your code works for the full domain of inputs is to test it. Usually, this means unit tests., and perhaps even writing test-driven code.
  • Self Code Review: The first person to review my code is me—often, more than once. I usually open a pull request just for myself. I make sure all of the changes make sense. Then I make sure my code is consistent with the existing code.
  • Feature Review: I always make sure to review the story or feature I’m working on to make sure my code satisfies all of the requirements and acceptance criteria. There have been several occasions when I thought I was done, only to realize there was another requirement of the story I hadn’t addressed.
  • Take Notes: I try to document decisions I made while working on any code, along with their rationale. It’s easy to make a decision in the moment, only to forget it later when someone asks you why you implemented something the way you did.

5. Teamwork


As a software engineer, we must still be able to communicate regularly with other people and teams. As an engineer, we should be able to articulate project needs, as well as be able to discuss any challenges or problems that arise. We will routinely work with a number of other teams and departments at once, while also managing a team/resource of our own.

Sometimes we may be required to work with people whose ideas and philosophies we don’t agree with. Other times, misunderstandings arise and can threaten us and our team’s deadline but we should be comfortable working closely with others, compromising and innovating as needed.

That's all for this blog. I hope this will help you in your career as a software developer. Thank you!!



Comments

Post a Comment

Popular posts from this blog

Positive side of "Work From Home"

"Right state of mind is an extremely important trigger to support, sustain and scale up remote work or WFH." In this COVID-19 pandemic situation, companies all over the world allow their employees to work from home. Initially many employers were facing problems while giving employees access to all the tools they’d need to work from home. But after everyone settled in, what quickly became apparent to many office-based teams is that employees could be productive and focused when not in the office—in many cases, even more so. Employers everywhere began to understand that remote work really works. As this WFH is a part of our life now, I thought to start a series of WFH related blogs that might be helpful to other employees as well as the candidate who is going to be a part of corporate life. In this blog, I am going to tell you the positive side of working from home that I observed over the last 1.5 years. 1. Better Work-Life balance A lot of work that can be done remotely nowad...

What is Non-fungible token (NFT)?

Recently, Facebook CEO Mark Zuckerberg rebranded the social giant as Meta Platforms Inc., underscoring the growing popularity of a promising phenomenon: the metaverse. This Metaverse concept has a connection with non-fungible tokens (NFTs), the very token we can use to represent ownership of unique items? Hence in this blog, we are going to understand first what is NFT and then in further blogs I am planning to cover Metaverse. What is an NFT? The acronym NFT means non-fungible token, which means a unique digital asset that cannot be modified or replaced with something else on the blockchain. Unlike Bitcoin, which is a fungible cryptocurrency, which can be traded for a predetermined value, like any other currency or money. An NFT is a unique token with no interchangeability with other tokens – much more like a piece of art. Those unique NFTs do not have a set standardized value. Instead, non-fungible tokens (again much like art) are based on the current market value. The ...

Google I/O 2023 key highlights (Generative AI, New Pixel devices and more)

“AI is having a very busy year,” said Google CEO Sundar Pichai, kickstarting Google I/O 2023 at the Shoreline Amphitheatre. He said, the ‘AI company is reimagining all core products, including search with Generative AI, alongside announcing groundbreaking developments that will reshape the way users interact with the company’s suite of products and services. Gmail with "Help me write" feature After features like Smart Reply and Smart Compose, Gmail is now getting a new feature called “help me write.” It is a simple feature that can help you save time and effort when composing emails. Say your flight was just canceled and you want to write an email asking for a refund. The new feature can grab flight details from the airline cancelation email and compose a draft email for you. If you think it is too small, there is an option to “Elaborate” to make it more compelling, or you can even click on “Recreate” for a completely new email. The feature will start rolling out as a part o...