程序员大部分时间都在“熟悉系统”
阿程编辑 2022-05-13 15:29 星期五 37

作者 | feenk

整理 | 梦依丹

出品 | CSDN(ID:CSDNnews)

面对冷冰冰的机器、代码、工具,程序员的首要工作是知其然并知其所以然,方能入手去敲打出美妙的代码。

近日,一篇《Developers spend most of their time figuring the system out》的文章在HacekerNews上引起了不少开发者的共鸣,作者表示,程序员大部分时间都在摸索系统之上,而非构建系统。

对于这一话题,最早可追溯到1979年Zelkowitz、Shaw和Gannon出版的《软件工程和设计原理》一书,书中描述到,程序员把大部分的时间(67%)都花在了开发维护上。

ee211328bcfb42bd1cf8e611dc196983.png

图1 截图自《软件工程和设计原理》一书

诚然,这本书并没有告知这一数字的背后,那么在40年后的今天,又是怎样的情形呢?

在CSDN举办的2022开发者生态汇上,知名程序员,MegaEase CEO 左耳朵耗子(陈皓)在演讲中提到,在国内没有一家软件公司有升级部门,经常是老到20年的系统依然在使用。可想而知,对于这样的系统,程序员入职的第一件事或许就是弄清楚这些老“玩意”后进行着修修补补地工作。

对此,原文作者提到,论文《Measuring Program Comprehension: A Large-Scale Field Study with Professionals》中指出了程序员在一个项目上的时间分配,其中约58%的时间来理解系统,并阐述这一数字是如何得来的。

3da1731351f54831fefe9827d1a83f7a.png

图2

即使在40年后的今天,花在摸索系统上的时间并没有变少。尽管这是一个非常大的项目成本,但人们在日常更多地是讨论如何构建系统,而不是如何弄清楚一个系统。

开发者是如何搞清楚系统的呢?开发者更多是通过阅读代码来摸清系统的架构与分支,这一结论也在论文《Measuring Program Comprehension》得到了验证。

那有没有什么其它更高效的方式呢?程序员为什么要阅读源码呢?其实对于程序员来说,如果只知其然而不知所以然,是很难进行下一步的代码搭建,因此摸清系统,最主要的是为了做出更好地编程决策。

14c42de0c717cdbba47f07102a5dbd3c.png

图3 决策时间

阅读只是从数据中收集信息的一种手段,也恰好可能是最手动的方式,这就为优化提供了重要的机会。

在做一件重要的事情之前,人们往往会进行命名,否则就会像伏地魔一样。在多年以前,把弄清楚系统然后再做下一步称之为评估,并且还提出应该围绕评估来优化开发。

6226007a97ec7dd65984ccbdbcdea075.png

图4 评估是对系统进行全面了解的过程,从而支撑做出决策

通过阅读来提取数据是最机械的一种方式,无法规模化,还会带来信息不完整和不确定性。在还未摸清系统全貌之前,决策不应该建立在信念的基础之上。数据科学告诉我们,应该以问题为导向去匹配相应地工具进行推理。

379a3969130bdb64631659f6880f6c52.png

图5 工具应与背景相匹配

软件不是一座孤岛,而是由无数关联项组成,因此人们无法预测具体的问题,但可以预测出问题类别。树立可塑开发思想,在摸清问题之后,构建自定义工具流程,从而快速处理上下文中的重要内容。在未来十年,人们无需通过阅读源码来衡量是否“弄清了系统”,取代它的应该是解决实际的问题。

针对这个话题,HackerNews不少人都提到了结对编程,一位gleenn网友则提出了结对编程模式:人们往往会避免或者纠结结对编程,认为结对编程所花费的时间和成本是非结对的2倍,这完全是错误的理解。当他在一个每天轮流做结对编程的地方工作时,在一个熟悉系统并能即时回答你提出的问题人面前写代码,一个新开发者的效率可以一飞冲天,比一个人做要快速好几百万倍。

ID为kayodelycaon的用户表示,在一个100%进行结对编程的地方工作,意味着无法结对的人就会被过滤,而能否进行结对编程,与当事人的方方面面都有着关系,比如自己有多动症、短期记忆方面的问题等。但自己却能编写出非常好的代码,会考虑代码的可读性、算法复杂性、副作用、可测试性等多个小细节。

谁在招聘
巨杉数据库作为新一代国产分布式数据库的先行者,成立十年以来,坚持自研道路,深耕数据沃土,广泛服务于金融、互联网、电力、能源、电信等领域超过1000家客户。巨杉数据库具有天然的工程师基因,搭建高成长力的平台,成就每一位追逐梦想的年轻人。欢迎你加入巨杉,拥抱属于你的未来。 巨杉数据库秉承深耕数据沃土,提升数据价值的使命,我们坚持”以奋斗者为本”,致力于成为全球数据库行业的领导者,加入巨杉,用数据连接全球万物,用数据改变世界。此刻,我们正在寻找立志用代码及数据改变世界的你,期待在数据的海洋与你一同乘风破浪!
北京涛思数据科技有限公司(陶氏数据)瞄准日益增长的物联网数据市场,专注时序空间大数据的存储、查询、分析和计算,不依赖任何开源或第三方软件,开发了拥有自主知识产权、100%自主可控的高性能、分布式、支持断续器的时序数据库TDengine。它可广泛运用于物联网、车联网、工业互联网、IT运维等领域。公司已经申请多项技术发明专利,且全部提交断续器专利申请。
顺丰科技致力于构建数字时代的智慧供应链生态,成为智慧供应链的领导者。顺丰将多元业务中沉淀的海量数据行 业解决方案经验,结合领先的智能化、数字化物流技术应用,推动供应链技术创新、助力各行业客户打造高效响应的现代化供应链体系。目前投入的研发人员6,271人,已获得及申报中的专利3,864项,软件著作权2,058个,其中明专利数量占专利总量的61.5%;同时获得中国国际大数据产业博览先科技成果优秀项目"、"邮政行业技术奖"、"中智慧物流十大创新引领企"等荣誉奖项。
中国擎天软件成立于1998年,总部位于南京市江北新区CBD核心区,2013年成功在香港主板上市[中国擎天软件,01297]。 擎天深耕政务大数据领域二十余年,深度涉及市域社会治理、生态智慧城市、城市应急体系及公共安全等领域。同时擎天在相关行业互联网有着广泛的服务客户,尤其在企业财税大数据、工业互联网及供应链金融平台等方面有着独树一帜的核心服务能力。擎天致力于为政企客户提供全方位的信息化解决方案,多项产品和解决方案入选国家工信部试点示范。
浩鲸云计算科技股份有限公司(简称“浩鲸科技”)是一家数字化技术和服务的提供商,致力于帮助全球企业客户实现向数字经济的跨越。公司成立于2003年,迄今已为全球80多个国家和地区的电信运营商、公共服务部门及其他行业客户提供优质的数字化转型解决方案和产品服务。 浩鲸科技一方面加强在云计算、数据、智能方面的技术积累,发挥自身在复杂场景下系统构建的经验优势,另一方面充分汲取互联网领域技术和业务创新的思维逻辑,为数字化转型提供先进的方法论、工具及行业经验,降低数字化技术的使用门槛,助力企业数字化转型进程。
北银金融科技有限责任公司根植于北京银行,是一家致力于大数据、人工智能、云计算、区块链、物联网等新技术创新与金融科技应用的科技企业,公司充分发挥北京银行企业文化和技术积淀先天优势,通过对技术、场景、生态的完美融合,输出科技创新产品和技术服务。
头条
一直以来,“低调”、“谦虚”这类形容词似乎与苹果毫无关系:“iPhone 11 系列史上最强”、“与安卓相比, […]
新一轮的暗流涌动似乎正在腾讯内部上演。 4 月 7 日,腾讯年度报告的发布,引发了不少网友的关注。这份报告披露 […]
引 言 随着 Kubernetes 越来越成熟,使用者越来越多,大数据应用上云的需求也越来越迫切。原有的大数据 […]
2016 年,刘强东曾在央视的《对话》栏目中,说过一句话:“如果不能控制京东,我宁愿把它卖掉!” 不同于当年的 […]
4 月 5 日,Intel 于官网发布了一则《Intel Suspends Operations in Rus […]
近来,“监控员工离职倾向”、“统计无关工作的上网时间”等一系列词条频繁出现,令无数打工人大呼“隐私边界到底在哪 […]
从燃油版到新能源到自动驾驶,汽车行业迎来快速发展期。然而面对全新的数字化赛道,汽车制造商打破传统枷锁的契机何在 […]
无人驾驶技术的“美梦”始于20世纪80年代: 1986年,卡耐基梅隆大学打造了自动驾驶火车NavLab。 20 […]