第三次作业:阅读《构建之法》1-5章
这个作业来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2178
第一章:概论
这一章主要介绍计算机科学的领域,软件工程与计算机科学的关系,软件的特性,软件工程的定义与组成部分
在这一章中,提出了一个理论,软件=程序+软件工程。这让我认识到,软件开发不是单单闭门造车的,除了单单做好程序本身功能之外,他的软件开发活动(构建管理,源代码管理,软件设计,软件测试,项目管理),他的商业模式,甚至UI设计,用户的交互体验,都决定了这个软件是不是一个好软件。书中提到了一个词:职业道德规范,即所谓的行规。那么我不禁有个问题,一个IT行业从业者的职业道德规范是什么,那么细分到IT中的测试,架构师,前端,后端,产品经理等,他的道德规范又有什么不同。 http://www.cnblogs.com/zhuweisky/p/4811408.html,匠心。这个博主给了我一个不错的答复。但是在现行的国内软件行业环境中,996成为常态,大多数心态浮躁,大多数的软件都是换汤不换药,套个模又是一个新游戏。那所谓的匠心怎样保持。希望能得到答复。
以前我一直对于bug的理解有所误解,我认为只要是用户感觉不顺心就叫bug,1.2.4中,说到一个令我茅舍顿开的观点。软件的行为和用户的期望值不一样,就叫BUG。是否是bug,取决于用户,开发者的不同角度。书中提到一个观点,软件工程的重要任务,就是要在时间成本等多种条件约束条件下决定一个软件在什么时候能“足够好”,可以发布。我不禁提出一个疑问,那这个“度”是什么,什么时候才能叫做足够好?它具体是怎样判断的,可否举一个例子。而一个软件什么时候,需要重构?用A语言去重构B语言写的程序是否证明A语言在当前环境下好于B语言?我查阅了很多资料,都没有一个让我明确的答案。
还有一个书中没有提过但我一直想知道的问题,应该是由户主导软件还是软件主导用户,因为大多数用户都不知道自己想要的是什么。
第二章:个人技术和流程
这一章主要介绍单元测试,回归测试,效能分析,个人软件开发流程
在这一章中,2.3引入了PSP这个全新的概念,这在以前的学习中是没有了解过的,以前打代码就图个爽,忽略了很多方面。在表2-3大学生vs工程师中,大学生和工程师设计软件的目的不同,那么两种人各阶段开发所花费的时间不同也理所当然。而本书最让我感觉和其他书不同的就是在文末中加入对PSP的批判,而不是像其他书中这样大力推崇某种方法,“报喜不报忧”。但我有一个问题,表中的数据是2011年的,在日新月异的IT行业已经过去了7年。现在大多数软件都要去争取“风口”留给软件开发者的时间往往不是很多,可能你花费太多时间在分析需求阶段,已经被其他公司抢先了,这是互联网+老师在课上所说的话。那么现在对于一个软件开发时间分配是否应该不同。而选取的工程师平均学位为硕士,我很好奇对于本科,专科的工程师,那么他们的时间分配又不一样?
第三章:软件工程师的成长
评论软件工程师水平的主要方式,技能的反面,TSP对个人的要求,软件工程师的思维误区
本章3.1又引入了一个新的名词:tsp,他对成员有7个方面的要求,(交流,说到做到,接受团队赋予的角色并按角色要求工作,全力投入团队的活动,按照团队流程的要求工作,准备,理性地工作),人是社会性动物,在当今社会中,工作中和人交流是必要的。它给了个人对于团队的贡献一些可量化可观察的要求,让我可以更清晰的评判自己是否是一个合格的开发者。但对于第三点(接受团队赋予的角色)我还是存在疑问,根据调查,在当今国内的行情中,很多公司都是一个人身负多职的,他是ui还的是前端甚至肩负测试,QA,而充斥于市场半吊子的产品经理,总会提出无厘头的要求(比如不久前平安保险那个通过识别用户手机壳的颜色来更换界面颜色的要求),那么对于提出无理,不可行的要求我也要去做吗?如果我真的履行好这么多角色,我有能力和精力吗?
第四章:两人合作
代码规范,极限编程,结对编程,两人合作的不同阶段,影响他人的技巧
在4.1~4.4章中,主要给我们介绍了代码和编程的书写规范和复审机制。对于需要团队合作的项目,一个良好统一的代码规范可以降低沟通的成本。同时互联网行业流动性大,一个成员新加入团队,必先要阅读代码,统一的代码风格和规范能减少浪费的时间成本。而我有一个问题,为什么不全行业使用统一的代码不是一劳永逸了吗,不同公司有不同的代码规范是为什么?而很多公司,都有属于传说的“祖传”代码,它没有注释,逻辑混乱,但就是没有bug,也不能随便修改,这种“祖传代码”产生的原因是什么?
4.5章中,给我们介绍了结对开发的姿势。在实际开发中,结对开发能提高双发的工作效率,也能相互提高代码水平。但我也有许多不解,首先国内互联网流动性很大,如果两个人刚配合好默契,一个就跳槽了,前期的投入不是都浪费了吗?然后结对开发对于双方不单单是代码能力的要求,更多要求素质,情商,沟通能力的综合考量,如果两个脾气很冲的人在一起会不会发生其他矛盾?最后,每个人的精力都是有限的,有的人在早上特别精神,有的人晚上特别精神,可能你在努力工作的时候别人无精打彩,心理自然会有不平衡,要如何调节这种问题?我查阅相关资料,发现结对编程都对双发的道德和技术要求都很高。是否意味着这不适合于初级的开发人员。
第五章:团队和流程
典型的软件团队模式和开发流程都有哪些?各有什么优缺点,TSP,MVP,MBP,RUP
5.2章中,作者向我们介绍了蜂窝模式,明星模式,社区模式,业余剧团模式,秘密团队,特工团队,交响乐团模式等软件团队模式,每一个模式都各有所长,各有所短,而每个模式所进行的条件也不一样,比如你所在团队没有明星也要硬推一个明星出来。我不禁有一个疑问,如何寻找到适合自己的团队模式,而那种模式更有利于个人提高?
不成熟的提问,听闻作者和轮子哥很熟,可以评价一下他吗