2.3 如何理解 PSP 收集的数据所反映的学生与职业程序员的区别?

GreyZeng 2021-08-07 15:59:51

原文地址
问题出自构建之法,第三版,P36页

显然从学生到职业程序员,并不是更加没完没了地写程序——花在写代码的时间反而少了很多

作者使用编码时间的对比得出此结论,但笔者认为此结论以偏概全。

假定图2-3中学生和工程师最后都完成了一份很好的个人项目作业。

学生写代码的时间是36%,工程师写代码花费的时间是21%。学生写代码花费的时间确实比工程师多,但笔者认为需要考虑的学生和工程师的代码能力和水平。工程师写代码花费的时间少,一部分原因是工程师在进行需求分析和具体设计时花费的时间比较多,使得代码写起来更加容易和顺畅,但另一部分也不可否认,即便在同样的需求分析和具体设计下,工程师和学生完成同样的编码,工程师花费的时间大概率会比学生花费的时间少,二者的代码能力和水平的差距还是存在的。那代码能力是从哪里来的?笔者认为是从学生到职业程序员这个过程中通过没完没了的写代码锻炼而来的。当然如果学生在这个过程中只是没完没了的写代码那么肯定是无法成为职业程序员的,但写代码是一个必备的过程。

此外,在图2-3可以看到工程师在测试(自测、修改代码、提交修改)这部分花费的时间是学生的1.6倍。为什么工程师花费的时间如此之多?显然是有工程师重视测试的原因,来保证程序的正确性和安全性,但考虑到工程师在编码时花费的时间很少,那么工程师在测试时所出现的Bug是否会比大学生的Bug更多,从而导致在测试方面花费的时间更多?

...全文
592 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
GreyZeng 2023-02-20
  • 打赏
  • 举报
回复

身为学生,描述一下自身视角对编程的一些不同看法,职业程序员是把编程当成工作,自然的编程会以业务为主,缺少一些创造力,同时整个项目的流程也会完善且清晰很多,如开发前的需求分析,开发后的测试等。学生的话,编程是自己的作业,是未来的吃饭工具,可能会去尝试一些不拘泥于作业的方向,在编程的细节及基本功力方面会相差很多。

原文地址:https://bbs.csdn.net/topics/613459351

GreyZeng 2023-02-07
  • 打赏
  • 举报
回复

根据书中第35,36页给出的大四学生和软件工程师的对比数据我们可以得出,工程师在‘需求分析’和‘测试’两方面花费更多的时间。而在具体编码上,工程师比学生少了1/3的时间。显然,软件工程师拥有更多的知识和项目经验,所以在编码上时间花费更少,而更加关注项目的需求和测试,以满足客户的需求和提供良好的用户感受。同时,对需求的充分理解,也能一定程度加快编码速度。
原文地址:https://bbs.csdn.net/topics/613012484

GreyZeng 2023-02-07
  • 打赏
  • 举报
回复

A2:从书中学生和职业程序员的PSP数据对比可以看出,学生大部分时间是花在编码阶段,而测试和需求分析所用时间较少;而职业程序员则在编程中耗时较少,测试和需求分析等方面会花更多时间。毕竟二者的任务要求不一样,学生面对的作业需求基本是固定的,缺乏敏捷性,而实际工作中为满足用户的需求,需要从用户出发,就要注重使用体验。而这些方面也是我在以前学习的过程中没有太多注意到的。
原文地址:https://bbs.csdn.net/topics/613013703

GreyZeng 2022-10-07
  • 打赏
  • 举报
回复

查阅资料,了解到PSP模型主要由时间,计划,进度,规模,缺陷和质量六种元素构成的金字塔模型,自底向上可分为三个等级:时间管理层、计划管理层和质量评估层。

对于书中得出从学生到职业程序员,并不是更加没完没了地写程序——花在写代码的时间反而少了许多。我个人认为职业程序员花在代码的时间并没有少了许多,而是因为随着知识的积累和不断地敲代码,编程能力相较于本科有了巨大的提升,在实现各种需求时能更轻松地完成并减少bug的发生,应该说效率提高了不少。

原文地址

GreyZeng 2022-09-20
  • 打赏
  • 举报
回复

学生:有足够的时间从0开始一步一步很踏实的把技术学好。
职业程序员:在工作中几乎没有足够的时间让你从0开始,一步一步学习某一门技术。

GreyZeng 2021-08-07
  • 打赏
  • 举报
回复

以前我的观点是:职业程序员的代码时间少,但测试时间多,可能是由于编码质量的不足导致测试期间的bug更多,测试时间延长。但经历了两个阶段的迭代开发之后,我对学生和职业程序员之间的差距有了更为清晰的了解。在整个开发过程中,就亲身体会而言,需求分析、测试等方面要远比写代码实现这一过程更加重要,清晰的功能定义,良好的代码规范,完整且有效的测试是写程序的基础条件,如果前期没有进行充分准备,那么写程序实现时就会很低效:不得不花费更多的时间对功能进行更加清晰的定义,不得不对代码进行反复重构,不得不做出很多无用功和无意义的事情。

关于职业程序员的测试时间多的表现,在Alpha和Beta的测试阶段我都深有体会:测试很难面面俱到 。每一种情况都考虑到,每一个细节都进行测试,每一个小功能都进行全面的测试,在真正的测试中需要花费很多时间和精力。测试是软件发布前的必须工作,否则若有一个功能性bug,可能会造成很差的用户体验和其他不可磨灭的影响。
原文地址

605

社区成员

发帖
与我相关
我的任务
社区描述
程序员。写过:移山之道,编程之美,构建之法,智能之门。
软件工程软件构建团队开发 企业社区 北京·朝阳区
社区管理员
  • SoftwareTeacher
  • GreyZeng
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧