0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

程序员必须学会沟通

工程师人生 来源:工程师吴畏 2019-02-28 14:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

我们程序员可以从解决的诸多问题中获得自豪感,比如说编写了最节省时间和空间的算法;设计了高度可扩展的架构;巧妙地为函数和变量命名;

创建的应用程序获得了五星级评分,甚至影响了全球许多人的生活。为了获得这种自豪感,我们需要战略性地规划我们的职业生涯,不断提高我们的技术技能。

为了提高我们的技术技能,我们花费大量时间和金钱来学习成为全栈和跨平台人才;每天都会在 Hackerrank 或 Leetcode 中进行 CS 理论和实践的复习;

常常购买有关最佳实践和设计模式的书籍;致力于业余项目以维护自己在 Github 上的活跃度;

通过回答 StackOverflow 上的问题来培养“声誉”——为了提升自己,我们还有很长的路要走。

所有上述这些通常都是以牺牲一个人的软技能为代价的。

软技能是人们在进行自我管理,以及与共事者(例如客户和同事)交往的过程中所使用的技能,包括领导力、情商、说服及倾听的能力、对同伴的激励,以及建立有价值的关系。

而硬技能则是指在解决问题或生产产品时所运用的高度专业化的科学知识。

通常情况下,大家都惯于认为“硬技能”掌握起来相对困难,软技能就简单易学——其实这是一种误解。实际上,如果自己未能意识到这一点并花费大量时间深入思考,软技能其实难以掌握。

沟通,或者说是将想法或信息传达给另一个人的能力,就是这样一种常被忽视的软技能。

和很多年轻的程序员一样,我也曾默认那些被指派直接与我合作的人,应该对技术原理有深刻的理解且无需我再做过多解释。

否则,他们要么不应该在科技行业工作,要么就是白痴。

许多年轻程序员认为正式的文档和流程只是官僚主义的繁文缛节,只会拖缓软件开发的进度,因此不应推行。

在传奇人物的宣传报道中,我们更是多见性格内向且多怪癖的大牛,但膜拜之余我们仍不得不承认他们大多很难合作。

程序员必须学会沟通。

首先,绝大多数编程活动都是在程序员与非程序员交互的组织内部完成的。

通常,我们必须与产品经理沟通,以充实业务需求的技术细节,以便衡量难度,评估可行性,并基于这些因素,优先考虑任务;

我们有时需要向项目经理提供评估并证明其合理性,项目经理则要确保项目符合预算要求并按计划进行;

我们需要与设计人员密切合作,以解决目标环境的局限性,识别用户在交互中缺少的流程,或发现信息设计的问题。

在与扮演这些角色的同事沟通时,我们必须时刻关注用于传达我们想法的词语或语气。

高绩效团队的一个关键因素是团队动力,如果我们在沟通中用了过激的方式而导致冲突,那么团队中就会形成隔阂以至于大家不能高效工作。

有人可能会问,为什么还有这些其他角色存在?

没有什么能阻止程序员直接与客户联络并收集需求;当瀑布模型(Waterfall Model,一种项目开发架构)比 Scrum 更受欢迎时,产品经理或许已成为过去;程序员也可以直接与 CEO 联系并使用纯逻辑来证明产品开发的可行性。

设计师也将逐渐失去存在的价值,任何编码器都可以使用自定义字体、颜色和图标甚至是矢量,而不是JPG。

我们自己能够编写单元测试的情况下,为什么还需要一个专门的测试人员团队?

真正有价值的成功产品是那些在规模不凡且需要多学科专业知识的产品。

因此,好的产品不可能靠谁独自完成。代码本身并不是一种商业行为。事实上,上述角色所涉及的工作内容往往需要花费大量的时间和精力才能完成,特别是在坚持高标准的情况下。

如果程序员以一己之力挑起所有活,那么无疑啥都做不好。即使做了也只会消耗掉原本可能专注于编写代码的时间,这才恰恰是程序员的主要任务。

另外,以这种方式否定同事的作用也是一种傲慢无知且目光短浅的行为。

产品经理为不仅仅基于我们的定位编写业务需求——这只是程序员工作的一部分——他们还通过不断研究客户行为和公司业务领域的趋势来保持产品的价值;

项目经理做的也不仅仅是证明估算的合理性——他们还会计划和调整时间表、预算,同时评估风险并管理资源分配;

设计师除了培养对艺术的良好品味外,还研究了大量心理学、人机交互、甚至神经科学,就是为了将科学发现融入公司的产品中;

测试人员不同于仅仅在开发环境中工作的单元测试,他还需要确保产品在部署到生产环境之后仍然按照预期的方式运行。

他们在消除开发人员偏见,思考“Unhappy paths”,记录错误重现的步骤,系统化测试工作流以及自动模拟用户交互方面(大多数开发人员认为这是一项苦差事)具有无可估量的价值。

程序员若跳出屏幕,外面的世界要大得多。我们应该保持谦虚,因为我们可能没有足够全面的知识来了解与我们角色不同的人的日常工作和责任。

的确,我们不能笼统地称呼那些不敲代码的人为“非技术人员”,因为他们而实际上是他们所擅长领域的技术人员,在他们的领域里我们也不过小白而已。

然而,沟通技巧的重要性或许不仅是因为需要与非编程角色互动,还在于需要与其他程序员进行沟通。

我们经常就一些抽象问题进行辩论,争先恐后地解释为什么这个好,那个棒,这个流程或框架优于另一个,以免我们的观点因带上了个人偏好而被忽视。

很多时候,工程团队都会做出一个架构决策,甚至不是因为它客观上比其他选择更好,而只是因为这个选择更有说服力。

我们也经常讨论并商定工作标准,例如版本控制工作流程和代码风格。我们喜欢互相教授高级编程技术和行业最佳实践。

最终,随着我们晋升到更高的职位,一对一地进行交流,提供反馈和管理冲突的责任变得不可避免。

其他人可能会争辩说,如果仅以“服从命令”为需求来聘请程序员,就不需要沟通技巧。

然而,即使是仅遵循项目开发指令的程序员,仍然需要通过沟通确保不可协商的要求得到充分理解。

即使是实习生和初级软件工程师,如果发现规范中存在错误,或者是在存在歧义的地方提出问题,也应该能够表达出来。

因此,沟通是程序员的核心技能。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序员
    +关注

    关注

    4

    文章

    955

    浏览量

    30786
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    裸机方式的缺点有哪些

    进行的: 应用程序程序员必须确保数据一致性。 超级循环可以与系统计时器轻松同步,但: 如果系统需要多种不同的周期时间,则会很难实现。 超过超级循环周期的耗时函数需要做拆分。 增加软件开销,应用
    发表于 11-17 06:11

    软通国际亮相2025沙中开源与AI科技峰会

    2025年11月11日,由沙特程序员协会(parmg)主办的"2025沙中开源与AI科技峰会"在利雅得盛大启幕。
    的头像 发表于 11-14 17:45 1282次阅读

    奔赴热AI,码力全开!Talkweb House@1024程序员日系列活动圆满收官

    1024程序员日”系列活动至此划上了一个圆满句号。本届1024程序员节以“AI构建世界,智能引领未来”为主题,广邀技术大咖、产业领袖、企业代表与全球开发者齐聚星城
    的头像 发表于 10-27 18:59 426次阅读
    奔赴热AI,码力全开!Talkweb House@1024<b class='flag-5'>程序员</b>日系列活动圆满收官

    开鸿智谷“以赛促学、以赛选才”|1024程序员节暨开源鸿蒙构建大会圆满落幕!

    10月24日,由开鸿智谷联合主办的长沙1024程序员节暨开源鸿蒙构建大会在长沙圆满落幕。本次活动以“湘聚长沙,共赴热AI”为主题,通过技术分享与实战竞赛相结合的方式,着力培养“开源鸿蒙+AI”领域
    的头像 发表于 10-27 17:58 474次阅读
    开鸿智谷“以赛促学、以赛选才”|1024<b class='flag-5'>程序员</b>节暨开源鸿蒙构建大会圆满落幕!

    程序设计与数据结构

    的地址)出发,采用推导的方式,深入浅出的分析了广大C程序员学习和开发中遇到的难点。 2. 从方法论的高度对C语言在数据结构和算法方面的应用进行了深入讲解和阐述。 3. 讲解了绝大多数C程序员开发
    发表于 05-13 16:45

    计算机网络排错思路总结

    明人不说暗话,这篇文章我们来聊一个非常有用,同时也是程序员必备的技能,那就是网络排错思路大总结。
    的头像 发表于 04-01 17:32 647次阅读
    计算机网络排错思路总结

    如何在 树莓派 上编写和运行 C 语言程序

    ,一本很好的书是BrianKernighan和DennisRitchie所著的《TheCProgrammingLanguage》。这本书对经验丰富的程序员和想学习C语
    的头像 发表于 03-25 09:28 938次阅读
    如何在 树莓派 上编写和运行 C 语言<b class='flag-5'>程序</b>?

    零基础入门:如何在树莓派上编写和运行Python程序

    是一种非常有用的编程语言,其语法易于阅读,允许程序员使用比汇编、C或Java等语言更少的代码行。Python编程语言最初实际上是作为Linux的脚本语言而开发的。Py
    的头像 发表于 03-25 09:27 1524次阅读
    零基础入门:如何在树莓派上编写和运行Python<b class='flag-5'>程序</b>?

    Gemini Vision + Raspberry Pi 化身“数字导盲犬”?

    本文讨论了一位程序员利用树莓派、摄像头、Gemini和Python构建PeregrineEye设备,使其成为“数字导盲犬”为视障者服务的项目经历,包括项目灵感、功能、构建过程、遇到的挑战及未来计划等
    的头像 发表于 03-25 09:20 1692次阅读
    Gemini Vision + Raspberry Pi 化身“数字导盲犬”?

    LDC1000 EVM GUI驱动无法安装,怎么解决?

    每次打开LDC1000 EVM GUI就会出现这个驱动没有安装,请问程序员怎么解决这个问题啊!!!
    发表于 01-17 06:15

    阿里云升级通义灵码AI程序员,全面上线

    近日,阿里云宣布其备受瞩目的通义灵码AI程序员已正式全面上线,为开发者带来更为强大和便捷的编程辅助工具。 此次上线的通义灵码AI程序员,在功能上实现了全面升级。现在,它支持VS Code
    的头像 发表于 01-09 11:16 956次阅读

    TMS320C6000程序员指南

    电子发烧友网站提供《TMS320C6000程序员指南.pdf》资料免费下载
    发表于 12-24 17:19 2次下载
    TMS320C6000<b class='flag-5'>程序员</b>指南

    TMS320C55x DSP CPU程序员参考补充

    电子发烧友网站提供《TMS320C55x DSP CPU程序员参考补充.pdf》资料免费下载
    发表于 12-21 11:36 3次下载
    TMS320C55x DSP CPU<b class='flag-5'>程序员</b>参考补充

    学习硬件的第一节课:学习读懂原理图

    常重要的。无论硬件设计得多么复杂,不管有多少设计真正硬件的实践经验,这些图和符号都是迅速有效地理解复杂硬件设计的关键。它们还包含了与嵌入式程序员设计和硬件兼容的件的相关信息,并教会程序员如何成功地与硬件工程师沟通
    的头像 发表于 12-16 16:04 3666次阅读
    学习硬件的第一节课:学习读懂原理图

    UCD3138A64/UCD3138128程序员手册

    电子发烧友网站提供《UCD3138A64/UCD3138128程序员手册.pdf》资料免费下载
    发表于 12-09 14:42 1次下载
    UCD3138A64/UCD3138128<b class='flag-5'>程序员</b>手册