英语程序员_编程的基础知识

(8) 2024-09-18 17:01:07

英文 程序员编程技能描述

by Ali Spittel

通过Ali Spittel

程序员最重要的非编程技能 (The most important non-programming skills for programmers)

When I think about the people I would like to work with as a programmer, I think so much more about the non-technical skills rather than technical skills that make somebody a good co-worker.

当我想到我想与之合作的人员时,我会更多地考虑非技术技能,而不是使某人成为优秀同事的技术技能。

In fact, all of the skills that are in this post contribute to writing good code that improves technical projects. Most of them are really helpful for careers outside of programming too, but I’m going to focus on why they’re useful for programmers specifically.

实际上,本文中的所有技能都有助于编写可改进技术项目的良好代码。 它们中的大多数也确实对编程以外的职业有所帮助,但我将重点介绍为什么它们特别对程序员有用。

同情 (Empathy)

To build a great product, you must put yourself in the shoes of your users. How will they be using your product? What features will be helpful for them? How can your program help them or improve their lives? And — conversely — how could it harm them or negatively impact their lives? What are the ethical implications of your application?

要打造出色的产品,您必须将自己放在用户的鞋子上。 他们将如何使用您的产品? 哪些功能对他们有帮助? 您的程序如何帮助他们或改善他们的生活? 反之,这又会如何伤害他们或对他们的生活造成负面影响? 您的申请有什么道德影响?

Empathy is essential for so many pieces of your programs. If they aren’t secure, then your user’s information could be used negatively by a third party.

同情对于您的许多程序都是必不可少的。 如果它们不安全,那么第三方可能会否定使用您的用户信息。

If they aren’t accessible, then you are limiting the number of people that can use your project. If they run slowly or needs huge amounts of bandwidth to run, then users will leave and people in areas with slow internet or mobile users won’t be able to run them.

如果无法访问他们,那么您将限制可以使用您的项目的人数。 如果它们运行缓慢或需要大量带宽才能运行,那么用户将离开,并且互联网或移动用户速度较慢的地区的人们将无法运行它们。

It seems like every day an article comes out with some harmful algorithm a company has implemented, like the YouTube algorithm radicalizing the alt-right, Amazon creating a sexist hiring algorithm (which they didn’t end up using), or AI misgendering black women. Think about everybody when you are writing your code!

似乎每天都有一篇文章介绍了公司实施的某些有害算法,例如YouTube算法激化了alt-right权利 , 亚马逊创建了性别歧视的招聘算法(他们最终没有使用过)或AI性别歧视黑人女性 。 编写代码时,请考虑每个人!

Also, empathy is helpful for being a team member and a mentor. Put yourself in your manager or another developer’s shoes. Why are they making their decisions? What can you do to help them? Having empathy will definitely improve your ability to be an effective teammate. If you’re an employer, you can retain your employees for longer, and they will be more effective workers if you display empathy (source).

同样,同理心对于成为团队成员和指导者很有帮助。 让自己陷入经理或其他开发者的视线中。 他们为什么要做出决定? 您能为他们做些什么? 有同理心肯定会提高您成为有效的队友的能力。 如果您是雇主,则可以保留更长时间的员工,如果您表现出同情心(来源) ,他们将成为更有效的员工。

Have patience for other programmers, especially ones that are learning new things. Remind yourself of something that was really hard for you to learn and how that felt. They probably feel similarly. Being rude to them, diminishing their progress, or being pedantic will only be harmful and make that process harder for them.

对其他程序员,尤其是正在学习新事物的程序员要有耐心。 提醒自己一些很难学习的东西以及感觉。 他们可能会有类似的感觉。 粗鲁地对待他们,削弱他们的进步或做学徒只会有害无益,并使他们的工作更加困难。

Your words and actions have real consequences — you can use that to enact positive change or hurt somebody. That doesn’t end with in-person communication — online communication counts too. You may think you’re being funny or just letting off steam, but you may actually causing a very negative impact on someone’s life. It’s up to you to decide how to act, and how to apologize if you hurt someone to undo some of that harm.

您的言行举止会产生真正的后果-您可以用它来做出积极的改变或伤害他人。 不仅限于面对面的交流,在线交流也很重要。 您可能以为自己很有趣,或者只是放任自流,但实际上可能会对某人的生活造成非常不利的影响。 如果您伤害某人以消除某些伤害,则取决于您决定如何采取行动以及如何道歉。

解决问题 (Problem Solving)

When I teach people to code, I see a lot more people struggling with problem-solving than the code itself. The ability to break a problem into smaller ones and then solve all of those smaller problems takes a lot of practice. Getting good at problem-solving can help you become a much stronger programmer.

当我教人们编写代码时,我发现比起代码本身,有更多的人为解决问题而苦苦挣扎。 将问题分解为较小的问题然后解决所有较小问题的能力需要大量的实践。 善于解决问题可以帮助您成为更强大的程序员。

Also, for most problems, there will be more than one solution. A large part of our jobs as software developers is to think through those different solutions and choose the one that is best. Is one faster to implement? Or does it run more efficiently? Or will it be less expensive? All of these are important questions, and picking the correct solution is a challenging but important part of software development.

同样,对于大多数问题,将有不止一种解决方案。 我们作为软件开发人员的大部分工作是考虑这些不同的解决方案,然后选择最合适的解决方案。 实施起来更快吗? 还是运行效率更高? 还是会便宜一些? 所有这些都是重要的问题,选择正确的解决方案是软件开发中具有挑战性但重要的一部分。

合作 (Collaboration)

Chances are very high that you will work with other people as a programmer. You will have to work with other developers, business people, managers, open source contributors, stakeholders, and countless other people even if you are a freelancer or entrepreneur. Learning how to work well with different people and their personalities is critical.

您很有可能与其他人一起担任程序员。 即使您是自由职业者或企业家,您也必须与其他开发人员,商人,经理,开源贡献者,利益相关者以及无数其他人一起工作。 学习如何与不同的人及其个性打交道至关重要。

There are so many things that contribute to good collaboration. The first is knowing that one person can’t do everything, or at least do everything well. Different people have different skills, points of view, and life experiences that are more powerful in combination than isolation. Don’t feel like you always need to “put the team on your back” or be everything to everybody. You can be a lot better if you allow other people to contribute too.

有很多事情可以促进良好的协作。 首先是知道一个人不能做任何事情,或者至少做得很好。 不同的人具有不同的技能,观点和生活经验,与孤立相比,结合起来更有效。 不要觉得您总是需要“背负团队”或成为所有人的一切。 如果您也允许其他人做出贡献,您会变得更好。

Ask other people for help, and be willing to help people in return. You don’t need to be an expert in everything, and different people will be experts in different things. Rely on other people, and if you are stuck on something make sure to ask for help so that you don’t stay stuck for too long.

向其他人寻求帮助,并愿意帮助别人。 您无需在所有方面都成为专家,不同的人将在不同方面成为专家。 依靠他人,如果您被卡在某些东西上,请务必寻求帮助,以免您被卡住太久。

When somebody asks you for help, be willing to help them. You can learn a lot by explaining things well, and you will be able to reinforce your knowledge of the topic. If you’re in a management position, make sure to give people time for mentorship and effective collaboration!

当有人向您寻求帮助时,愿意帮助他们。 通过很好地解释,您可以学到很多东西,并且可以增强对该主题的了解。 如果您处于管理职位,请确保给人们时间进行指导和有效的协作!

Along the same lines, don’t talk over people or immediately dismiss their viewpoints. They will probably be much less likely to contribute in the future if their opinions aren’t valued or taken into account.

遵循同样的原则,不要与人交谈或立即摒弃他们的观点。 如果他们的意见得不到重视或考虑在内,他们将来的贡献可能会大大降低。

Actively listen when people share their ideas — instead of thinking about your response or why your idea is better while they are talking, try to think about why their approach is also good or how it could be implemented.

当人们分享他们的想法时,请积极倾听-与其思考您的回答或谈话时您的想法为什么更好,不如考虑他们的方法为什么也很好或如何实施。

Then, once you implement their awesome ideas, give them credit for those ideas. Nothing has made me less effective as an employee as being on a team where my ideas were dismissed, under-valued, and un-credited by other people on my team.

然后,一旦您实施了他们的绝妙想法,就应该赞扬他们。 在团队中我的想法被团队中的其他人拒绝,低估和不信任的情况下,没有什么比我作为员工更有效。

通讯 (Communication)

When you are working with other people, whether those people are co-workers, clients, the people who use your projects, managers, or people you manage, good communication is crucial. Give honest updates on how things are going, where projects currently stand, and your opinions on things honestly but kindly. People will be less receptive to feedback if you are rude or not constructive. But, if you are dishonest or sugar-coat the truth, then you may not see a positive change. There’s definitely a fine line here.

当您与其他人一起工作时,无论这些人是同事,客户,使用您的项目的人,经理还是您管理的人,良好的沟通都是至关重要的。 诚实,亲切地提供有关事情进展的最新信息,项目的当前状态以及您对事情的看法。 如果您粗鲁或不具有建设性,人们将不太愿意接受反馈。 但是,如果您不诚实或撒了糖,那么您可能看不到积极的变化。 这里肯定有一条细线。

One real life example from my life: I had somebody who read one of my blog posts write a very long letter about how dumb I sound because of the tone I take. I usually use a lot of exclamation points and try to sound exciting in my posts — and that’s very intentional to try and make topics that can be intimidating or boring more fun. The person got pretty sexist in this email and said some pretty hurtful things. That being said, I probably could scale back on the exclamation points and still get people excited about programming. I would have been a lot more receptive to that point if the person had framed the criticism more constructively.

我生活中的一个现实生活中的例子:我有一个人读了我的一篇博客文章,写了一封很长的信,说我由于自己的语气而听起来很笨。 我通常会使用很多感叹号,并尝试在帖子中听起来令人兴奋-这是非常有意图的尝试,以使话题变得令人生畏或使人更无聊。 这个人在这封电子邮件中变得很性别歧视,并说了一些非常有害的话。 话虽这么说,我可能可以缩减感叹号,仍然让人们对编程感到兴奋。 如果那个人以更具建设性的方式提出批评,那我会更愿意接受这一点。

If things are not going well, make sure to say so. Be honest about needing a deadline pushed back, or how something isn’t going well at work. You will have a much better chance at changing it and making the environment better for yourself if you speak up.

如果事情进展不顺利,请务必这样说。 诚实地说需要推迟最后期限,或者工作进展不顺利。 如果您大声疾呼,您将有更大的机会改变它并为自己创造更好的环境。

包容性 (Inclusiveness)

I used to work as a rock climbing instructor and counselor at a summer camp, and the age group I worked with most were middle school girls. They were some of my favorite people I’ve ever worked with. But, that being said, middle schoolers aren’t usually the most accepting of difference or that clique-adverse.

我曾经在一个夏令营中担任攀岩教练和辅导员,而我工作的年龄段大多数是初中女生。 他们是我曾经合作过的一些我最喜欢的人。 但是,话虽这么说,初中生通常不是接受差异最大或最讨厌集团的人。

We used to run a game where we started out in one large circle, and then one counselor would tell people they were “out of the circle”, and they would have to leave the game based on some characteristic that they weren’t informed of and couldn’t control. The people still inside the circle would play a game, and the people outside of the circle were excluded and just had to watch from afar.

我们曾经运行过一个游戏,游戏从一个大圈子开始,然后一名辅导员会告诉人们他们“不在圈子里”,而他们将不得不基于某些未获悉的特征离开游戏而且无法控制。 仍在圈子内的人会玩游戏,圈子外的人被排除在外,只能远距离观看。

This activity was super effective in showing these girls what it was like to be left out for reasons outside of your control, and I still think back on it a lot. As adults, we still leave people out of the circle and exclude them based on certain characteristics outside their control. But if we let them back into the circle and allow them to contribute then our products draw on more diverse experiences and are better.

这项活动非常有效地向这些女孩展示了由于您无法控制的原因而被遗弃的感觉,我仍然对此进行了很多思考。 作为成年人,我们仍然将人们排除在外,并根据他们无法控制的某些特征将他们排除在外。 但是,如果我们让他们回到圈子中并允许他们做出贡献,那么我们的产品将吸收更多不同的体验,并且会更好。

There’s a lot of research on more diverse teams performing better. But from an individual perspective, think about what it feels like to be left out of the circle and try to make your circle larger, not smaller.

有很多关于性能更好的多元化团队的研究 。 但是,从个人的角度出发,考虑一下离开圈子的感觉,并尝试使圈子变大而不是变小。

Chances are, a lot of your users may be people that have traditionally been left out of the circle in tech. I can tell you from my own experience, that it’s really difficult to be the only person like you on a team, as someone who’s been on a team with another woman for ~5% of my programming career.

很有可能,您的许多用户可能是传统上一直不在技术圈中的人。 我可以根据自己的经验告诉您,作为团队中唯一像您这样的人真的很困难,因为在我的编程职业生涯中〜5%与其他女性一起工作过的人。

This also links into empathy — make sure that you are making your programs for a wide variety of users. Not just the able-bodied or those with cutting-edge internet or technologies. You will be able to reach more people.

这也链接到移情–确保您正在为各种各样的用户制作程序。 不仅是身体强健的人,或是拥有尖端互联网或技术的人。 您将可以接触更多的人。

忍耐 (Patience)

The first person that you need to have patience with when you are programming is yourself. Programming is hard and sometimes you will have bugs or difficult problems to overcome. If it’s always easy, then you aren’t challenging yourself, and you aren’t growing as a programmer.

编程时需要耐心的第一个人是你自己。 编程很难 ,有时您会遇到一些错误或难以解决的问题。 如果总是很容易,那么您就不会挑战自己,也不会成长为程序员。

Have the tenacity to keep working through a problem and not give up when it gets hard. But, also, know that you can take a break and come back to the problem in a little while. Maybe taking a break will help you solve the problem more efficiently or to see it differently when you come back to it.

有毅力可以继续解决问题,并在遇到困难时不会放弃。 但是,也要知道,您可以稍事休息,再过一会儿再解决问题。 也许休息一下可以帮助您更有效地解决问题,或者当您回到解决方案时可以有所不同。

Also, be patient with other people. Things can take a while to learn and people are not perfect. Making mistakes and failing can be some of the most important experiences in the learning process, so allow for that instead of creating an environment where it isn’t safe to take risks or grow. Understand that different things click more easily for different people, and know that learning can take a while.

另外,请耐心等待其他人。 事情需要花费一些时间来学习,而人们并不完美。 犯错误和失败可能是学习过程中最重要的经历,因此,请允许这样做,而不要创建一个冒险或成长并不安全的环境。 了解不同的事物对于不同的人而言单击起来更容易,并且知道学习可能需要一段时间。

创造力 (Creativity)

My favorite thing about being a programmer is that I get to use my creative energy to build things that other people can then benefit from. You get to think outside of the box to create really cool things.

成为一名程序员,我最喜欢的事情是,我可以利用自己的创造力来构建可以让其他人受益的东西。 您可以跳出框框思考,以创造出非常酷的东西。

Having creative ideas is important for coming up with new features, interfaces, and applications. I had somebody buy a license for a product that I built for a company in large part because of the creative interface, and my portfolio site has gotten traction because of its creativity.

拥有创意对提出新功能,界面和应用程序很重要。 我曾有人为我为公司开发的产品购买许可证,这在很大程度上是由于其具有创造性的界面,而我的投资组合网站因其创造性而受到了关注。

In addition to that, a lot of problems require creativity to solve. There is more than one solution to almost every programming problem, and coming up with creative approaches to solving them can often lead to an optimized solution.

除此之外,还有很多问题需要创造性来解决。 几乎所有的编程问题都有一个以上的解决方案,并且提出解决这些问题的创造性方法通常可以得出优化的解决方案。

谦逊 (Humility)

You can learn so much from other programmers — one person cannot know everything or anything close to it in the world of code. Be receptive to constructive criticism instead of defensive. You can improve your code and yourself from feedback, and being stuck in your ways doesn’t lead to growth. You aren’t always right, and you should be receptive to other people’s ideas.

您可以从其他程序员那里学到很多东西-一个人无法了解代码世界中的所有内容或与其相近的任何内容。 接受建设性的批评而不是防御。 您可以通过反馈来改进代码和自己,而陷入困境并不会带来增长。 你并不总是正确的,你应该接受别人的想法。

置信度 (Confidence)

On the flip side, also be confident. I’ll admit that this is probably the most difficult one for me as someone with a lot of imposter’s syndrome, and it has been my #1 thing to improve on every performance review I’ve had in my career. I can (and probably will) write an entire blog post on this topic alone, but believing in yourself and being confident in your abilities is really important.

另一方面,也要有信心。 我承认这对我来说可能是最困难的人,因为我患有许多冒名顶替综合症,这是我职业生涯中每项绩效评估中的第一要务。 我可以(并且可能会)单独撰写有关该主题的整个博客文章,但是相信自己并对自己的能力充满信心确实很重要。

First, have confidence that you can take projects on. Don’t relegate yourself to easier projects or doubt yourself when you are assigned something difficult. Try to solve as much of it as you can, and then ask for help to get through the hardest parts.

首先,要有信心可以开展项目。 当您分配困难时,不要让自己参与更容易的项目,也不要怀疑自己。 尝试尽可能解决所有问题,然后寻求帮助以解决最困难的部分。

Also, don’t feel the need to research everything as a first resort. Trust yourself to try a couple things before Googling the answer. Or Google part of the problem instead of the whole thing. If you’re doing everything correctly, you are hurting nothing by trying a couple things out in development and seeing if they work. You may be surprised by how much you know.

另外,不要以为首先研究所有内容。 谷歌搜索答案之前,请相信自己尝试一些尝试。 还是Google问题的一部分而不是整个问题。 如果您做的一切正确,那么通过在开发中尝试几件事并查看它们是否起作用,您将不会受到任何伤害。 您可能会惊讶于您知道多少。

Another thing that I do is keep track of my wins. I have a document on my computer with cool things that I’ve done, and really nice things people have said about me. When I’m having a tough day or doubting myself, I’ll come back to it and usually feel more confident in what I’m doing.

我要做的另一件事是跟踪自己的获胜情况。 我的电脑上有一个文档,上面写着我做过的很酷的事情,人们对我说的真的很高兴。 当我度过艰难的一天或怀疑自己时,我会回到原来的状态,并且通常会对自己的工作更有信心。

适应性 (Adaptability)

Programming is still a new world, and it is evolving super fast. Being able to adapt when things change is critical. When a new framework, library, or language comes out that takes over, it’s important to be able to learn it (within reason of course). Our industry would look dramatically different if we were all still writing code in Fortran. We need to be able to evolve and adapt when things change.

编程仍然是一个新世界,并且正在以超快的速度发展。 当事情发生变化时能够适应至关重要。 当新的框架,库或语言接手时,重要的是要能够学习它(当然是在一定程度上)。 如果我们所有人都仍在用Fortran编写代码,那么我们的行业看起来将大不相同。 当事情发生变化时,我们需要能够发展和适应。

Also, the goal posts and features for projects will often change, especially with client work. When that happens, we have to adapt and incorporate those requests (again, within reason).

此外,项目的目标职位和功能通常会发生变化,尤其是在客户工作中。 发生这种情况时,我们必须适应并合并这些请求(同样在合理范围内)。

社区参与 (Community participation)

The community is so important for programming — conferences, blog posts, social media, and meetups are important for learning and growing. Also, open source software and the communities that surround them are the lifeblood of this industry. Being able to network and make connections with people is so important for education, relating your experiences, and finding new opportunities.

社区对于编程非常重要-会议,博客文章,社交媒体和聚会对于学习和成长很重要。 而且,开源软件及其周围的社区是该行业的命脉。 能够与人建立联系并与人建立联系对于教育,联系您的经历以及寻找新机会非常重要。

Even if you are an introvert or don’t love in-person socializing, there are a ton of awesome online communities that you can learn a lot from. And, even inside of companies, having a team with a strong bond will help people work better together.

即使您是一个内向的人或不喜欢面对面的社交活动,也可以从很多很棒的在线社区中学到很多东西。 而且,即使在公司内部,拥有一支具有强大纽带的团队也会帮助人们更好地合作。

结论 (Conclusion)

These skills are often referred to as “soft skills”, but I feel like that’s reductive. These skills help so much with both writing code and being a good co-worker. They are so much more important than knowing a specific language, library, or framework and they go far even outside of tech.

这些技能通常被称为“软技能”,但我觉得那是还原性的。 这些技能对于编写代码和成为一个好的同事有很大帮助。 它们比了解特定的语言,库或框架重要得多,而且甚至超出了技术范围。

All of these skills are really important to work on as programmers and as people. That being said — nobody is perfect, and everyone has room to grow. So keep growing, and trying to make small steps to be better at these non-programming skills and I will too!

所有这些技能对于以程序员和人员的身份进行工作都是非常重要的。 话虽这么说-没有人是完美的,每个人都有成长的空间。 因此,请保持增长,并尝试采取一些小步骤来提高这些非编程技能的能力,我也将这样做!

保持联系 (Keep in Touch)

  • Twitter

    推特

  • Newsletter

    通讯

  • GitHub

    的GitHub

Originally published at dev.to.

最初发布于dev.to。

翻译自: https://www.freecodecamp.org/news/the-most-important-non-programming-skills-for-programmers-d39fadc1a0fa/

英文 程序员编程技能描述

THE END

发表回复