如何成为杰出的软件开发人员

People who code for a living introduce themselves as software developers. They don’t call themselves software coders. They know software development is much more than just coding.

以谋生为生的人将自己介绍为软件开发人员。 他们不称自己为软件编码员。 他们知道软件开发不仅仅是编码。

However, most of the developers put all their focus on learning how to code. Within a few years of their career, they get bored doing the same stuff repeatedly. They get frustrated and demotivated as their growth stagnates.

但是,大多数开发人员将所有精力都放在学习如何编码上。 在他们的职业生涯的几年中,他们无聊重复做同样的事情。 随着成长的停滞,他们感到沮丧和沮丧。

“But neither job switch nor frequently changing the tech stack can help software developers achieve any significant growth in the long term.”

“但是无论是工作转换还是经常更换技术堆栈都无法帮助软件开发人员长期取得显着增长。”

Instead of trying to find out the root cause of their frustration, developers try to switch to a new company thinking it will increase their job satisfaction level. Many try to learn trendy new technologies expecting it to alleviate their problems.

开发人员没有试图找出造成挫败感的根本原因,而是试图转向一家新公司,认为这会提高他们的工作满意度。 许多人尝试学习流行的新技术,期望它可以减轻他们的问题。

But neither job switch nor frequently changing the tech stack can help software developers achieve any significant growth in the long term.

但是长期而言,工作转换或频繁更改技术堆栈都无法帮助软件开发人员实现任何显着的增长。

I am a software developer with more than fifteen years of experience. In this decade and a half years of my journey, I have not only survived but also thrived through multiple recessions. With my experience, I have learned valuable lessons about the key traits that are needed for a software developer to have outstanding growth in their career.

我是一位拥有15年以上经验的软件开发人员。 在我旅行的十年半中,我不仅幸免于难,而且还经历了多次衰退。 以我的经验,我学到了有关软件开发人员在其职业生涯中取得显着增长所需的关键特征的宝贵经验教训。

1.坚持一个技术栈。 (1. Stick to one tech stack.)

Coding is the primary requirement to become a developer. It is alright to experiment with various technologies in the initial days of a developer’s career. But as you gain experience, it is prudent to stick to one technology stack and gain in-depth knowledge of it.

编码是成为开发人员的基本要求。 在开发人员职业生涯的初期,可以尝试各种技术。 但是,随着您积累经验,请谨慎使用一种技术堆栈并获得深入的知识。

The trend in the technological world keeps changing with time. A lot of technologies came and left in the last decade. Many of them were good, but something better came to replace them fast.

技术世界的趋势随着时间而变化。 在过去的十年中,出现了许多技术。 他们中的许多人都很好,但是很快就可以取代它们。

Excellent software developers do not fall into the trap of trend-driven development. They don’t try to swing their learning curve based on what gets hyped in the job market. They focus on increasing their expertise in one specific technology stack.

优秀的软件开发人员不会陷入趋势驱动的开发陷阱。 他们不会试图根据在就业市场上被炒作的东西来摇摆自己的学习曲线。 他们专注于增加他们在一种特定技术堆栈中的专业知识。

2.修复缺陷。 (2. Fix defects.)

Fixing defects in existing code is a great way to learn any product. Reading documentation or getting a knowledge transfer from senior developers can get you started on understanding the functionalities. But it will help you learn much more when you get your hands dirty by fixing bugs in the existing codebase.

修复现有代码中的缺陷是学习任何产品的好方法。 阅读文档或从高级开发人员那里获得知识转移可以使您开始了解功能。 但是,通过修复现有代码库中的错误,当您弄脏手时,它将帮助您学到更多。

Most skilled developers know they cannot code everything in a project. Hence they help other team members to resolve their issues. Helping others makes them learn about the features in different areas of the product.

大多数熟练的开发人员都知道他们无法对项目中的所有内容进行编码。 因此,他们帮助其他团队成员解决他们的问题。 帮助他人可以使他们了解产品不同区域的功能。

I attribute most of my knowledge in our application to fixing defects and helping others resolve issues in their code.

我将我在应用程序中的大部分知识都归因于修复缺陷和帮助其他人解决其代码中的问题。

3.假设客户永远是对的。 (3. Assume customer is always right.)

“Customer is always right — until you prove them wrong.”

“客户永远是对的-直到您证明他们错了。”

We develop software for customers. Customers know what they want in the product and why they want it. If the software does not fulfill the customer’s requirement, then however fancy the code might be — it is still useless.

我们为客户开发软件。 客户知道他们想要的产品以及他们为什么想要它。 如果该软件不能满足客户的需求,那么无论代码多么有趣,它仍然没有用。

Hence, the customer is always right — until you prove them wrong. Listen to the end-user when they raise a concern. Try to understand the problem. Go back to your application and find out whether the issue is real.

因此,客户永远是对的-直到您证明他们是错误的。 当他们提出问题时,请听取最终用户的意见。 尝试了解问题。 返回您的应用程序,找出问题是否真实。

Once you are sure that it is not an application issue and have evidence — only then show them to the customer. Until you have proof, assume that the customer is right. Focus your attention on trying to find the issue in the code rather than trying to prove the customer is wrong.

一旦确定这不是应用程序问题并有证据,就只能将其显示给客户。 在没有证据之前,假定客户是正确的。 将注意力集中在尝试在代码中查找问题,而不是尝试证明客户是错误的。

The attitude of doing thorough troubleshooting based on the customer’s feedback builds trust between the customer and the developer.

根据客户的反馈进行彻底的故障排除的态度在客户和开发人员之间建立了信任。

4.公开接受反馈。 (4. Be open to feedback.)

It is very difficult for us to question our own work. We cannot think of new ways to better our code or design because we have already put in the best effort. Our knowledge and imagination limit us from increasing the quality of our delivery.

我们很难质疑自己的工作。 因为我们已经尽了最大的努力,所以我们无法想到改善代码或设计的新方法。 我们的知识和想象力使我们无法提高交付质量。

Hence, having an outside perspective is critical for software developers. Feedbacks provide us the opportunity to understand how we can improve ourselves and enhance our performance.

因此,对于软件开发人员而言,拥有外部视角至关重要。 反馈使我们有机会了解我们如何改善自身和提高绩效。

“Not accepting feedback limits the developer’s ability to learn from other’s experiences.”

“不接受反馈会限制开发人员从他人的经验中学习的能力。”

Many developers see feedbacks as a fault-finding exercise. They close their mind when someone tries to help them with what they are doing wrong. Not accepting feedback limits the developer’s ability to learn from other’s experiences.

许多开发人员将反馈视为发现问题的练习。 当有人试图帮助他们做错事情时,他们会闭上头脑。 不接受反馈会限制开发人员从他人的经验中学习的能力。

Developers who are good in their field know that it is helpful to ask for feedback proactively. They elicit feedback from their users, from the product owners, from testers, from the manager, and from their peers.

擅长领域的开发人员知道主动寻求反馈会有所帮助。 他们从用户,产品所有者,测试人员,经理和同行那里得到反馈。

All these people collectively represent a plethora of knowledge and experience. They all can help you understand where you are lacking and what you can do to enhance your skills and grow in your role.

所有这些人共同代表了太多的知识和经验。 它们都可以帮助您了解您所缺少的地方,以及可以做些什么来增强技能和发展角色。

5.保持相关性。 (5. Stay relevant.)

Understand that change is constant. It is crucial to keep pace with the changes to stay relevant as a software developer. One way to keep abreast of the latest and greatest in technology is to subscribe to technical magazines.

了解变化是恒定的。 与软件开发人员保持联系以保持相关性至关重要。 紧跟最新和最先进技术的一种方法是订阅技术杂志。

Also, take training to learn new stuff about your tech stack. There are a lot of great online courses available. Many companies offer free membership in online education sites for their employees. Find out if your company offers similar facilities and register through them.

另外,接受培训以学习有关您的技术堆栈的新知识。 有很多很棒的在线课程。 许多公司为员工提供在线教育站点的免费会员资格。 找出您的公司是否提供类似的设施并通过它们进行注册。

A great way to know what is latest in the market and where the industry is heading is by attending conferences. Nowadays, most of the conferences are going online. People from various sectors come and share their experiences and success stories. These conferences are an excellent place to learn directly from experienced software developers of different companies.

参加会议是了解市场最新动态以及该行业未来发展的好方法。 如今,大多数会议都在网上进行。 来自各行各业的人们来分享他们的经验和成功故事。 这些会议是直接向不同公司的经验丰富的软件开发人员学习的好地方。

6.获得领域知识。 (6. Gain domain knowledge.)

Domain knowledge helps in understanding the business side of your product. It provides visibility into exactly why the customer needs a specific functionality and how it helps their end-users.

领域知识有助于理解您产品的业务方面。 它提供了有关客户为何需要特定功能以及它如何帮助最终用户的准确可见性。

With some experience in coding, it is easy to convert the requirement specs into code in your preferred language. But you can only do justice to what you are implementing when you are well aware of the end to end functionality.

具有一定的编码经验,可以轻松地将需求规范转换为您喜欢的语言的代码。 但是,只有当您充分了解端到端功能时,才可以对正在实施的内容公正。

In my personal experience, I have achieved more in my career due to the in-depth domain knowledge I have acquired than my technical expertise.

以我的个人经验,由于我获得了深厚的领域知识而不是技术专长,因此我在职业生涯中取得了更多成就。

Software developers who strive to become architects in the future know that understanding the product is vital for their success. Gaining domain knowledge helps them to consider the requirements holistically and provide innovative solutions.

努力成为未来的架构师的软件开发人员知道,了解产品对于他们的成功至关重要。 获得领域知识有助于他们全面考虑需求并提供创新的解决方案。

7.成为解决方案的一部分。 (7. Be part of the solution.)

I have seen a lot of developers complain about the tools and processes. If their implementation is not correct, they blame the requirements to be not clear. If the code fails during testing, they blame the environment or the data used for the testing. They find fault in everything around them as the cause of their poor performance.

我已经看到很多开发人员抱怨工具和过程。 如果它们的实现不正确,则将要求归咎于不清楚。 如果代码在测试过程中失败,则它们会归咎于环境或用于测试的数据。 他们发现周围的一切都是他们表现不佳的原因。

“Developers who complain all the time do not reflect on their own mistakes.”

“一直抱怨的开发人员不会反省自己的错误。”

Developers who complain all the time do not reflect on their own mistakes. They never learn how to overcome the challenges or grow professionally. Instead, they hold others responsible for staying in the same position for years.

一直抱怨的开发人员不会反省自己的错误。 他们从不学习如何克服挑战或专业成长。 取而代之的是,他们让其他人有责任保持原职多年。

Outstanding software developers aim to be part of the solution and not the problem. They always focus on overcoming the obstacles and finding workarounds to resolve issues. They don’t let the constraints of their work environment hinder their progress.

杰出的软件开发人员旨在成为解决方案的一部分,而不是问题。 他们始终专注于克服障碍并找到解决问题的方法。 他们不会让工作环境的限制阻碍他们的进步。

Therefore, have a positive attitude towards the limitations faced in your workplace. View your problems as challenges and spend energy in finding solutions for them.

因此,对工作场所面临的局限性持积极态度。 将您的问题视为挑战,并花精力为它们找到解决方案。

Teams and leaders admire developers who are always ready to find a solution instead of cribbing about the issue and doing nothing.

团队和领导者欣赏开发人员,他们时刻准备着找到解决方案,而不是担心问题并什么也不做。

8.分享知识。 (8. Share knowledge.)

“Sharing knowledge occurs when people are genuinely interested in helping one another develop new capacities for action; it is about creating learning processes.” — Peter Senge

“当人们真正有兴趣互相帮助发展新的行动能力时,就会发生分享知识; 这是关于创建学习过程的信息。” —彼得·圣吉

I am a big believer in the process of knowledge sharing. Therefore, I make it a point to conduct at least 25 hours of KT sessions in a year. These sessions include sharing both technical and functional knowledge.

我是知识共享过程的忠实拥护者。 因此,我认为一年至少要进行25个小时的KT培训。 这些会议包括共享技术和功能知识。

If we want to learn and grow as exceptional software developers, we need to help each other. It is impossible to know everything that is going around in the product or technology all by ourselves. Sharing helps in gaining knowledge from other’s experiences and mistakes.

如果我们想学习并成长为杰出的软件开发人员,我们需要互相帮助。 我们不可能完全了解产品或技术中正在发生的一切。 分享有助于从他人的经验和错误中获取知识。

Help your teammates understand the functionality that you have worked on previously. Learn something new in your tech stack and conduct KT sessions in your team. Help the testing team understand a new feature that is getting implemented for an upcoming release.

帮助您的队友了解您以前使用的功能。 在您的技术堆栈中学习新知识,并在团队中进行KT会议。 帮助测试团队了解即将发布的新功能。

“Teams thrive on knowledge sharing.”

“团队在知识共享上蒸蒸日上。”

Teams thrive on knowledge sharing. Hence, people will recognize you as someone who knows a lot and is open to sharing. It will make people reciprocate and share knowledge with you. The more you share, the more knowledge you will be able to acquire.

团队在知识共享上蒸蒸日上。 因此,人们会认识到您是一个非常了解并愿意分享的人。 它将使人们相互交流并与您分享知识。 您分享的越多,您将获得的知识就越多。

Always remember, knowledge is an essential commodity for professional growth.

永远记住,知识是专业发展必不可少的商品。

9.寻找一名导师。 (9. Find a mentor.)

A good mentor is crucial to success. Mentors help to learn all the aspects of software development with practical examples from their experience.

一个好的导师对成功至关重要。 导师通过他们的经验,通过实际的例子帮助学习软件开发的所有方面。

Enroll in your company’s mentorship program as a mentee. If your company does not have a program, then find a person whom you respect for their knowledge and request them to become your mentor. You can choose a person whom you trust to guide you in the right direction.

以受训者身份参加公司的指导计划。 如果您的公司没有程序,请找到一个您尊重他们知识的人,并请他们成为您的导师。 您可以选择一个可以信任的人来指导您正确的方向。

Here are a few stats that might motivate you to have a mentor.

以下是一些可能会激发您获得指导的统计数据。

  • 71% of Fortune 500 companies have mentoring programs. And of those with a mentor, 97% say they are valuable.

    财富500强公司中有71%设有指导计划。 在那些有导师的人中,有97%的人说他们很有价值。

  • 87% of mentors and mentees feel empowered by their mentoring relationships and have developed greater confidence.

    87%的导师和受训者感到自己与导师关系的力量,并建立了更大的信心。

  • 25% of employees who enrolled in a mentoring program had a salary grade change, compared to only 5% of workers who did not participate.

    参加指导计划的员工中有25%的员工薪资等级发生了变化,相比之下,只有5%的未参加培训的员工有薪资变动

These are just a few advantages of having a mentor. You can find other statistics in the references section of this article.

这些只是拥有导师的一些优点。 您可以在本文的参考部分中找到其他统计信息。

10.建立连接。 (10. Make connections.)

Networking as a means of growth is often ignored by developers in their initial years. However, it is highly required to make connections throughout your career. Your network will help you find a better job opportunity when you are looking for a change.

在最初的几年中,开发人员常常忽略将网络作为一种增长手段。 但是,在整个职业生涯中建立联系非常需要。 当您寻找变化时,您的网络将帮助您找到更好的工作机会。

Even within the company, it helps to make connections with people from different segments or teams. Your contacts will help you get the required visibility inside the company, which is a significant factor in professional growth.

即使在公司内部,它也有助于与来自不同部门或团队的人建立联系。 您的联系人将帮助您在公司内部获得所需的可见性,这是​​专业发展的重要因素。

In the last ten years, many people I have worked in my current company have become managers or architects in their respective teams.

在过去的十年中,我在当前公司工作的许多人成为了各自团队的经理或架构师。

It is now much more convenient for me to discuss and arrive at an enterprise-wide design solution when I work with these architects. If I need to get some work done by a different team, it becomes easier for me due to my connection with the respective team’s manager.

现在,当我与这些架构师一起工作时,对于我来说讨论和得出企业范围的设计解决方案更加方便。 如果我需要由其他团队来完成一些工作,由于与相应团队经理的联系,这对我来说变得更加容易。

Hence, if you want to stand out among your peers and get noticed in the company — start making meaningful connections.

因此,如果您想在同行中脱颖而出并在公司中引起注意,请开始建立有意义的联系。

Here are some fascinating facts about networking that might help you further understand the value of making connections.

以下是一些有关网络的有趣事实,它们可能有助于您进一步了解建立连接的价值。

  • Almost 80% of professionals consider professional networking to be important to career success.

    几乎80%的专业人员认为专业网络对于职业成功至关重要。

  • 70% of people in 2016 were hired at a company where they had a connection.

    2016年,有70%的人被一家有联系的公司雇用。

概要 (Summary)

Everyone wants to be a software developer, but very few know what it actually takes to excel in this field. Imbibe the following points rigorously, and it will propel you to the heights of your software development career.

每个人都想成为软件开发人员,但很少有人知道在该领域取得卓越成就实际上需要什么。 严格吸收以下几点,它将带您进入软件开发事业的顶峰。

  • Stick to a single tech stack and be good at it.

    坚持使用单一技术堆栈并擅长于此。
  • Don’t hesitate to work on defects.

    不要犹豫,处理缺陷。
  • Assume customer is always right (until you have evidence to prove otherwise).

    假设客户永远是对的(除非您有证据证明相反)。
  • Learn from feedback.

    从反馈中学习。
  • Keep abreast of the latest technical development.

    紧跟最新技术发展。
  • Gain domain knowledge.

    获得领域知识。
  • Find the solution for the constraints in the work environment.

    在工作环境中找到约束的解决方案。
  • Share your knowledge.

    分享您的知识。
  • Find a good mentor.

    寻找一个好的导师。
  • Do networking.

    做网络。

Thanks for reading the article. You might also like to read:

感谢您阅读本文。 您可能还想阅读:

翻译自: https://levelup.gitconnected.com/how-to-become-an-outstanding-software-developer-8409f23716a

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值