The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
有技术技能和软技能。每个程序员都知道这一点。技术技能涉及算法、运算符、类、对象以及技术学校教给我们的其他一切。而软技能则涉及其他方面。具体是什么呢?很难说。让我们试着澄清一下。
下面是我在网络上找到的一份非详尽的软技能清单1, 2, 3, 4, 5, 6:共情、开放性、愿意学习、有效沟通、团队合作、易接近、乐于助人、倾听、耐心、责任感、批判性思维、解决问题能力、指导、调适、清晰性、好奇心、策略思考、终身学习、商业意识、职业道德、判断力、自我管理、承诺、问责、创造力、适应性、大局观。哇!
你真的了解这些词的确切含义吗?我不了解。
实际上,我建议我们用“做正确的事”这个格言来取代它们,然后结束了。
我有我自己的软技能清单。我也坚信技术技能只是成为一个优秀程序员的一小部分,但同理心和学习的态度并不构成另一部分。当然,在办公室微笑,而不是对一个愚蠢的老板发泄情绪是有帮助的。但这不是软技能所涉及的内容。
它们关乎我们交换成果的能力。技术技能产生成果,而软技能将其转化为最终产品,即可运行的软件。以下是一个简要清单,没有特定顺序:
绘图。当你和你的伴侣讨论下一个度假计划时,交谈很好用。但在软件团队中,用图表解释你的想法的能力会大大提高你的价值。
写作。再次,交谈很好用,当你的混乱团队被一个刚读完一本关于无条件爱的书的歇斯底里的老板管理时。在一个更加纪律严明的环境中,你能够将自己的思想写下来确实能够对共同的成功产生影响。
报告。优秀的程序员不仅知道如何修复错误,更重要的是,知道如何正确地报告错误,以使项目受益。用简单的语言描述技术问题的能力是一项至关重要的软技能。
志愿工作。开源是任何软件项目的重要组成部分。你必须知道如何与开源社区合作,通过为他们提供软件回馈来回报他们提供的软件。有时你需要向他们报告问题,有时甚至需要提交拉取请求,甚至可能创建自己的开源产品。这需要很多非技术技能。
收费。程序员通过编写代码来赚钱。很多时候项目失败是因为重要的人因为金钱冲突而离职。他们不知道如何解决这个问题,如何管理自己的财务目标,如何要求加薪,或者如何改变支付计划。我对此指责程序员。我们,技术人员,必须知道如何管理与项目的财务关系。
放松。很多项目因为程序员疲劳而失败。这往往是因为他们不知道如何合理安排时间:何时工作,何时放松。再次,我对程序员负有责任。我们必须知道如何管理自己的心灵和平。
提问。不是向朋友提问,而是向Stack Overflow和其他公开资源提问。软件开发世界正变得全球化,你的项目团队所掌握的知识只是世界上关于你正在解决的问题的一小部分。你必须知道如何向世界提问。这是成为一个优秀开发人员所需的软技能。
发推。这里涉及到你在社交网络上分享你的思想和成就的能力。如果你保持沉默和网络社交恐惧症,你并没有真正帮助你的项目。这是你不能在几天内学会的技能。我建议你看看我的256个博客技巧。
测试。这里指的不仅是编写自动化测试(这是一项技术技能),还包括与测试人员进行沟通,确保他们的反馈改善正在开发的软件的质量。开发人员和测试人员之间存在一个众所周知的冲突,优秀的程序员知道如何处理这个冲突。
分支。还在单个master
分支上工作吗?那还是个业余水平。你必须学会如何使用多个分支,如何解决它们之间的冲突,以及合并和变基的区别。这是一项软技能,因为它与你的代码质量无关,但严重影响你作为软件开发人员的专业素养。
失败。大多数项目都会以某种方式失败。技术上的失败并不是我们问题的主要来源。我们经常因为管理不善而失败。优秀的程序员知道如何处理失败,通过引发(也称为快速失败)、预测(也称为风险管理)和接纳来应对失败。
交付。持续集成、交付流水线、构建自动化、分阶段部署、绿蓝部署等等,如果你认为所有这些事情只与DevOps部门有关,那你就错了。你必须了解你的代码如何到达用户手中。产品越大,流程越长,涉及的人越多,需要的软技能就越多,以确保流畅进行。
引人入胜。任何项目都是更大政治游戏的一部分,或多或少。如果你将自己与阴谋隔离开来,声称你的工作就是写代码,那你就不是一个优秀的程序员。优秀的程序员了解资金的来源,了解主要股东是谁,知道什么时候应该拍马屁。
我有没有忘记重要的东西?
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 05:04