作者 | Tomasz Łakomy

译者 | 薛命灯

时间如梭,不是吗?

我的编程之旅始于 2012 年,当时我还只是个 C++ 编程实习生。说实话,我根本不知道自己在做什么。即使是到了现在,这种状况依然没有改变。不过,在这个过程中,我确实学到了很多东西。

问题来了:在编程过程中,什么语言才是最重要的?

是英语?西班牙语?中文?波兰语?还是其他在工作中用来与其他人进行沟通的语言?

与人沟通比与机器沟更重要

编程是一项团队活动。很少有出色的软件产品是完全由一个人从头到尾做出来的(CodeSandbox 算是一个,但后来 Ives 还是请了一些人),大多数产品需要一个团队来打造。

沟通技巧可以成就一个项目,也可能会毁了它。相比存粹的技术,软技能对一个项目的成功起到更重要的作用。试想一下,你把世界上最好的 5 个数据库专家都请来了,但如果他们各自为政,互不沟通,最后他们会给你搞出 5 个不同的 MySQL、Aurora 或 MongoDB 实例。

了解你在做什么以及为什么

人一旦有了目标感,就会感觉好一些,这在工作中也是一样的。

作为软件开发人员,你的目标不应该只是把 JIRA 中的问题变成 JavaScript,或者把 Trello 中的项目变成 C#。

你的目标应该是用代码来解决问题。

如果你对正在构建或维护的系统很了解,就可以抛开技术做决策。这个功能是必需的吗?它解决了什么问题?可以用其他方式来解决这个问题吗?真的有必要解决这个问题吗?

这些都是业务问题,如果你想把工作做好,不仅要理解这些业务,还要主动参与其中。即使你在公司里不是 C 级别的人,也不影响你这么做,至少,你要明白自己在做什么。

如果代码评审让你感到有压力,那肯定是打开方式出错了

虽然我们没有必要那么想,但把自己写的代码放出来让其他人“围观评论”,这种体验跟写代码还真是有点不一样,也难怪人们会感到焦虑。

有人因为不堪忍受某些人的吹毛求疵,选择在这个人不在公司的时候提交代码评审。试想,如果你在一个新手的 PR 底下轰炸式地给出 50 个不那么友好的评论,你其实不只是在证明自己作为一名高级程序员的优越感,也是在证明你不是一个“好人”。

那么,正确的打开方式应该是怎样的?

你可以私底下找那个人,跟他好好聊聊,问他为什么把代码写成那样。

其实大多数人也不想把代码写臭,如果你看到臭代码,可能其中会有一些不为人知的原因。当然,也有可能是因为他们的编程技能还不够好,这个时候你要承担起“导师”的角色,给他们提供一些指导。

未雨绸缪

墨菲定律:会出错的事情就一定会出错。

这就像是一个真理,在设计系统时总会有一些东西会出错。

在开发一个登陆表单时,你要假设会有一些居心叵测的人把整本书的内容拷贝到密码输入框里。

在开发一个可见即所得的窗口时,你要假设会有人试图搞破坏,而且他们通常都能如愿以偿。

如果系统中使用了数据库,它一定会在某个时刻挂掉。如果你没有尝试使用备份来恢复数据库,那它们就算不上是备份。

如果你在给别人做演示,请确保这个演示在任何情况下都能正常进行,哪怕把它翻个底朝天,甚至是把它丢到水底下。

不要害怕让别人看到自己的无知

作为高级程序员的一个好处是,当别人问一些我不懂的问题时,我可以很淡然地告诉他们:

这个东西我也不懂,因为以前没有遇到过,不过我可以看一下,然后再告诉你。

当我还是一个初级程序员的时候,我总是很害怕别人会看到我的无知。经过几年的磨练,我才明白,如果碰到了自己不懂的东西,说明学习的机会来了。终身学习绝对不只是一个“口头禅”,它应该被付诸实践。

分享

等你把不懂的东西搞懂了,就要把它们分享出来。写一篇博客,录个教学视频,或者在公司里搞个分享演讲……你不要认为你刚学会的东西别人也都懂,即使是一个非常资深的人,他们也能从初级人员身上学到东西,反过来也是。

分享的过程其实是一个检验你是否真正理解所学的东西的过程。有句话说得好:

当你在教一个人的时候,其实有两个人在学。

英文原文:

https://dev.to/tlakomy/7-years-as-a-developer-lessons-learned-29ic

Q 言 Q 语时刻

在你的职业生涯中,学到了哪些受益一生的道理呢?

欢迎在留言区和大家一起交流。

七年程序员生涯,我学到的重要六课相关推荐

  1. 七年程序员生涯,我学到最重要的 6 个教训,别再中招!

    时间如梭,不是吗? 我的编程之旅始于 2012 年,当时我还只是个 C++ 编程实习生.说实话,我根本不知道自己在做什么.即使是到了现在,这种状况依然没有改变.不过,在这个过程中,我确实学到了很多东西 ...

  2. 雷军 | 我十年的程序员生涯

    文章来源与编辑 深度智能眼 文仅交流侵删 雷军回忆: 最近,和UCWEB同事讨论,怎么才能把我们的UCWEB做到极致.我说,"手机上的平台非常多,如果想做好,需要足够多.足够优秀的程序员.优 ...

  3. 雷军:《我十年的程序员生涯》系列之二(我赚的第一桶金)

    // 转载自雷军2008年11月5日写的博客.以下内容为博客原文: <我十年的程序员生涯>系列之二:我写BITLOK的这七年 1989年8月,大二暑假,我和王全国合作写了我的第一个正式作品 ...

  4. 一位10年程序员生涯的总结与经验忠告分享

    展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的1 ...

  5. [转]程序员生涯总结

    作者:金蝶中间件公司CTO袁红岗 不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远.世界上并没有成为高手的捷径,但一些基本原 ...

  6. 总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告

    展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告  走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的 ...

  7. 30多年程序员生涯经验总结(成功源自于失败中的学习;失败则是因为容忍错误的横行)...

    英文原文:Lessons From A Lifetime Of Being A Programmer 在我 30 多年的程序员生涯里,我学到了不少有用的东西.下面是我这些年积累的经验精华.我常常想,如 ...

  8. 告别程序员生涯,一点感慨,与诸君共勉(转)

    转自:http://www.uupx.com/te/c/DeveloperLife/20070411232447.html 告别程序员生涯,一点感慨,与诸君共勉 再过几天,我就正式告别程序员生涯了,这 ...

  9. (转)告别程序员生涯,一点感慨,与诸君共勉

    转自:https://blog.csdn.net/phphot/article/details/2230411 再过几天,我就正式告别程序员生涯了,这也是我最后一次以职业程序员身份在CSDN发表文章. ...

最新文章

  1. 1. 文件系统——磁盘分区、各目录功能、硬盘
  2. 机器学习算法面试—口述(4):决策树
  3. Struts2拦截器属性excludeMethods、includeMethods配置无效之解决方法
  4. maven项目的pom.xml 标签的含义
  5. 【语法】NSString
  6. 恒生证券期货行业用户维稳工作指引(一)
  7. 1 操作系统第一章 操作系统概念、功能、四大特征、操作系统发展与分类
  8. 优秀文章收集,也有专题,改变了我的一些看法。
  9. Android保存多张图片到本地
  10. 微博API授权登录(仅二维码登录)
  11. [Kaggle竞赛] IEEE-CIS Fraud Detection
  12. Intellij IDEA如何打包jar文件?
  13. 《程序猿的搬砖生活》八、学生时代最后的“疯狂”
  14. mysql 1.42_mysql-查询(DQL)
  15. 2021财院ACM选拔赛题解
  16. 文字生成视频,清华出品
  17. 分金问题 返回分割的最小代价 (贪心算法)
  18. MySQL命令简单应用
  19. Arduino实验十四 无源蜂鸣器与有源蜂鸣器
  20. NumPy 基础教程

热门文章

  1. mysql启动warning: World-writable config file
  2. sparkStreaming 练习
  3. 《数据分析变革:大数据时代精准决策之道》一第1章 了解运营型分析1.1 定义运营型分析...
  4. linux下安装jira详细步骤
  5. 我的Java开发学习之旅------Java经典排序算法之二分插入排序
  6. Android中focusable属性的妙用——底层按钮的实现
  7. 海量存储之十八–一致性和高可用专题
  8. 图像处理之opencv图像特效大全
  9. Linux下,使用nginx+ffmpeg+video.js实现直播效果(含centos7环境配置步骤)
  10. MFC中在picture control中显示图像的方法