软件工程师的技能发展都会经历一个自然的过程——经验从无到有,最后变成老手。而一旦到了经验丰富的阶段,他们对代码就不那么感兴趣了。恰恰相反,他们会把更多的精力放在文件设计和代码重构上。

奇怪的是,不管任职于哪家公司,大多数经验丰富的工程师都会表现出同样的特点。他们缺乏对代码的关注,和其他工程师相比,他们写代码的速度较慢。这是因为和仅仅编写代码相比,他们会将更多的时间花在设计上面。

从一个新手到经验丰富,这个转变过程不是一蹴而就的。但一般而言,这些工程师会用几年甚至几十年的时间,逐渐成为领域内资历很高的人。

他们似乎在每个公司都是一样的——不断地处理新出现的需求,进行不必要的繁忙工作——这无疑会让他们感到沮丧。本文将指出工程师们可能表现出的一些抑制其发展的特征。

1. 在代码重构上浪费时间

@techleadhd作为目前在世的经验最丰富的工程师之一,在推特上透露了他关于编写代码的真实想法。

他显然不相信编写代码的意义。相反,他暗示称删除和重构代码是有价值的。

但这项工作并不是软件清理,而是做软件工程。

这就意味着工程师需要设计代码,而不是维护代码。维护代码是其他人的工作,兴许实习生就能做到。

软件工程师们应该花时间对那些陈旧低效的代码进行编程,而不是试图改进旧的基础结构。只要工作正常运作,就还可以用尚有不足的代码。然而,不少经验丰富的工程师似乎认为维护旧代码具有很重要的意义。

2. 关注整体情况而不是代码

值得明确的一点是,整体情况和业务方面的事情并不重要,重要的是代码!

经验丰富的软件工程师有一个坏习惯,就是把注意力集中在整体情况而不是代码本身。他们喜欢提出这样的问题,比如“这个项目将对谁产生影响”“最终用户将如何与代码交互”以及“工程师将如何维护代码”。

他们花费很多时间试图去了解项目的范围以及它对于公司的影响。有时,他们甚至会用他们认为的“更好的解决方案”来挑战领导阶层。那么,当他们专注于诸如“影响”和“优先次序”之类的琐事时,他们如何抽出时间来完成所有代码?

把所有的时间都花在会议、巩固、度量跟踪和代码审查上,会导致代码编写不再纯粹。

优秀的程序员不应该质疑他们正在做的事情。相反,无论是什么请求,他们都应该低下头来编码。在任何时候,企业都确切清楚什么样的行为将会对公司产生影响。作为程序员的工作职责,就是做好本职工作,而不是弄清楚他们做的事情是否值得,或者是否符合公司的战略。

希望经验丰富的工程师们记住:你是程序员,而不是领导者。

3. 总是想要一个设计文档

出于某种原因,经验丰富的软件工程师们总是想要一个设计文档。其实,在不考虑设计文档的情况下,无论项目规格多大,直接开始编写都要快得多。

人们不会用一个稍微不同的对象或任何东西去重复功能。那么,为什么经验丰富的软件工程师偏要如此在意呢?

最后,如果不需要花时间考虑设计文档,工程师很可能将以快十倍的速度编写代码。

4. 不喜欢“复杂性”和“设计过度的工程”

在某种程度上,有些资历颇深的工程师不再愿意深思其他人的代码。

因此,当创建一个模块时,他往往把在学校学到的所有知识都融合到一个面向对象记忆体中,并通常声称这是过度设计的代码。

其实他们只是不想深思别人的杰作。

花时间去理解如何从对象B中得到对象A,然后调用函数C,调用函数D,有时选项F和选项G从配置文件E提取,配置文件E用函数F从数据库G中来解析数据,然后将日志存储在Hadoop、 CouchDB和S3中,这会很困难。

人们开始抱怨,说代码太简单,或者设计太复杂。懒惰使得精心设计的代码很容易停产。

5. 他们都被困在未来

事实上,我们现在所了解的框架往往是一生中所需要了解的唯一框架。

然而,经验丰富的工程师似乎花费了大量的时间去学习新的框架和语言,最起码去研究新的设计原则,但这往往并非是必须要做的事情——很多事情并非是越多越好的。

图片来源:unsplash.com/@k8_iv

事实上,从这一点来考虑的话,经验丰富的软件工程师可能正是阻碍社会发展的因素之一。

随着对代码重构、设计文档和学习所提出的源源不断的需求,他们不断地推进着软件的迭代。我们甚至可以这么想:如果没有那些经验过度丰富的工程师,现在说不定已经出现比我们更智能的飞行汽车和机器人了!

Java工程师成神之路系列文章

在 GitHub 更新中,欢迎关注,欢迎star。

直面Java第256期:jdk1.6对synchronized做了哪些优化?

成神之路第015期:设计模式:单例模式

深入并发第008期:到底什么是计算机内存模型?

- MORE | 更多精彩文章 -

  • 8种你可能正在写错的SQL用法

  • 一篇文章带你登顶 MacBook高效工作环境配置

  • 2019 Java发展趋势报告:Java老矣,Java正年轻

  • 如何写一个清晰明了的Bug

如果你喜欢本文,

请长按二维码,关注 Hollis.

转发至朋友圈,是对我最大的支持。

好文章,我在看❤️

前谷歌技术主管亲述:程序员请避开这几大雷区相关推荐

  1. 前谷歌工程师:如何看待程序员普遍缺乏数据结构和算法知识?

    很多技术人都很迷茫,觉得自己做的项目没有技术含量,成天就是卖苦力.技术的东西,日新月异,有些人总在忙于追求热点新技术,东学学.西学学,平时泛泛地看技术书籍.技术文章,但始终根本抓不住技术的本质,干了三 ...

  2. 程序员请注意:异步编程模式已被人注册为专利

    不论是服务器端编程还是客户端编程,编程中的同步和异步对程序员来说都应该不陌生,我们经常会用同步编程来解决顺序执行问题.用异步解决并行执行问题.然而,就是这样的常见的编程模式,有人却将其申请为专利.在谷 ...

  3. 从医记之程序员请呵护你的胃

    2019独角兽企业重金招聘Python工程师标准>>> 前言:转到医院工作已经3月了,虽然不是医生,但也穿着白大褂,看着像那么回事儿,内心也渐渐强大了.上次@王振威 的老婆@刘小羊 ...

  4. 世界读书日:作为一个优秀的程序员请收藏这份书单

    ​4月23日世界读书日全称"世界图书与版权日",又称"世界图书日".最初的创意来自于国际出版商协会.由西班牙转交方案给了联合国教科文组织. 1995年11月15 ...

  5. 网易裁员,让保安把身患绝症的员工赶出公司!前网易员工亲述经历的噩梦!...

    程序员的成长之路 互联网/程序员/成长/职场  关注 阅读本文大概需要 23 分钟. 相信很多人都已经看过了,为什么我还发,无他,尽一份力扩大传播! 我是网易的一名游戏策划.14年从上海交大毕业后就进 ...

  6. 程序员请注意,这个Python思维误区会致命!

    不止一位程序员告诉我,现在中国力量崛起,以后出国可能大家都得讲中文呢,谁还去学英语啊. 可实际上呢? 程序员对英语的需求不是减弱了,而是更强了.中国产出了大量的新技术,硅谷同样在产生创新技术,中国的开 ...

  7. 东南亚的招聘骗局,程序员请注意!

    阅读本文大概需要 5.2 分钟. 总有些我认为是常识的事情,在别人看来都是第一次接触.很多骗局都是如此,圈内人不上当,圈外人不警惕.毕竟骗子吃的就是信息不对称的生意.关于东南亚的招聘骗局,便是如此. ...

  8. 谷歌json插件_程序员必备的4款Chrome插件,妥妥的神器!

    之前就粉丝跟小编说,想要推荐几款程序员使用的插件,所以小编就去找了找,发现了这4款当下比较热门且实用的,也是程序员经常用到的,这几款插件也可以提高工作效率,难怪隔壁小哥哥程序员的效率都挺高,估计也用了 ...

  9. 程序员请收好:10个非常有用的Visual Studio Code插件

    作者 | Daan 译者 | Elle 出品 | CSDN(ID:CSDNnews) [导读]一个插件列表,可以让你的程序员生活变得轻松许多.无论你是经验丰富的开发人员还是刚刚开始第一份工作的初级开发 ...

最新文章

  1. 量子计算机与人脑接口,量子信息科学:量子计算机、隐形传物与人脑量子运算...
  2. KDD 2021多个奖项出炉:斯坦福博士摘得学位论文奖,北航校友胡侠获新星奖
  3. MyBatis基础:MyBatis关联查询(4)
  4. 第6节 三个败家子(6)——很黄很暴力的刘禅
  5. 使用ExecutorService来停止线程服务
  6. jquery mobile用代码弹出dialog
  7. JQUERY对RADIO,CHECKBOX,SELECT的操作常用方法大全
  8. 牛客多校第九场H Cutting Bamboos(主席树 区间比k小的个数)题解
  9. 狐狸抓老鼠,为何东北向才会成功
  10. 抖音极速版—–青龙面板
  11. iOS 在线下载字体
  12. 【不积跬步_无以至千里】 数学知识(不定时整理)
  13. 鱼塘钓鱼 优先队列 多路归并排序 贪心
  14. 多线程学习(九)-可阻塞的队列
  15. mac上使用nginx代理
  16. 实例011阳阳买苹果
  17. 百度地图 由起点和终点 获取中间路线的坐标集
  18. [H5案例课程]连连看H5小游戏的制作-岑远科-专题视频课程
  19. matlab实现Kmeans聚类
  20. java 推箱子游戏 简单例子

热门文章

  1. if laytpl 非_Layui-神奇的layui.laytpl
  2. arm linux挂载ubi,挂载ubifs文件系统分区
  3. ajax csrf php,JQueqy Ajax的使用(POST\GET请求 csrf_token)
  4. js小数运算出现多为小数问题_js 数字加减乘除精度问题,解决小数点后多位小数...
  5. 十四、List,Set,Collection,Collections
  6. 解决火狐https问题 安全连接问题
  7. (王道408考研数据结构)第八章排序-第四节1:冒泡排序
  8. Linux系统编程39:多线程之基于阻塞队列生产者与消费者模型
  9. thrift客户端调用不支持多线程,非线程安全
  10. Unicode-objects must be encoded before hashing