当前位置: 首页 > 后端技术 > Java

程序员大部分时间不写代码,但是,..

时间:2023-04-01 15:30:43 Java

作者|芬克安排|孟一丹 \制作|CSDN(ID:CSDNnews)面对冷冰冰的机器、代码、工具,程序员的首要工作就是知其然,知其所以然,才能开始围棋敲出漂亮的代码。近日,《Developers spend most of their time figuring the system out》的一篇文章在HacekerNews上引起了众多开发者的共鸣。作者说,程序员大部分时间都在探索系统,而不是构建系统。对于这个话题,可以追溯到1979年Zelkowitz、Shaw和Gannon出版的《软件工程和设计原理》一书。书中描述了程序员将大部分时间(67%)花在了开发和维护上。诚然,这本书并没有说出这个数字的背景,那么40年后的今天是什么情况呢?在CSDN举办的2022开发者生态大会上,知名程序员、MegaEaseCEO左耳鼠(陈昊)在演讲中提到,国内没有一家软件公司有升级部门,往往是20的系统岁还在体制内。使用。可以想象,对于这样的系统,程序员入职后做的第一件事可能就是搞清楚这些老“东西”,然后进行鼓捣工作。对此,原作者提到论文《Measuring Program Comprehension: A Large-Scale Field Study with Professionals》指出了程序员在一个项目上的时间分配,大约有58%的时间花在理解系统上,并解释了这个数字是如何得到的。即使在40年后的今天,花在摸索系统上的时间也没有减少。虽然这是一个非常大的项目成本,但人们在日常工作中谈论的更多的是如何构建一个系统,而不是如何弄清楚一个系统。开发人员是如何设计出这个系统的?开发人员大多通过阅读代码来了解系统的架构和分支。这个结论在论文《Measuring Program Comprehension》中也得到了验证。还有其他更有效的方法吗?为什么程序员要阅读源代码?其实对于程序员来说,如果只知道是什么,不知道为什么,是很难进行下一步的代码构建的。因此,了解系统最重要的是做出更好的编程决策。阅读只是从数据中收集信息的一种方式,而且恰好可能是最手动的方式,这提供了重要的优化机会。人们倾向于在做重要事情之前给事物命名,否则他们就像伏地魔一样。很多年前搞清楚系统再做下一步叫评估,也有人提出要围绕评估优化开发。通过读取提取数据是最机械的方式,无法缩放,会带来不完整的信息和不确定性。在了解系统的全貌之前,不应基于信念做出决定。数据科学告诉我们,要以问题为导向,匹配相应的工具进行推理。软件不是一座孤岛,而是由无数相互关联的项目组成,因此无法预测具体的问题,但可以预测问题的类别。树立可塑的开发思路,弄清问题后,构建自定义工具流程,快速处理上下文中的重要内容。未来十年,人们将不再需要阅读源代码来衡量自己是否“搞清楚了系统”。相反,它应该通过解决实际问题来解决。针对这个话题,HackerNews上很多人都提到了结对编程,一位gleenn网友提出了结对编程模型:人们倾向于避免或纠结于结对编程,认为结对编程的时间和成本是非结对编程的两倍编程。完全错误的理解。当他在一个每天轮流做结对编程的地方工作,在熟悉系统的人面前写代码,可以实时回答你的问题,一个新开发者的效率会直线上升,比一个人做要快得多万次。一位ID为kayodelycaon的用户表示,在100%进行结对编程的地方工作,意味着不会结对的人会被过滤掉,而能否结对编程则关系到各方的方方面面,比如多动症、多动症、short-termMemoryproblemsetc.但是我自己可以写出非常好的代码,我会考虑很多小的细节,比如代码的可读性,算法的复杂度,副作用,可测试性。