How to Become a Great Software Engineer
By: Fatos Morina
Tags: Machine Learning, Software Development, Technology, Software Engineering, Programming

Value Your Relationships With Others

No matter how hard you work, your relationships are extremely important.

No amount of money can buy the time you spend with your family or loved ones.

Sacrificing that time and instead simply trying to focus your whole life on software engineering will make you less happy, which can also make you feel less connected to others and more miserable. As a result, you are more likely to get fewer things done.

As the founder of YC Combinator Sam Altman puts this:

“Don’t neglect your family and friends for the sake of productivity — that’s a very stupid tradeoff (and very likely a net productivity loss, because you’ll be less happy).”

In the end, we are human beings, not human doings.

We need time to recharge and connect with our loved ones.

Professional relationships

Whether or not you are the only engineer working on a project, you must not let your ego cause you to think only of yourself.

For engineers, ego is the worst enemy.

Some engineers tend to think win/lose, in which others have to lose for someone to win. You think you are going to get promoted or get a raise if your colleagues look bad in front of your manager.

As a result, you will orient your actions toward showing off as much as you can, taking credit without merit, or belittling your colleagues, all to represent yourself as superior.

This will not only give you a superficial type of contentment (as you are continuously trying to belittle your colleagues), it’ll also probably damage your team productivity as a whole, as you and your colleagues will not be willing to work together at all.

If you want to be an effective engineer, you need to set yourself apart from what the majority of people are doing.

In every situation, you should try to reach the best alternative for the whole team.

You should think about mutually beneficial solutions that will ultimately lead to a better long-term resolution, rather than if only one person in the situation gets their way.

Cultivate the habit of asking yourself questions like these: “What’s in it for them that I can also benefit from?” “How can we both get some portions of what we want without damaging our relationship?”

You may sometimes have misunderstandings and short tempers with your colleagues, but this does not mean that the harmony and the relationships you have will be destroyed.

Your ability to deal with people is one of the key areas in your life.

Avoid arguments as much as you can and focus on long-term benefits.

When you begin with the end in mind, you do not want to be alone, even if you reach your biggest goals. Living on a big island with no one nearby is probably an adventure you do not want to experience.

There is no doubt that large projects are developed by a lot of people that work as a team.

Bill Gates started Microsoft with Allen, who even came up with the name Microsoft.

Elon Musk created his first IT company, Zip2, with his brother Kimbal, and he then sold the company to AltaVista for $307 million in cash and $34 million in securities. Instagram was initially started by Kevin Systrom and Mike Krieger.

Amazon has more than 341,000 employees. Microsoft has more than 120,000 employees.

Google, after tons of research on building the perfect team, has found that some of the most productive teams were the ones with an environment that cultivated synergy and embraced psychological safety.

Harvard Business School professor Amy Edmondson describes psychological safety as “a sense of confidence that the team will not embarrass, reject, or punish someone for speaking up.”

Everyone has the freedom to contribute, collaborate, and get involved in everything they want. Whenever you find yourself part of an argument with a colleague, try to understand their core interest. Address them so that they become reciprocally beneficial and productive.

In this way, your team can be a lot more productive by taking advantage of the strengths of every member. Teamwork is greater than the sum of its parts.

If you want to be an effective programmer, try to help your team become more synergetic. That can be done by valuing every teammate’s freedom and helping them feel very comfortable expressing different points of view without the fear of embarrassment. Allow everyone to contribute to and collaborate on everything they find interesting and worth contributing and paying attention to.

Be very kind.

Say thank you and please a lot.

Praise other people’s efforts.

Apologize as soon as possible.