写了 15 年代码,总结出提升 10 倍效率的三件事


译者:roy

【译者注】本文作者 Matt Watson 已经写了超过 15 年的代码,也由此总结出了提升 10 倍效率的三件事。Matt 表示,一个 10 倍效率的开发人员很快就知道了他们需要做什么,要问什么问题,什么时候不问问题,并且是掌握事件优先级别的高手。以下为译文:


几乎每个软件开发人员或程序员都见过其他人编写的代码,说明了“任何人都可以编码”。但你有没有遇到过所谓的神话般的“10倍效率的开发人员”?作为一个10倍效率的开发人员,在编写代码方面做得很少, 更多的是知道要写什么代码。


我们许多人开始编程的时候都有特定的目的。比如,我开始编程的时候,是让我能在睡觉和在学校的时候自动玩那个文字版的MUD游戏。我那时候是个写脚本的13岁小孩,甚至不知道什么是编程。我可能有一个想法,然后就写代码并测试 – 全部靠我自己。


当我们为其他人开发软件时就变得很困难,因为我们常常缺乏相同类型的动机和兴奋感,而它们驱使我们追求自己的愿望。我们没有自己的想法,而是花几个小时在会议中尝试了解这些想法,然后我们大部分时间都在修改别人的代码 – 或者提交自己的代码。这导致一定程度的隔阂,进而降低了生产率。

要成为一名10倍效率的开发人员,你必须学会在这种环境中脱颖而出,甚至创立自己的公司来领导这项工作。


任何人都可以是一个10倍效率的开发人员,至少在每一天的某个时刻。我相信所有开发人员都应该专注于提高生产力和团队合作的三件事。


三件事


要成为一名10倍效率的开发人员,你需要几年的工作经验,无论使用哪种编程语言和工具集。你必须善于解决问题和编写代码;这是必须的。


重要的是你要明白,如何编写代码并不能让你成为10倍效率的开发人员,10倍效率的工程师,10倍效率的程序员,或其他任何你想要的名字。


你知道5W:“谁(Who),什么(What),在哪里(Where),为什么(Why),什么时候(When)”。虽然这些都适用于软件开发,我想关注那三个定义了10倍效率的开发人员的特点。这三项把普通开发人员与10倍效率的开发人员区别开来:


是什么(What)

为什么(Why)

什么时候(When)

知道做什么


在企业界,开发人员经常从事他们不太感兴趣和不理解的项目。对于大多数开发人员来说,这不是一个大问题,只要他们收到了很好的指令,并且也得到了明确的输出定义。


问题是开发人员通常没有得到足够的指令。相反,我们使用一种叫做 “敏捷开发” 的东西。我们收到一个记事帖,上面有几个字,并指望我们知道到底需要做什么。


软件开发就是沟通。开发人员需要知道我们在做什么,我们试图解决什么问题,以及到底需要什么样的结果。我们知道的越多,就可以更快的完成。最重要的是,知道工作的目的和什么会使工作成功是很关键的。


水平差的开发者会在一个项目的错误方向上花几个小时而不问任何问题。他们就是我所说的 负10倍效率的开发人员,因为他们一事无成,浪费了所有同事的时间。几乎每个人都遇到过这些开发人员,与他们一起工作会让人感到沮丧。你一定要小心,不要养成他们的习惯!


有些开发人员即使没有很多细节也能很好地工作。他们有大量的创造力,并提出正确的问题。这些独角兽可能是10倍效率的开发人员。他们知道如何解决问题,并经常提升整个团队的水平。


最重要的是,10倍效率的开发人员真的很擅长快速地确定需要完成什么和问什么问题。


理解为什么

也许软件开发的最大障碍就是理解为什么。如果你不明白你要解决的问题,那就很难解决了。


为什么我在睡觉和上学的时候把几个终端脚本放在一起玩MUD游戏?当然是我想在比赛中达到最高级别。我清楚地知道为什么,我尽我所能来实现目标。


同样的方法也适用于任何软件开发项目。了解他们所在的垂直行业和他们试图解决的问题将会使开发人员更有效率。了解为什么和理解垂直行业也有助于防止不必要的工作,腾出时间专注于那些会使产品或功能对用户更有价值的事情。


问题是知道为什么还不够。作为一个真正的10倍效率的开发人员,你必须对这个问题有热情,并从里到外地了解它。我相信,大多数10倍效率的开发人员本质上也是产品人,具有良好的产品愿景。


知道什么时候做什么


时间对于软件开发项目非常重要。确定项目任务的处理顺序看似容易,但却非常关键。你的工作可以帮助公司获取一个新客户或者或清理掉旧的技术债务?


作为开发团队,我们必须不断地选择我们要做什么和什么时候做。


所有软件开发工作项目都属于以下三类:


我们必须做的事情

我们需要做的事情

我们想要做的事情


我们必须为客户完成新功能。我们需要修复软件中的 bug。我们想减少些技术债务或开发一些酷的新产品功能。这些都需要平衡取舍。


我们应该同时开展所有三个维度的工作项目。我们不能把所有的时间都花在技术债务上,但也许我们应该花一小部分时间在这上面。


开发人员还必须知道何时在其代码中构建复杂的体系结构。我宁愿保持代码尽可能简单,直到不添加架构就会死的时候我才会添加架构。


开发者也必须知道什么时候避免追逐时髦的东西。他们倾向于使用新的工具和技术,但是这些东西可能只会减慢一个项目,而不是更快地完成它。


10倍效率的开发人员擅长于优先级排序,并了解何时将时间投入到架构中,而不是使用一坨意大利面条般的代码来实现某种工作。请记住,你的用户并不关心你的软件是如何工作的,也不管该架构有多花哨。他们只想它能解决问题。10倍效率的开发人员理解这一点。


掌握是什么(What),为什么(Why),什么时候(When)成为10倍效率的开发人员


现在让我们来谈谈成为10倍效率的开发人员的重要技能:掌握是什么(What),为什么(Why),什么时候(When)。


从为什么(Why)开始


成为10倍效率的开发人员的第一步是对你要解决的软件和问题变得充满热情。你需要从里到外完全理解它。这首先是要对你工作的公司及其使命充满激情。


不要因为别人告诉你要写一个按钮(button),然后你就只写一个按钮。努力在更高层次上去理解为什么(Why)。如果你持续关注为什么,你对你的团队和公司会有更大的价值。


做一个好的开发者和优秀的问题解决者,而不是最好的程序员


我会把自己描述成一个黑客开发者。我是那种能很快把一些丑陋的代码拼凑起来并解决几乎任何问题的人。我的代码很少是美丽的,但它能解决问题。这才是最重要的。


你不必编写完美的代码与单元测试来成为一个10倍效率的开发人员。你需要知道什么时候要做和什么时候不做这些事情。


一个10倍效率的开发人员擅长解决特定的问题,并通过代码满足业务需求。你能做的最聪明的事情就是在你把项目交给其他人(他们更善于最后敲定一些架构和其他一些细节)之前就知道它能走多远。


什么时候(When)在你的内心,或者不在


知道什么时候要建立一个复杂的架构,而不是拼凑一些东西,需要经验和你蜘蛛侠般的感官。你要么有这种感觉,要么你根本不知道。


我曾与一些最聪明的开发者共事过,他们总是很糟糕的优先考虑模式和架构,而不是功能和排期。他们总是过度实现或者一遍遍重构,争取 “完美的代码”,而不是 “可交付的代码”。


10倍效率的开发人员必须利用他们的经验和本能来知道什么时候要专注于架构和完美,什么时候就是把事情搞定。


知道该做什么(What to Do)和该问什么(What to Ask)


许多软件开发归结于沟通技巧。可惜的是,在我们要工作的项目上许多注释和要求都不是很详细。一个10倍效率的开发人员知道如何阅读这些,应用他们知道的业务里的 “为什么”,并提出相关的问题。


最好的开发者知道在寻求帮助之前要在某件事情上花多少时间。他们也知道要问什么问题,以阐明需求来推进项目。


结论

我已经写了超过15年的代码。可以说我是一个10倍效率的开发人员,或者至少我能。我知道我擅长什么,当我做我擅长的事情时,我可以很快地完成大量的工作。


如果你想做一个新产品的原型,我就是你要找的人。如果你需要寻求Angular,React或其他一些 前端的帮助,我绝对不是你要找的家伙。在这些任务上我将是一个负10倍效率的开发人员。


10倍效率的开发人员不是一个神话。他们确实存在。他们很可能是开发经理、架构师、首席开发人员或公司创始人。如果他们不是的话,他们应该转变。我后来成为了公司的创始人,到现在为止都两次了。


当然,没有人能在每一天的每个时候都是一个10倍效率的开发人员。我们没有精力或专注力每天以这样的速度工作。我们不是机器人。


如果你理解软件开发的 “是什么(What),为什么(Why),什么时候(When)”,你就可以是一个更有效率和更好的团队成员–甚至是一个每天几个小时内的10倍效率的开发人员。这会有很大的不同。


来源:程序人生


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器不知道怎么回事安卓系统很卡,为什么安卓系统很容易变卡?该怎么解决?看完长知识了...

手机是我们现代生活的必备之物,什么都可以没有到就是不能没有手机,如今市面上的手机的手机不是安卓系统就是ios系统,安卓系统的手机虽然便宜但是有一个诟病,那就是安卓的手机会越用越卡,不管你手机配置是多么的高&…

EntityFramework Core自动返回SQL语句

【导读】给各位拜年了,开年第一篇,后续我们介绍EF Core 5.0相关新特性自动返回SQL语句当执行LINQ查询时,EF Core 5.0提供了ToQueryString扩展方法返回生成的SQL语句比如,执行如下LINQ查询var name "jeffcky"; var user…

怎么用ai做出适量插画_怎么用最简单的方法,做出最炫酷的数据可视化图表?...

如果要问数据怎样做才能显得最装逼,那么答案一定只有一个:“数据可视化”!看上去也很炫酷对不对,其实上面的可视化图表其实并不复杂,很多人推荐的Python、R语言、Tableau等专业数据分析工具几乎都能很轻松的实现。但是…

stm32烧不进去程序_STM32的FLASH和SRAM的使用情况分析

点击上方蓝字关注我哦~01前言STM32片上自带FLASH和SRAM,简单讲FLASH用来存储程序的,SRAM是用来存储运行程序中的中间变量。本文详细分析下如何查看程序中FLASH和SRAM的使用情况。本文开发工具: keil5芯片: STM32F105VCT602FLASH和SRAM介绍FLA…

每一个人都应该学习电脑编程,因为它会教你如何思考

扎克伯格11岁开始学习编程,创办Facebook;比尔盖茨13岁学习编程,创办微软……乔布斯说:“每一个人都应该学习电脑编程,因为它会教你如何思考。" 现在在北京上海,顶级的IT工程师,年薪至少是百…

GitHub Actions 支持 skip ci 了

GitHub Actions 支持 "skip ci" 了IntroGitHub Actions 作为 GitHub 官方的 CI 支持,很多开源项目已经在使用 Actions 来做项目的 CI 了,但是一直以来有一个痛点,就是不支持跳过 CI,其他的 CI 大多都可以通过在 commit …

layui上传报错会有哪些原因_一到冬天,为什么会比别人更怕冷?有哪些原因?...

冬天已经正式来到,气温也是越来越低了,早晚的时候就能明显的感觉到寒风凛凛。有很多人到了冬天以后就很怕冷,风一吹过来,就觉得浑身都冰冷。明明已经穿了很多的衣服,还是会觉得很冷,只有在空调、暖气底下&a…

干货|MIT线性代数课程精细笔记[第一课]

1知识概要本节开始,我们一起来学习线性代数的有关知识,首节我们从解方程谈起,学习线性代数的应用之一就是求解复杂方程问题,本节核心之一即为从行图像与列图像的角度解方程。 2方程组的几何解释基础 2.1 二维的行图像 我们首先通…

element 方法返回的boolean被当成字符串了_13个需要知道的方法:使用 JavaScript 来操作 DOM...

作者:Milos Protic 译者:前端小智来源:impressivewebs.DOM 或文档对象模型是 web 页面上所有对象的根。它表示文档的结构,并将页面连接到编程语言。它的结构是一个逻辑树。每个分支结束于一个节点,每个节点包含子节点、…

很遗憾,总对工作挑挑拣拣的家伙,一般结局都不会太好

这是头哥侃码的第233篇原创在过去的五年里,我最怕遇到两件事。一是失眠,一个人半夜醒来,瞬间毫无困意,只能瞪大眼睛望着天花板数羊,等待着黎明的到来。二是每到春节之前,在进行团队年度绩效评估和年终奖发放…

为什么技术与产品沟通起来总是那么痛苦

“如果产品经理过一会又打电话说再买个“面包”。。。那就折腾死程序员了。” 为什么产品与技术沟通起来总是那么痛苦?有时候你觉得很简单的一件事,在程序的世界里很有可能变得纷繁复杂。 编程语言,它终归是一门语言,只是它的使用…

python中双重循环_python中双循环

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 如果你对python中的for循环不是很清楚,请看看这篇文章:for循环控制语句——菜鸟的py…

Dapr 交通流量控制示例

Dapr 已在塔架就位 将发射新一代微服务牛年 dotnet云原生技术趋势Dapr是如何简化微服务的开发和部署前面几篇文章都是从大的方面给大家分享Dapr 能帮助我们解决什么问题,微软从开源到1.0 也是经过2年的时间开发,因此我写了这几篇文章也只能是带领大家对D…

apt-get 更新指定软件_GrandPerspective for mac(磁盘管理软件)

GrandPerspective for mac是一款Mac平台上的磁盘管理软件,GrandPerspective Mac版用图形直观显示磁盘和指定目录使用状况。最占空间的文件/目录一目了然,便于管理你的Mac磁盘空间。GrandPerspective for Mac下载带给大家,欢迎大家前来下载&am…

月薪多少才算80后中的人生赢家?他们的经济、婚姻、生活方式是怎样的

如今,80后已成为职场、家庭、社会的中流砥柱。在这一代人中,现在月薪多少才算跑赢同龄人的“人生赢家”呢? 近期,复旦大学人口与发展政策研究中心、复旦大学社会科学数据研究中心最新发布的“80后的世界——复旦大学长三角社会变迁…

用gis打开tif格式_如何下载SHP矢量格式的等高线

一、什么是等高线?等高线指的是地形图上高程相等的相邻各点所连成的闭合曲线,把地面上海拔高度相同的点连成的闭合曲线,并垂直投影到一个水平面上,并按比例缩绘在图纸上,就得到等高线。等高线也可以看作是不同海拔高度…

5种设置ASP.NET Core应用程序URL的方法

默认情况下,ASP.NET Core应用程序监听以下URL:•http://localhost:5000•https://localhost:5001在这篇文章中,我展示了5种不同的方式来更改您的应用程序监听的URL。•在Program.cs中使用 UseUrls()•环境变量 - 使用DOTNET_URLS或者 ASPNETC…

分布式部署_Apache Spark探秘:三种分布式部署方式比较

【本文详细介绍了Spark的三种部署方式及其比较,欢迎读者朋友们阅读、转发和收藏!】目前Apache Spark支持三种分布式部署方式,分别是 standalone 、 spark on mesos 和 spark on YARN ,其中,第一种类似于MapReduce 1.0所…

备战美赛,这些你应该知道的知识点

国赛刚过完 美赛就接踵而来 只剩下两个多月的时间 不少准备参赛的小伙伴在后台咨询 该如何准备美赛 为了更好地帮助大家进攻美赛 超模君特意邀请到 今年国赛A题Matlab创新奖&一等奖获奖者 方天庆同学 (获奖队伍:黄璐哲、方天庆、帅青) 为…

2020研究生数学建模结果_关于举办2020年全国研究生数学建模大赛的通知

2020年全国研究生数学建模大赛开始啦!各学院: 为在大学生中倡导学习统计、应用统计的良好氛围,适应大数据时代的高校统计和数据科学人才的培养要求,提高研究生的数据挖掘、数据分析、运用计算机处理数据的能力,加强创新…