当前位置:网站首页>恕我直言:程序员大部分时间不是在写代码,而是。。。
恕我直言:程序员大部分时间不是在写代码,而是。。。
2022-06-09 16:07:00 【Hollis Chuang】
Hollis的新书限时折扣中,一本深入讲解Java基础的干货笔记!
作者 | feenk 整理 | 梦依丹
出品 | CSDN(ID:CSDNnews)
面对冷冰冰的机器、代码、工具,程序员的首要工作是知其然并知其所以然,方能入手去敲打出美妙的代码。
近日,一篇《Developers spend most of their time figuring the system out》的文章在HacekerNews上引起了不少开发者的共鸣,作者表示,程序员大部分时间都在摸索系统之上,而非构建系统。
对于这一话题,最早可追溯到1979年Zelkowitz、Shaw和Gannon出版的《软件工程和设计原理》一书,书中描述到,程序员把大部分的时间(67%)都花在了开发维护上。

诚然,这本书并没有告知这一数字的背后,那么在40年后的今天,又是怎样的情形呢?
在CSDN举办的2022开发者生态汇上,知名程序员,MegaEase CEO 左耳朵耗子(陈皓)在演讲中提到,在国内没有一家软件公司有升级部门,经常是老到20年的系统依然在使用。可想而知,对于这样的系统,程序员入职的第一件事或许就是弄清楚这些老“玩意”后进行着修修补补的工作。
对此,原文作者提到,论文《Measuring Program Comprehension: A Large-Scale Field Study with Professionals》中指出了程序员在一个项目上的时间分配,其中约58%的时间来理解系统,并阐述这一数字是如何得来的。

即使在40年后的今天,花在摸索系统上的时间并没有变少。尽管这是一个非常大的项目成本,但人们在日常更多的是讨论如何构建系统,而不是如何弄清楚一个系统。
开发者是如何搞清楚系统的呢?开发者更多是通过阅读代码来摸清系统的架构与分支,这一结论也在论文《Measuring Program Comprehension》得到了验证。
那有没有什么其它更高效的方式呢?程序员为什么要阅读源码呢?其实对于程序员来说,如果只知其然而不知所以然,是很难进行下一步的代码搭建,因此摸清系统,最主要的是为了做出更好的编程决策。

阅读只是从数据中收集信息的一种手段,也恰好可能是最手动的方式,这就为优化提供了重要的机会。最新面试题整理好了,大家可以在Java面试库小程序在线刷题。
在做一件重要的事情之前,人们往往会进行命名,否则就会像伏地魔一样。在多年以前,把弄清楚系统然后再做下一步称之为评估,并且还提出应该围绕评估来优化开发。

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

软件不是一座孤岛,而是由无数关联项组成,因此人们无法预测具体的问题,但可以预测出问题类别。树立可塑开发思想,在摸清问题之后,构建自定义工具流程,从而快速处理上下文中的重要内容。在未来十年,人们无需通过阅读源码来衡量是否“弄清了系统”,取代它的应该是解决实际的问题。
针对这个话题,HackerNews不少人都提到了结对编程,一位gleenn网友则提出了结对编程模式:人们往往会避免或者纠结结对编程,认为结对编程所花费的时间和成本是非结对的2倍,这完全是错误的理解。
当他在一个每天轮流做结对编程的地方工作时,在一个熟悉系统并能即时回答你提出的问题人面前写代码,一个新开发者的效率可以一飞冲天,比一个人做要快速好几百万倍。
ID为kayodelycaon的用户表示,在一个100%进行结对编程的地方工作,意味着无法结对的人就会被过滤,而能否进行结对编程,与当事人的方方面面都有着关系,比如自己有多动症、短期记忆方面的问题等。但自己却能编写出非常好的代码,会考虑代码的可读性、算法复杂性、副作用、可测试性等多个小细节。
原文链接:https://lepiter.io/feenk/developers-spend-most-of-their-time-figuri-9q25taswlbzjc5rsufndeu0py/
完
我的新书《深入理解Java核心技术》已经上市了,上市后一直蝉联京东畅销榜中,目前正在6折优惠中,想要入手的朋友千万不要错过哦~长按二维码即可购买~

长按扫码享受6折优惠
往期推荐“因一条 Linux sudo 命令,我的 Twitter 账号被封了!”
如果你喜欢本文,
请长按二维码,关注 Hollis.

转发至朋友圈,是对我最大的支持。
点个 在看
喜欢是一种感觉
在看是一种支持
边栏推荐
- Laravel8框架七牛雲上傳
- Is it safe to open a new bond? How to open an account
- The end of an era! Wu Enda's classic machine learning course was closed this month however
- PHP common date related functions
- 国泰君安开户安全吗
- How to learn mind map efficiently
- 还在从零开始搭建项目?这款升级版快速开发脚手架值得一试~
- 如何解决WordPress开启CDN后评论IP不正确的方法
- Install MySQL 5.7 server under windows (full of holes)
- leetcode:240. Search 2D matrix II
猜你喜欢

Ffmpeg mind map

Analysis of folder Writeability during SAP commerce cloud construction

leetcode:189.轮转数组

浏览器指纹解读

Without regret, appium automation environment is built perfectly

Usage of dac8560

Win10找不到飞行模式开关怎么办?

Interface test series -- practical application of autodiff traffic playback in integration test

疫情之下,四点认知助你成长!

Openwrt firewall
随机推荐
EasyWeChat实现微信真实支付操作
还在从零开始搭建项目?这款升级版快速开发脚手架值得一试~
Test must see, key points of writing test cases for the first time
R language ggplot2 visualization: using stat_ The summary function adds the number of samples to the results of the ggplot2 visual image (stat_summary to annotate plot sample number)
软件测试面试必问的10个问题
Without regret, appium automation environment is built perfectly
virtualBox 虚拟机网卡设置
C语言去掉字符串末尾的空白字符
Attack and defense world (WEB) --web_ php_ include
cesium 绘制栅栏
华为云 | 企业数字化转型,安全要先行
An openSUSE as a daily work system
QueryList异步抓取网页数据
R language plot visualization: use the plot visualization model to create a grid by using the classification contour line (contour line) of the entire data space and meshgrid, where the distance betwe
Why can't Google search page infinite?
Installing redis and PHP redis extensions under Windows
浏览器指纹解读
C language removes white space at the end of string
Easywechat realizes wechat real payment operation
Jpex launches bayc mayc contract series welcome experience


