《构建之法,邹欣》阅读笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/inter_peng/article/details/83650106

前言:

从2018年10月30日开始,阅读由微软工程师邹欣老师撰写的《构建之法》一书,全书共435页,每天阅读15页,在一个月(30天)完成。每天阅读完成后,需要思考当日的阅读要点和一些思考。
真正让自己感受到积累的效果和伟大!

周序号 Mon Tue Web Thu Fri Sat Sun
第1周 10.30(1~15) 10.31(16~31) 11.01(32~47) 11.02(48~63) 11.03(64~79) 11.04(80~95)
第2周 11.05(96~111) 11.06(112~127) 11.07(128~153) 11.08(154~169) 11.09(170~185) 11.10(186~201) 11.11(202~217)

每日打卡阅读和写作:

10月30日打卡:

阅读页码: 1~15页

阅读概要:

今天阅读了《构建之法》的前15页。这一节是整个软件工程的概论,邹欣老师从大家众所周知的一个命题:程序= 数据结构+算法,引出了程序的这一个概念。然后又用一个实际的案例,就是一个家长帮自己的孩子写了一个每天出算术题的小程序,到随着学校老师新提的不断需求,而扩展到一个比较大的系统的软件工程的范畴。引出了一个扩展链:
程序->应用软件->软件服务.
然后又扩展出了整个软件工程的技术名词,包括:
源程序
数据
软件架构
软件设计与实现
源代码管理
配置管理
质量保障
软件测试
需求分析
程序理解
软件维护
服务运营
软件生命周期
项目管理
用户体验
国际化和本地化
软件商业模式
职业道德规范

由此从最原始的公式逐渐推演和扩展:

  • 程序= 算法 + 数据结构
  • 软件= 程序 + 软件工程
  • 软件企业= 软件 + 商业模式

由此得出一个结论:程序(算法,数据结构)是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量;商业模式决定了一个软件企业的成败。软件从业人员和软件企业的道德操守会极大地影响软件用户的利益。

然后,通过类比人类对飞机的发展阶段:从叠纸飞机(玩具阶段),到用气球实现飞屋环游(业余爱好阶段),再到莱特兄弟发明飞机(探索阶段),再到现在的商业大飞机(成熟的产业阶段)。作者指出一个软件的开发阶段也是从简单到复杂的阶段,并且进行了对比,指出在每一个阶段如果成功或失败,会引起的不同结果。

在大家对软件工程有了一个模糊的印象后,作者用专业化的定义对软件工程做了定义。同时又指出了软件的特殊性。
然后针对目前全国各大高校,开的与计算机和软件相关的专业,指出了这些专业在培养侧重点方面的区别。

通过这一天的阅读,对软件工程的了解,也从原来的模糊逐渐到清晰。而作为身在其中的工程人员,也清楚了自己在整个软件工程中的定位,其中的很多词汇也都是平时自己工作中耳熟能详的。
期待明天的继续阅读!

10月31日打卡:

阅读页码: 16~31页

阅读概要:

作者之前已经对计算机和软件工程进行了一个大致的描述,相信读者已经跃跃欲试了。然而,作者给大家提了一个醒,就是关于如何去衡量一个软件是否合格的标准或评价。那就是软件测试了!
接下来作者讲解了软件测试的概念和一些分类。
软件测试的概念:

软件测试的分类:
(1)单元测试
(2)回归测试
(3)用户测试
结合一个例子,作者讲解了这三类软件测试的概念和区别。

11月01日打卡:

阅读页码: 32~47页

阅读概要:

作者针对之前提到的软件测试,介绍微软发明的一套用于程序性能的工具:
在微软Visual Studio中选择Tools->Performance Tools->Performance Wizard,可以进行两种方式的效能分析:抽样(Sampling)和代码注入(Instrumentation)。
并且针对一个具体的程序,统计词频的程序,来讲解如何用这两种方法来进行分析和性能改进。而后,作者又强调:虽然优化很重要,但是如果我们不经分析就盲目优化,也许只会事倍功半。

然后作者开始讲述软件的个人开发流程,有CMMI(软件能力成熟度模型)和PSP(Personal Software Process),主要讲解后者对软件开发流程的分配。
并且对大四学生和工作三年的软件开发工程师,针对PSP这套模型,得出了一个时间分配的对比表格。根据对比得出一个结论:
工程师在“需求分析”和“测试”这两方面要花更多的时间(多60%以上);但是在具体编码上,工程师比学生要少花1/3的时间。从学生到程序员,并不是更加没完没了地写程序。

然后作者又指出了目前在高校中,软件设计作业的局限性。就是无法体现出真正的软件工程。
师生们身处轰轰烈烈的软件产业大环境,但是在软件工程课上做的题目却是非常简陋,没有起到应有的作用,这的确是一件很有讽刺意义的事情。
作者指出目前软件工程课一个基本的作业“图书馆信息系统”存在着很多问题,并由此对需求进行扩展,指出:
(1)从数据方面扩展
(2)从需求方面扩展
(3)从用户方面扩展
(4)从软件构建方面扩展
等等,指出在开发软件时需要考虑的各种扩展因素。

最后,在本章最后,作者布置了一个作业,实现一个类似wc.exe(代码行统计)的软件作业。并且在布置作业时,非常具体的指出了这个作业的:
基本功能,扩展功能,高级功能。然后,希望学生们按照之前讲的PSP,来记录在完成这个作业的过程中,是如何体会软件工程的各个组成部分的。最后,又指出如何来测试自己所完成作业
的质量。

11月02日打卡:

阅读页码: 48~63页

阅读概要:

今天作者主要讲述的是关于“软件工程师的成长”的话题。相信这个话题也是所有身处这个行业的工程师们最关注的。
要衡量一个软件工程师的能力,那么必须设计一定的衡量指标。就像衡量一个NBA的职业运动员,或者是一个俱乐部的足球运动员,有很多的衡量指标一样,软件工程师也是有很多的衡量指标的。
作者指出,软件项目的确需要创造性,需要一些意外,一些惊喜。但是,更多的是常规的、可重复的任务。一个成熟的软件工程师应该能够降低任务交付时间的标准方差。如果你能长时间稳定而按时地交付工作的结果,内部和外部的顾客就会对你的工作有信心,更喜欢与你合作。
作者讲述了团队对个人的一些期望点。与PSP想对应的一个概念是TSP(Team Software Process),TSP对团队成员的要求如下:
(1)有效的交流;
(2)说到做到,按时交付;
(3)接受团队赋予的角色并按角色要求工作;
(4)全力投入团队的活动;
(5)按照团队流程的要求工作;
(6)时刻做好准备;
(7)理性的工作。
著名的艺术家Chuck Close说:我总觉得灵感是属于业余爱好者的。我们职业人士只是每天持续工作。今天你继续昨天的工作,明天你继续今天的工作,最终你会有所成就。

接下来作者提出了软件工程师的一些思维误区:
(1)分析麻痹;
(2)不分主次,想解决所有依赖问题;
(3)过早优化;
(4)过早扩大化/泛化(Premature Generalization)——画扇画,调侃目标和远景。

接下来作者提出了软件工程师的职业发展,指出了专和精的关系,职业成长,自我评估。

接下来作者根据自己对魔方的真实案例,指出了如何准确地评价自己的能力。并且用一个实际的案例,一个简历上写着是“精通”Visual Studio C#编程的大学生,在进行面试时解决的问题,都是一些最最基本的问题。结果,你发现他把时间都花在“解决(低层次)问题”上了,面试官想考察的“算法技能”、“C#程序设计技能”都无暇顾及。

那怎么提高技能呢?
答案很简单,通过不断的练习,把那些低层次的问题都解决了,变成不用经过大脑的自动操作,然后才有时间和脑力来解决较高层次的问题。
作者指出,这正好对应教育理论中的三个区域的理论(舒适区,学习区,恐慌区)。
我们不应该一开始就让自己处于恐慌区,这样会极大的打消自己的学习积极性。而应该选择合适的“学习区”来学习,不断构建自己的舒适区,从而扩展学习区,最后在某些领域达到技能的精通,是一个循序渐进的好办法。

本章的最后,作者还是对大家比较熟悉的魔方,来描述不同的精通程度,相对应的魔方的技能。那么作者如何考察一个“精通”魔方的面试者呢:
(1)给面试者一个打乱颜色的魔方;
(2)要求他把六面还原;
(3)如果还原了,要求他把魔方恢复成面试官最初给他的那个混乱的局面,必须一模一样。

11月03日打卡:

阅读页码: 64~79页

阅读概要:

这部分主要分为两个部分的内容。
前半部分63~67页,是作者针对前面的章节提出的一些课后思考题,诸如:
(1)选哪一种医生;
(2)软件开发到底是工程,还是艺术;
(3)绞刑架和职业发展的故事;
(4)针对案例,在博客中撰写观点;
(5)成长和代码量的关系;
(6)学什么,怎么学,核心竞争力是什么?
(7)各式各样的工程师;
(8)对职业梯子的思考;
等等。

接下来是新的一章:第4章 两人合作
这章主要讲述了代码规范,极限编程,结对编程等概念,以及代码复审的重要概念。
并且详尽地列出了代码规范的一些要求,以及为什么要进行代码审查,如何进行代码审查。
这些都和自己平时的工作有密切的联系,受益匪浅。

11月04日打卡:

阅读页码: 80~95页

阅读概要:

11月05日打卡:

阅读页码: 96~111页

阅读概要:

11月06日打卡:

阅读页码: 112~127页

阅读概要:

11月07日打卡:

阅读页码: 128~153页

阅读概要:

11月08日打卡:

阅读页码: 154~169页

阅读概要:

11月09日打卡:

阅读页码: 170~185页

阅读概要:

11月10日打卡:

阅读页码: 186~201页

阅读概要:

11月11日打卡:

阅读页码: 202~217页

阅读概要:

猜你喜欢

转载自blog.csdn.net/inter_peng/article/details/83650106
今日推荐