前言
对年轻的软件开发人员提出五条职业建议。本期英文来自@Bruce Flow分享。
英文从这开始~~
I’ve been working as a software developer for about a decade now. If I had a time machine and had to give my younger self one piece of career advice, it would be this:
Soft skills are as important, if not more important, than technical skills
When I was just starting out, I was completely convinced that technical skills are what makes or breaks a software developer’s career. I had the naive impression that developers who are great at building software would be the ones that get ahead faster. And wow, was I wrong.
As a work newbie, I quickly observed that developers who have passable technical competence but excellent soft skills were outperforming technical virtuosos in terms of career advancement and financial compensation.
I used to be on the same team with a developer who was ultra intelligent. He knew the intricacies Java Enterprise ecosystem like the back of his hand. He was one of the most competent coders I knew at that time. He could run simulations of complex multithreading scenarios in his head with little effort.
Unfortunately, his career progress was sluggish. It was hampered by the fact that it was not easy for others to work with him due to his difficult personality and meager soft skills.
Since formal education did not teach me much about these skills, I began to take notes about what successful software developers were doing. I did that in order to emulate them.
Skill #1: Marketing your work
In an ideal world, your work would speak for itself. Unfortunately, we do not live in an ideal world.
Great work goes unnoticed all the time. We have to take an active part to make sure that our contributions get communicated in order for them to be seen and acknowledged.
In most cases, management does not directly judge the quality of your technical work. It is not the job of your manager to review every line of your code to evaluate your performance.
The impression that managers have on us is based on their observations. They piece together an image of your performance based on contact points like:
If we want to take responsibility for our career trajectory, we have to manage how we market our work.
There are many varying opinions of what “marketing our work” means. To me, it means communicating the vital information to management in order for them to paint an accurate picture of your good work.
We have to tailor our marketing strategies based on our unique situation. Your situation depends on factors like your personality, your manager’s personality, your colleagues, your company culture and the nature of your work.
For me personally, I have found the following actions to be effective:
Never communicate wrong or fake information to management in order to get ahead. You might get away in the short run. One fine day the issue will come back and bite you in the “backend”. I have seen this happen first hand to some colleagues.
Skill #2: Time management
As software developers, we have the luxury of being afforded a lot of freedom. Much more freedom than many other professions. Part of this freedom is the opportunity to manage our time to a certain degree.
Managing our time means we should be able to prioritize our tasks. It is very tempting to work on exciting tasks first and ignore the more important but less interesting ones.
We all have seen instances were developers get carried away in their rabbit hole of tech, only to discover too near to the deadline that the important bits of the project have been forgotten.
Time management also means keeping procrastination in check. As a software developer, you can practically get away with reading memes and watching cat videos for days on end. Procrastination causes panic near deadlines. Panic causes distress and bad quality of work.
Another aspect of time management is punctuality. Because meetings in tech are seldom life and death meetings, some developers make it a habit of coming in late to meetings. Coming in late to meetings on a regular basis has the following negative consequences:
Time management also means knowing when NOT to work. It is OK to stay back late once in a while to meet important deadlines. But pulling all-nighters on a regular basis will have detrimental effects on our health and social life.
We have to know when to log off and head home for the day. When we are not at work, for example on weekends or on vacations, we have to have the discipline of staying away from work. This means no email reading or coding that “one more line”.
In our bubble, it is too easy to feel peer pressured into burning the midnight oil or feeling guilty that we are not checking emails on vacation. We have to remind ourselves that taking time off actually improves our productivity, not reduce it.
Skill #3: Networking
I had the opportunity of getting the job I currently have because of networking. A couple of years back in a company-internal tech conference, I attended a very fascinating talk. I got in touch with the speaker. One thing led to another and I ended up working on the same team as the speaker.
Knowing the “right” people both inside and outside your company has a huge impact on your career. Some obvious benefits are:
One way to get to know someone new is to approach them when you come across their work. If you have attended an interesting talk or read an article, you can shoot the colleague a mail to thank them and express your honest thoughts on the topic.
If the conversation takes an interesting turn, you can meet them personally to ask what they are working on or go for lunch.
When I am faced with an issue I cannot solve by myself or with the help of those I know, I sometimes rummage the company intranet to see if anyone else has worked on a similar problem. I would send them a “cold” email to ask for help.
Most of the time, colleagues would reply and be more than happy to offer assistance. Even if they cannot help directly, they could point you to a person who can.
Another way to widen your circle is to ask for an introduction. If you know someone that knows a person you would like to know, you could just ask to be introduced.
You can also gain corporate contacts from leisure activities. Many companies, especially bigger ones, have groups that come together for after-work activities. I have met many interesting work contacts by going to dinners and participating in sports games.
It is vital to nurture the relationships that you have. If you just contact people when you need them, they will have the impression that you are merely using them. And they are right.
I do enjoy keeping in touch with people to nurture relationships. Some ways that I usually do this are:
I also enjoy “cross-pollinating” my contacts by introducing them to each other when I see the opportunity. I found out by experience that it is a good idea to ask both parties if they are interested before I introduced them to each other. I have had a couple of bad experiences where one side was not interested in talking at all and it reflected badly on me.
Skill #4: Open-mindedness
In tech, open-mindedness is key. Open-mindedness ensures that we are able to adapt ourselves to the dynamic nature of our jobs.
One aspect of open-mindedness is being able to listen to the opinions and ideas of others. If we properly listen and understand what others are saying, we have the chance to:
Close-minded developers go into discussions with the aim of pushing their ideas onto others. When others talk, they do not listen, they merely wait for their turn to talk again. Some do this because of ego, some because of stubbornness and others because of pure habit.
Open-mindedness does not mean we have to accept everything that is crammed down our throats. It does not mean we become pushovers and have to say “yes” all the time.
Being open-minded means we are able to defer our opinions and judgment. At times, it is all too easy to be overly skeptical of a new idea or a new way of doing something just because we are not familiar with it. This could relate to a new project management method, a software tool or an organizational change.
Conclusion
Just like with technical skills, there is no end to improving our soft-skills. As software developers, we are technically inclined. After all, that is the reason why we chose this path in the first place.
We have to remember that neglecting soft skills like driving a performance car on cheap wheels. It would be impossible to achieve the maximum potential no matter how awesome the engine is.
原文:https://medium.com/swlh/critical-soft-skills-for-software-developers-6845545f6dbd
其他推荐
【英】深入研究新的Vue Devtools V5.0
【英】React Router v5发布
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!