Then please don’t suck at this.

I have been working as a Software Engineer in a big company for close to two years now. I have interacted with a lot of developers both internal and external to my company. One thing I found missing from a lot of these developers was the ability to put their thoughts into words.

Some of them had a world of knowledge and experience about building systems and platforms that are used by millions of users but when it came to share that knowledge they lagged behind. I am not saying that the technical knowledge is any less important than communication but if you have the combination of both you can become a great asset for any company.

Why you need to invest in your communication skills?

You are great at your job. You write beautiful, clean code following all the good coding principles like reusability and separation of concerns. You can switch between various technologies and deliver projects before deadline. But still you find it hard to make progress at your company. Your colleagues never listen to you and your manager gives you an average performance review in spite of all the good work.

It is very important to have an ability to showcase your work to the person who might not be adept in your field. You must have the skills to explain your work to any one be it your manager, the CFO of the company or the stakeholders of your company.

Why too much modesty can hurt you?

I know being humble is important but too much modesty can hurt you in the long run. If you have not read this article go and read it and then come back. The writer of this article gives some great advice about how a software engineer needs to approach his career. He clearly states that

Modesty is not a career-enhancing character trait. If you are part of a team effort and the team effort succeeds, the right note to hit is not “I owe it all to my team” unless your position is such that everyone will understand you are lying to be modest.

You must not fear from explicitly stating what was your contribution for the success of the team. There is nothing morally wrong with this and you must get credit for what you did.

Why you need to learn how to negotiate?

Negotiation is a skill that you need not only for your job but for your life. The people who are able to negotiate well find it easy to get things done in life. Whether you are negotiating salary with a new employer or fighting for a raise with you manager, you must look for a mutually beneficial offer and learn to say NO to things that are against your interests. I highly recommend this negotiation course on Coursera by Michigan University which can help you to learn some basic negotiation strategies crucial for your career.

Everything is negotiable. Whether or not the negotiation is easy is another thing.

Why you should be writing?

An engineer who writes code should also write essays. Do read this article that explains why Software Engineers should write. If you can write good code, it should not be a problem for you to organise your thoughts into an article or a blog post. Writing is a great way to promote your skills and share your knowledge with others. Whether you are writing an answer on Stack Overflow or a Github commit message, good writing skills can help you grow as a professional.

Some of the essays by Paul Graham simply blow my mind. He is an amazing example of a programmer who is able to put his thoughts into great essays. Think about the popular Software Engineers whom you admire the most. Are those generally the ones that are the best in their field or are they those who share their work with others via books, podcasts, blog posts or Github?

Why networking is important?

Your company needs to do some cost cutting so they decide to lay you off. You are devastated and start looking for new jobs. Suddenly you remember a random guy you met at a technlogy conference who shared his contact with you. You talk with him and he is able to get you a better job.

Building healthy relationships with people is very important. You never know when some one can prove to be of help. Conferences, Hackathons, company events and meetup groups provide some good opportunities to network. This does not mean you must try to network with each and every individual. Try to pick some people who you genuinely believe you can gel with and try to provide some value to them. Once they perceive you to be of great value, you will pop up in their mind whenever they see an opportunity.

The above mentioned skills along with your technical skills can propel your career as a Software Engineer. Don’t forget to invest in these skills. Read some good books or talk with other engineers who are highly successful in their careers. Once you have a strong hold of these skills a lot of things will fall into the right place.