拒绝经验过剩,“程序员的工作只能是代码”?
似乎软件工程师都有一个自然而然的成长过程:从缺乏经验的新手,发展到中级工程师,进而成为经验过剩的工程师。一旦软件工程师进入经验过剩阶段,他们对代码的兴趣就会降低!那么哪些迹象表明你已经经验过剩了呢?
作者 | SeattleDataGu
译者 | 弯月,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下为译文:
奇怪的是,无论你在哪家公司工作,大多数经验丰富的工程师都会体验出一些相同的特征。由于他们缺乏对代码的关注,在设计上浪费的时间比写代码的时间还长,因此会拖累每位工程师编写代码的速度。
从新手工程师到经验过剩的工程师的转变并非一蹴而就。然而,经过多年甚至几十年的磨练,这些工程师都会逐渐转变成经验过剩的工程师。几乎每一家公司都是如此,而且不断应对这些人的需求和不必要的忙碌工作真的很令人沮丧。
无论你是新手工程师还是经验过剩的工程师,本文都可以指出经验过剩的工程师的特征,从而帮助你避免这种发展趋势。
浪费时间重构
@techleadhd(https://twitter.com/techleadhd)是目前最活跃的工程师之一,他在最近的一篇Twitter帖子中表达了他对编写代码的真实看法。
很明显,他不相信写代码,相反,他暗示删除和重构代码很有价值。他认为这种工作不应该被称为软件清理,而是应该叫做软件工程。
我们应该设计代码而不是维护代码。
维护代码的工作可以由别人胜任,就连实习生都可以胜任。
软件工程师应该花时间编写旧的低效代码,而不是尝试改进旧的基础架构。为了保证系统正常工作,你甚至可以通过“胶带”把这些代码组织到一起,将来必然有别的工程师接管我们的代码,在现阶段我们无能为力。然而,经验过剩的工程师总是觉得有必要维护旧代码。
他们的重心放在了顾全大局而非代码
在这里,我只想澄清一点:顾全大局和业务并不软件工程师的工作,我们的工作只有代码!
经验过剩的工程师习惯于重视大局胜过代码本身。他们喜欢提出的问题包括:“谁会受到这个项目的影响?”,“最终用户将如何与代码交互”以及“我们将如何维护这些代码?”等等。
他们浪费了大量时间来了解项目的范围以及对公司的影响。有时,他们甚至会挑战领导,认为自己有“卓越的解决方案”。如果他们一味地专注于“影响”和“优先级划分”等诸如此类微不足道的事情,怎么可能有时间写完所有的代码呢?
将所有时间都花在各种会议、统计指标和代码审查上,我们只能眼睁睁看着写代码的时间一分一秒流逝。
经验过剩的工程师对缺乏经验的工程师没有信心,对此我们一点也不会感到惊讶。缺乏经验的工程师只会全力以赴写代码,并按照吩咐做事,即便范围可能过于复杂。
这是因为优秀的程序员不会质疑他们的工作。相反,无论面对何种请求,他们都会低下头写代码。无论何时,对公司产生的影响都应该留给业务去评判。我们作为程序员的工作就是实现代码,而不是设法搞清楚哪些工作有价值,或如何适应公司的战略。
我们需要提醒经验过剩的工程师:你们是程序员,不是领导。
对他们来说,设计文档不可或缺
出于某种原因,经验过剩的工程师总是想要设计文档。
无论项目的规模大小,不考虑设计文档,全神贯注写代码可以快速推进项目。你大可不必纠结你需要哪些对象,或代码需要实现哪些操作场景。
从我们的角度来看,我们发现将一切记在脑海中要容易得多。即使拥有数千行代码,也并非难以管理。
我们不会用略微不同的对象或其他东西重复创建同一个功能。
我们不会使用多个对象创建重复的功能。
为什么经验过剩的工程师如此关心这些问题呢?
最后,如果我们不需要花时间思考设计文档,那么就可以将写代码的速度提高十倍,而且能够更有效地工作。
他们不喜欢“过于复杂”和“过度设计”
有时,我认为有些工程师不会考虑其他人的代码。
因此,在创建一个模块的时候,你可以利用在学校学到的所有技术,将所有面向对象的概念都融合到一起,然而他们认为这种代码属于过度设计。
就个人而言,我认为他们只是不愿认真思考别人出色的工作。
花点时间理解对象A继承了对象B,而B调用函数C,而C又调用函数D,有时选项F或G会从配置文件E中获取信息,而E会通过函数F解析来自数据库G的数据,然后将日志存储在Hadoop,CouchDB和S3中,这很难吗?
他们会抱怨说,这些代码太优雅或过度设计。保留精心设计的代码,易于维护的生产环境,这些不过是掩盖他们懒惰的托辞。他们只想让年轻的工程师编写过于简单的代码。
虽然,简单的代码方便阅读和理解。但作为工程师,我们面对的不仅仅是简单的工作,我们需要面对复杂的问题,创建复杂的解决方案。
他们永远在追逐未来
我只知道目前使用过的几个框架,而且我只需要知道这几个框架。
然而,经验过剩的工程师花了大把时间学习新的框架和语言,或者新的设计原则。
这一切似乎都在浪费时间。作为一名工程师,在大学毕业后你就应该掌握所有的技术,之后的技术都不重要。有些人甚至还在leet code上做练习和学习,好像他们要去参加面试一样。软件工程师又不需要担心失业。
难道不是每个人都会在大学学习编程语言吗?
写在最后
经验过剩的工程师阻碍了整个社会的发展。
他们通过坚持重构代码、追求设计文档并不断的学习,不断推进软件的进步。如果没有经验过剩的工程师,如今的世界肯定已经发明了飞行汽车,还有智力超越人类的机器人。然而,如今我们还在坚持使用280个字符的推文,还不断被亚马逊的广告骚扰——自从上周从网上购买了一个马桶盖以后,这些广告就一直在向我推销同类的马桶盖。
原文:https://medium.com/better-programming/top-signs-of-an-over-experienced-programmer-22bbe0b57663
本文为 CSDN 翻译,转载请注明来源出处。
90%的程序员学Python这么认为:
https://edu.csdn.net/topic/python115?utm_source=csdn_bw
【END】
热 文 推 荐
☞物联网终端五年后将超 270 亿!破竹之势下程序员如何修炼内功?
☞华为将发布鲲鹏 920 芯片数据;三星 S10 自燃;Mageia 7 正式发布 | 极客头条
☞不要让开源成为贸易战的牺牲品!
程序员们如何破局 5G?
软件为什么会沦为遗留系统?
因为有了 TA,搞定行业应用开发,不怕不怕啦!
除了V神,17个以太坊大会讲师的演讲精华都在这儿了!
☞2019年技术盘点容器篇(二):听腾讯云讲讲踏入成熟期的容器技术 | 程序员硬核评测
50行Python代码,获取公众号全部文章
不写一行代码,也能玩转Kaggle竞赛?
☞马云曾经偶像,终于把阿里留下的1400亿败光了!
点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。
你点的每个“在看”,我都认真当成了喜欢
拒绝经验过剩,“程序员的工作只能是代码”?相关推荐
- 别以为程序员的工作就是写代码
大家好,我是鱼皮,今天给大家分享一个开发小经验. 很多没有实际工作过的同学,可能都会认为程序员的工作只有写代码 + 和产品经理 "拉扯",也会习惯性地用代码量来评价一个程序员的工作 ...
- 计算机本科毕业后还需要参加培训吗?我来聊聊java程序员找工作的经验
很多人在学习完计算机专业后,会发现在找到满意的工作时,还需要参加培训班并花费大量的时间和金钱,这让他们倍感不解.为什么在学习了四年的计算机专业之后,还需要参加培训班呢?难道这四年的时间和精力白费了吗? ...
- 面试感悟-------一名3年工作经验的程序员应该具备的技能
转载: 面试感悟-------一名3年工作经验的程序员应该具备的技能 前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章.这篇文章大部分内容都是面向整个程序员群体的,当 ...
- 新手Java程序员找工作更看重Java项目经验?
动力节点IT培训,全真项目实操实训,贯穿八大行业,彻底帮助学员摆脱纸上谈兵的尴尬,一技成,天下行. 新手Java程序员找工作更看重Java项目经验?这个问题,想必是很多学Java的朋友也特别好奇的地方 ...
- c#窗体编辑个人简历_3年工作经验.net程序员简历应该怎么写
.net程序员个人简历范文一 工作经历:河北零风软件有限公司 时间:2015-2018 岗位:程序员.net 工作描述:我任职河北零风软件有限公司技术部门,该部门后台系统主要由API模块,APP后台模 ...
- 3年半工作经验女程序员,聊聊程序员的薪水、工作内容和发展前景
我先简单说一下我的职业经历,我是有3年半工作经验的程序员,主要负责企业办公网站的开发工作.大家一提到程序员,第一印象应该就是高薪,但是除了高薪以外,对这个职业的了解就不够了.为了回应粉丝的要求,接下来 ...
- 亲身经历,大龄程序员找工作,为什么这么难...
背景 临近年底,公司还在招人,可筛选的人才真是越来越少,这可能是因为大家都在等年终奖吧.于是在简历筛选时,将学历和年龄都适当的放松了.正因为如此,面试了不少大龄的程序员. 网络上一直有讨论大龄程序员找 ...
- Java程序员找工作很难吗?可能没有get这些内容
Java程序员找工作很难吗?可能没有get这些内容 五分钟阅读下方文章 经常面试一些候选人,整理了下我面试使用的题目,陆陆续续整理出来的题目很多,所以每次会抽一部分来问.答案会在后面的文章中逐渐发布出 ...
- 零架构项目经验的程序员,如何升级成架构师
先说目前关于架构师的一些是实际情况. 1 要成为Java架构师,单纯靠学知识一定不行,得靠在项目里积累经验. 2 如何判断程序员是否已经成为java架构师?不是看程序员掌握的技能,更不是看程序员干的活 ...
最新文章
- mutations vuex 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...
- python ssh模块有哪些_Python paramiko模块(实现ssh)
- 同一肢体不同关节的运动想象过程中的多通道脑电图记录
- python3 函数签名简介 验证函数参数
- SHGetFileInfo函数详解
- 004-流程控制和类型转换
- boost::hana::just用法的测试程序
- Javascript跨域问题总结
- ros中使用boost::thread多线程boost::bind绑定参数,多线程发送topic
- 华为认证网络工程师系列教程-HCNA
- 系统日志查看journalctl命令详解
- PENCIL 决策建模器
- 如何用公式编辑器编辑直角三角形符号
- [音乐推荐]水木年华 - 借我一生
- 1114:【白细胞计数】
- javaweb+移动端 富文本
- pa皮安级电流检测电路
- 「hdu6608」Fansblog【Miller_Rabin+威尔逊定理】
- smi时序_详解芯片组上电时序.ppt
- 计算机仿真三个基本活动,计算机仿真-Read.ppt
热门文章
- GARFIELD@04-13-2005
- Python机器学习数据预处理:读取txt数据文件并切分为训练和测试数据集
- Ambari--告警管理
- 矩池云安装gdal五种解决方案
- mac安装gcc10
- 剑指offer之使数组的奇数在偶数前面
- 2021-2025年中国电动陶瓷球阀行业市场供需与战略研究报告
- 华为搭载鸿蒙2.0系统的手机,华为官方:鸿蒙系统2.0上线,手机能否搭载鸿蒙操作系统?...
- 精心总结了10个matplotlib绘图技巧,短小精悍,威力无穷!
- SpringCloud 实战:禁止直接访问后端服务