相信每位开发者在自己开发的过程中,都会反思一些问题,比如怎样提高编程能力、如何保持心态不砍产品经理、996 之后怎样恢复精力。

编程中最重要的语言

对于中国开发者来说,这个问题的答案多半是“英语”,然而 Tomasz 却说:是英语,或者西班牙语、中文、波兰语,或者其它任何你在工作中与他人交流所用的语言。

作者指出“与人交谈比与机器交谈更重要”。编程是一项团队运动,虽然存在极少数案例,个人可以从零开发出很出色的产品,但是在绝大多数情况下,编程工作需要一个团队。

沟通技巧可以决定项目的成败,甚至 NASA 也因为这个问题而困扰。项目想要获得成功,整体的专业技能比纯技术技能更为重要,举个例子,如果你聘用了世界上最好的五位数据库专家,但是他们之间拒绝交流,没有协同工作,那最后交付给你的可能是 MySQL、Aurora 与 MongoDB 的五个不同实例,那又有什么意义?

编程中最重要的语言

大多数人在有目标感时会更开心,这也适用于工作。作为软件开发人员,你的目标不是用 JavaScript 实现 JIRA,或者用 C# 重写 Trello,你的目标应该是解决代码问题。

如果你对正在开发或者维护的系统有深入的了解,那么就可以在纯技术之外做出决策。这个功能是必要的吗?它解决了什么问题?我们能以其它方式解决这个问题吗?这个问题的优先级这么高合理吗?

这种思路有时被称为“业务上下文”,但如果你想做好自己的工作,你不仅应该了解这些上下文,还要能够塑造和影响它。这不是说你必须在组织中拥有某个高级职位才能这么去做,你至少要先去了解这些内容。

代码审查

不要背地里审查别人的代码,并且公开指出其中的问题,你在初级开发者的代码 PR 下以不好听的言论挑出了一些问题,这样并不能证明你有多厉害,相反,这只是说明你不是一个友善的人。

但是如果真的发现别人实现的功能完全无效,那么怎么办呢?合适的做法是私下去联系代码的编写者,与他们交流,找出他们为什么会以这样的方式实现该功能。

大多数人都不会想着说要写出不好的代码,如果他们的代码你觉得不行,那可能是他们在处理一些你没注意到的限制问题;或者他们确实编程能力还不够强,那这个时候就是你展现实力,帮助他们解决问题的时候了。

有些事情会出错,做好准备

“任何可能出错的事最终都会出错”,墨菲定律很可怕,你要始终假设在设计系统时可能会出现问题。

如果你正在构建登录表单,需要假设用户会将整本书复制并粘贴到密码字段中;如果你正在写一个 WYSIWYG(所见即所得)窗口,要假设有人会试图破坏它,并且他们很可能会成功;如果你有一个数据库,假设它会在某个时候出现故障;如果你还没有测试从 backup 中恢复数据库,那么这就不是一个 backup;如果你正在观众面前进行现场演示,需要确保 demo 在线上或者离线等情况下都能正常展示。

不要害怕说“我不知道”

刚开始当程序员的时候,可能你会害怕别人发现你不懂某一个问题,所以别人问你而你真的不懂的时候,你不会直接回答说你不知道,并且会给出一些不能确定的答案,但是本身没有底气,所以会害怕别人知道真相后觉得你是个骗子。

但是作为开发者几年之后,你可能会觉得如果一个东西你还不知道,那可能它是无关紧要的,或者这是你需要现在去学习的另一项新技术。终身学习不是软件开发的流行语,它是现实。

保持这样的心态,这个时候,当别人问了一个你不懂的问题时,你就可以大胆地说:我不知道,我还没有试过,我先看看,然后回复你。

分享学习成果

当你从“我不知道”的状态中学习到某项新技术的时候,这时候可以去与他人分享你的学习成果。比如写自己的博客、录制视频教程、在公司的分享活动中演讲,或者只是简单地把知识点告诉另一个人。

二次教学是考验你是否真正理解你所学的东西的极其有效的手段,而且一般来说,即使是最资深的专家也可以从初学者那里学习到新东西,这样对于你和其他人来说是双赢。

作为开发者,你工作了几年?在工作过程中学习到了什么呢?可以在下方评论区,分享一下你自己的故事 ,顺便看看大家怎么说。

一个优秀程序员的所必须了解的相关推荐

  1. 黄金跳槽期到了,一个优秀程序员的简历应该怎么写

    黄金跳槽期到了,一个优秀程序员的简历应该怎么写 换工作的最佳时间是什么时候呢?江湖上一直流传着两段时间:金三银四和金九银十.也就是说,换工作的最好时间是3月份,没赶上的话,4月份也可以. 好的简历无疑 ...

  2. 距离一个优秀程序员,你还差多少?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作者简介:杨守乐,CSDN 知名博主,关注 Android.Java 领域,现在主要专注于音 ...

  3. 对话MySQL之父:一个优秀程序员可抵5个普通程序员

    编者按:MySQL之父Monty有着四十多年的编程经验,从儿时的兴趣到长大后的深耕,他在编程领域不断钻研,最终成为编程大师.<新程序员004>带你走进Monty的程序人生,谈谈他在编程方面 ...

  4. PK!一个优秀程序员的自我修养

    1 普通程序员的日常 普通程序员的日常:一台电脑一盒烟,一解Bug一下午,一碗泡面一壶水,一顿能管一整天.杀死一个普通程序员不用枪,改三次需求就可以了. 2 进阶程序员的日常 进阶程序员的日常=加班狂 ...

  5. 怎样做一个优秀程序员

    程序员是一种技术工作,在IT的发展中有相当重要的地位,从底层硬件通讯协议的建立, 到数据传输层的处理,到操作系统的建设,到数据库平台的建设,一直到应用层上各种数 据营销平台的搭建,程序员在里面都扮演着 ...

  6. 优秀程序员必备七要件

    程序员是一个要求技术含量很高的职业,同时要求有不断进取的精神和不达目的决不罢休的精神状态,以下就是简单总结的如何做个有些的程序员,希望对各位的求职和工作能够有所帮助. 1.踏实的工作态度.低承诺,高实 ...

  7. 一个老程序员在情人节对中国软件业的致言!(转)

    一些人总是发出一些错误的声音,形成了劣胜优汰可怕的现象.他们在误导着中国,把 我们的后继军训练成 软件蓝领――――胸无大志,目光短浅,稍有点成绩就自满就自高自大的人,浑不知天外有 天,外国正在虎视眈 ...

  8. 优秀程序员的七大特征,你具备几条?

    优秀程序员的七大特征,你具备几条? 世界上的很多事情都是有规律的,就像 <高效能人士的七个习惯>,优秀的程序员也有七个主要特征.这些特征有些是先天具备的,也就是天赋,但有些是在日常的编程工 ...

  9. 优秀程序员因何而优秀?

    这些年我曾和很多程序员一起工作,他们之中的一些人非常厉害,而另一些人显得平庸.不久前因为和一些技术非常熟练的程序员工作感觉很愉快,我花了一些时间在考虑我佩服他们什么呢?什么原因让优秀的程序员那么优秀, ...

最新文章

  1. 交换机模拟配置软件_网络设备模拟器Packet Tracer实验
  2. mysql workbench pdm_MySQL Workbench
  3. /dev/null 位桶
  4. php svn up,php中执行svn update问题
  5. 今天,“场景赋能•驱动有数”,神策数据 2018 数据驱动大会在京成功举办
  6. 【渝粤题库】国家开放大学2021春1377理工英语3题目
  7. xmlhttprequest level 2
  8. [html]请描述HTML元素的显示优先级
  9. mysql 触发器_MySQL入门之触发器
  10. 复地邮箱服务器地址,打印服务器设置方法
  11. 函数式编程语言:LISP/Scheme 小语种简介
  12. 修改这个新的伪原创工具列表
  13. sap甲方_带你走进SAP项目实施过程——前言
  14. python曲线拟合绘图_python – 将曲线拟合到分段图像
  15. Djang(在前端仿DjangoAdmin同样效果)
  16. ecshop 实现购物车退出不清空
  17. delphi 分析抓取html,delphi网页数据抓取
  18. U盘文件夹变成应用程序
  19. eoj 3279 爱狗狗的两个dalao(dfs)
  20. Linux命令行参数前加杠-和不加杠的区别

热门文章

  1. LightGCN实践2——GPU内存爆炸终结篇
  2. 决定AI智能机器人智能的因素有哪些
  3. 刚刚确诊了!谷歌出现新冠肺炎病例了,限制员工出行;Google 云开始突然裁员!...
  4. python文本特征提取实例_Python文本特征抽取与向量化算法学习
  5. 在Ubuntu18中安装Xen HVM 虚拟机
  6. 环旭电子首座5G毫米波实验室落成,推进5G天线模块测试服务
  7. Numpy 中的 Ndarray
  8. 量水堰槽水位计的用途和使用方法说明
  9. 无线充电市场升温推动阿尔法绕线机发展
  10. 每日推荐:文字转语音朗读软件