程序员除了要会敲代码,还需要掌握哪些软技能?

程序员除了要会敲代码,还需要掌握哪些软技能?

程序员除了要会敲代码,还需要掌握哪些软技能?

作者:General Assembly 的首席讲师。

来源:CSDN程序人生

当我在寻找一名可以合作的程序员时,我认为相比起专业技能来说,非专业方面的技能更能让他们成为优秀的合作者。

事实上,本文中谈到的所有技能都能帮助技术项目编写好的代码。其中大多数的技能也有助于促进编程以外的职业发展,但我想专心讨论一下为什么这些技能对于程序员尤其有益。

程序员除了要会敲代码,还需要掌握哪些软技能?

共情

为了打造一款出色的产品,你必须设身处地地为用户考虑。他们将如何使用你的产品?哪些功能对他们有帮助?你的程序怎样才能帮助他们改善生活?反过来,你的产品会如何伤害他们,或对他们的生活产生负面影响?你的应用程序的伦理意蕴是什么?

共情对于你的许多应用程序至关重要。如果保管不当,那么你的用户信息会被第三方滥用。

如果有人无法访问你的产品,那么会妨碍使用产品的人数。如果产品运行非常慢或需要大量宽带才能运行,那么用户就会离开,而且网速很慢的用户以及移动用户都无法使用产品。

每天有关一些公司实现了一些有害算法的文章层出不穷,比如 YouTube 的算法中激进的右派,亚马逊建立的带有性别歧视的招聘算法(最终他们并没有使用该算法),或是 AI 误判黑皮肤女性的性别。在你写代码的时候,仔细想想每个人!

此外,共情有助于成为团队成员和导师。设身处地的为经理或其他开发人员想想。为什么他们要做出这些决定?你怎样做才能帮到他们?拥有共情肯定能够提高你的能力,让你成为一名高效的队友。如果你是老板,那么你可以留住你的人才,如果你表现出共情,那么员工的工作效率会更高。

耐心地对待其他程序员,尤其是那些正在学习新技术的人。提醒你自己你当初学习的时候也非常难,你当时的感受如何。他们可能也很类似。粗鲁地对待他们,只能让他们的进步减慢,在他们面前装腔作势只能给他们带来伤害,让他们举步维艰。

你的言行都会带来一定的后果,你可以用自己的言行来引导积极的改变,也可以伤害他人。这不仅会发生在面对面的交流中,也会发生于在线沟通中。你可能认为自己很幽默,或者只是想放松一下,但是实际上对某人的生活造成了负面影响。你的行为由你自己决定,而在伤害到某人后也由你自己决定如何道歉。

程序员除了要会敲代码,还需要掌握哪些软技能?

解决问题

在教人编程的时候,我发现很多人的困难在于解决问题,而非代码本身。能够将问题分解成小问题,然后解决这些小问题的能力需要许多的实践。善于解决问题可以帮助你成为一个更强大的程序员。

此外,大多数问题都有多个解决方案。作为软件程序员,我们工作的很大一部分是思考这些不同的解决方案并选择最佳解决方案。应该选择实现更快的那个?还是运行效率更好的那个?还是价格上更经济的那个?所有这些都是重要的问题,选择正确的解决方案是软件开发中充满挑战又非常重要的部分。

程序员除了要会敲代码,还需要掌握哪些软技能?

合作

作为程序员,你与他人合作的机会非常多。如果你是自由职业者或是企业家,那么你必须与其他开发员、业务员、经理、开源贡献者、利益相关者以及其他不计其数的人合作。学习如何与不同的人和不同性格的人一起工作至关重要。

有很多东西可以促进良好的合作。首先必须清楚孤掌难鸣,一个人无法做好所有的事情。不同的人拥有不同的技能、观点和生活经验,所谓三个臭皮匠顶一个诸葛亮。不要总觉得你需要背负一切,是所有人的救世主。如果让别人也贡献力量,你可以做得更好。

向他人寻求帮助,同时也要愿意帮助别人。你不需要在所有事情上都成为专家,而不同的人可以在不同的领域成为专家。依赖其他人,如果遇到困难,请务必寻求帮助,这样做你就不会长时间陷入困境。

有人请你帮忙时,你要愿意帮助他们。在帮助他人的过程中你自己也可以学习很多东西,而且还能加强自己对某个主题的了解。如果你是管理层,那么请务必留出时间指导和有效合作!

同样,不要试图说服别人或立即驳回他们的观点。如果他们的意见不被重视或体谅,那么将来他们就不大可能会作出贡献。

在别人分享他们的想法时积极地倾听,而不是在他们说话的时候思考你要怎么回应或为什么你的想法更好,而是应该多想想为什么他们的方法也很好,或是怎样才能实现。

最后,如果你实现了别人精彩的想法,那么要将这些想法归功于他们。在团队中,成员的想法被忽视、被低估、或是功劳被别人抢走是抹杀员工效率的最大因素。

程序员除了要会敲代码,还需要掌握哪些软技能?

沟通

当与其他人一起工作时,无论这些人是同事、客户、使用产品的人、经理、或是下属,良好的沟通至关重要。凡事都要抱着诚实的态度,诚实并且和蔼地汇报项目的进展,项目目前的状况,以及你的观点。如果你的态度粗鲁或没有建设性,那么别人就不太愿意接受反馈。但是,如果你不诚实,或不言明要害,那么就看不到积极的改变。我们要在这一点上做到泾渭分明。

我现实生活中遇到的一件真事:有人曾经在看了我的一篇博文后,写了一封长信针对我的语调形容我有多么傻。我常常会使用大量感叹号,而且会努力让我的博文听起来令人兴奋,而且我有意使用骇人听闻或有趣的标题。那个人在信中表现得非常性别歧视,还说了很多伤人的话。话虽如此,我可能会减少使用感叹号,仍然会让别人对编程感到兴奋。如果那个人可以用更加具有建设性的批评来说我,那么我会更加容易接受他的批评。

如果事情进展不顺利,我们也需要据实相告。诚实地说需要推迟截止日期,或者在工作中哪些事情进展不顺利。只有坦诚相告才更有可能改变状况,让一切都好起来。

程序员除了要会敲代码,还需要掌握哪些软技能?

包容

我曾经在夏令营担任攀岩教练和辅导员,与我一起的大多数人是中学女生。她们是我最喜欢的一批人。但是,话虽如此,通常中学生不是很能接受不同的意见或很容易集体反抗。

有一次我们一起做游戏,我们画了一个大圈,然后如果一个辅导员说某某“出圈”,那么他们就必须离开游戏,而背后的决定因素并没有告知他们,而且他们也无法掌控。依旧在圈里的人可以玩游戏,而圈外的人将被排除在外,只能远远看着。

通过这个游戏让这些女孩明白:因为一些在你掌控之外的因素而被排除在外时,你的心理感受。而我也在思考这个问题。作为成年人,我们还会将别人排除在圈外,因为一些他们无法控制的因素将他们排除在外。但是,如果我们让他们回到圈中,让他们贡献自己的力量,那么我们的产品可以赢得更多不同的体验,可以更好。

关于多样化团队表现更好的研究有很多。但是从个人的角度来看,想想如果自己被排除在圈外时的感受,我们应该让这个圈更大,而不是更小。

有可能你的很多用户都是传统意义上被排除在科技圈之外的人。我可以根据自己的亲身经验告诉你,成为团队中与众不同的一份子滋味并不好受,因为在我的编程职业生涯中,只有 5% 的时间里团队中会有另一位女性。

这也与共情相关,确保你做的程序可以服务于各种各样的用户。不只是四肢健全的人,或是拥有尖端互联网或技术的人。你可以吸引更多人。

程序员除了要会敲代码,还需要掌握哪些软技能?

耐心

在编程的时候,第一个你需要有耐心的就是你自己。编程很难,有时你会遇到 Bug 或难以克服的问题。如果编程工作总是很容易,那么你就不会遇到挑战,也就不会成长为程序员。

坚韧不拔,坚持努力工作。但是,你也可以休息一下,过一段时间再来解决问题。也许休息一下有助于你解决问题。

另外,对待他人也要有耐心。学习需要花费时间,人无完人。犯错和失败是学习过程中最重要的经验,在不安全的环境中才能冒险或成长。你需要理解尺有所长寸有所短,还要知道学习需要投入时间。

程序员除了要会敲代码,还需要掌握哪些软技能?

创造力

作为一名程序员,我最喜欢发挥我的创造力,建立对他人有益的事物。你可以创造性地建立非常酷的东西。

在提出新功能、接口和应用程序的时候,创意的想法非常重要。有人购买我为一家公司做的一款产品很大一部分原因是因为该产品拥有的创意界面,而我的作品展示网站备受瞩目也好是因为它富有创意。

除此之外,许多问题都需要创造力来解决。每个编程问题都有多个解决方案,提出一些具有创意的方法往往可以带来优化的解决方案。


总结

以上这些技能通常被称为“软技能”,但我觉得这样说还远不够。这些技能不仅有助于编程,也有助于成为一名优秀的同事。这些技能的重要性超过了对一门具体的语言、库或框架的了解,它们甚至超越了科技的范畴。对于程序员来说,以上这些技能真的非常重要。话虽如此,但是人无完人,每个人都有成长的空间。所以持续发展自我,并努力掌握这些非编程技巧!

程序员除了要会敲代码,还需要掌握哪些软技能?

热 文 推 荐

从Java小白到收获BAT等offer,分享我这两年的经验和感悟


校招前几个月,如何高效地进行复习?

刷完500道BAT面试题,我能去面试大厂了吗?

微信公众号【程序员江湖】里有什么?

程序员除了要会敲代码,还需要掌握哪些软技能?每天早上九点分享一篇程序员干货文章,包括但不限于技术干货、求职攻略、学习方法、成长经验、生活感悟等方面的内容。

程序员除了要会敲代码,还需要掌握哪些软技能?公众号后台回复“加群”即可加入我们的程序员专属微信群(目前有程序员江湖大群、Java等方向的技术交流群、春招实习交流群等)

程序员除了要会敲代码,还需要掌握哪些软技能?公众号后台回复“资料”即可获得3T海量学习资料,资料涵盖各个技术方向,包括Java、C++、前端、大数据、移动开发等方向。每个方向都包含了基础、进阶、求职等部分内容。

程序员除了要会敲代码,还需要掌握哪些软技能?分享程序员关心的技术、求职、学习成长与生活


 

相关推荐