分享

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

 昵称11458597 2019-07-17

从2019年7月17日开始,阅读由微软工程师邹欣老师撰写的《构建之法》一书,全书共435页,每天阅读15页,在一个月(30天)完成。每天阅读完成后,需要思考当日的阅读要点和一些思考。

真正让自己感受到积累的效果和伟大!

以下是书的封面:

 
每日打卡阅读和写作:
7月17日打卡:
阅读页码:1~38页
今天阅读了《构建之法》的前39页。这一节是整个软件工程的概论,邹老师从大家众所周知的命题,程序=数据结构+算法,引出了程序这一概念。然后有用一个实际案例,就是一个家长帮助孩子写了一个每天出数学题的程序,到学校老师提出新的要求,而扩展到一个比较大的系统的软件工程范畴。程序-应用软件-服务
然后又引出了整个软件工程的技术名词:
源程序;
数据;
软件架构;
软件设计与实现;
源代码管理;
配置管理;
质量保证;
软件测试;
需求分析;
程序理解;
软件维护;
服务运营;
软件生命周期;
项目管理;
用户体验;
国际化和本地化;
软件的商业模式;
用户界面设计;
软件开发人员的职业操守;
接着依次提出了自己对软件工程的三个推论 :
程序=算法+数据结构
软件=程序+软件工程
软件企业=软件+商业模式

由此得到一个结论:程序是基本功,但是在算法和数据结构之上,软件工程决定了软件质量;商业模式决定了软件企业的成败。软件从业人员和软件企业的道德规范会极大的影响用户的利益。
然后,通过类比人类对飞机的发展阶段:从玩具阶段,到成熟的产业阶段。作者阐述软件行业也是从简单到复杂的一个发展工程,并且对比了飞机产业与软件产业不同阶段,如果成功或者失败,会引起的不同结果。

在大家对软件工程有一个模糊的概念后,作者用专业化的定义对软件工程做了定义。同时又指出了软件的特殊性(1.复杂性;2.不可见行;3.易变性;4.服从性;5.非连续性)

通过这一天的阅读,对软件工程的了解,也从原来的模糊逐渐清晰。而生在其中的工作人员,也清楚了自己在整个软件工程中的定位,其中很多词汇也是平常工作中耳熟能详的。

期待明天的继续阅读!

每日打卡阅读和写作:
7月18日打卡:
阅读页码:38~53页
作者之前已经对计算机和软件工程有了一个大致的描述,相信大家已经跃跃欲试了。然而,作者给我们读者提了一个醒,就是关于如何去衡量一个软件合格的标准或者评价。答案就是软件测试了!
接下来作者讲解了软件测试的作用和分类.
软件测试的分类:
1.单元测试
2.回归测试
3.功能测试
结合一个例子,作者讲解了这三类软件测试的概念和区别
每日打卡阅读和写作:
7月18日打卡
阅读页码:53~68页
针对之前的软件测试,作者介绍了Vi-sual Studio VSTS 程序性能分析工具;

工具提供两种性能分析方式,
抽样;
注入;
作者首先介描述两种不同方式的优缺点,然后,介绍了如何同时采用两种方式来分析程序的性能。而后,作者又强调:虽然优化很重要,但是如果我们不经分析盲目优化,也许只会是事半功倍。
然后作者开始新的小结讲解个人程序开发的流程。通过一个案例来描述了个人开发流程的模型(psp)
计划
.估计这个任务需要多少时间
开发
.分析需求
.生成设计文档
.设计复审(和同事审核设计文档)
.代码规范(为目前的项目制定合适的规范)
.具体设计
.具体编码
.代码复审
.测试(包括自测,修改代码,提交修改)
记录用时
测试报告
计算工作量
事后总结
提出过程改进计划
最后阅读了作者的作文部分,一个WC.EXE程序 按照psp模型流程给出了分析方式。

每日打卡阅读和写作:
7月22日打卡
阅读页码:68~83页
第三章作者讲述了软件工程师的成长
重点的学习是:
理论和知识点;
评价软件工程师水平的主要方法;
练习与讨论;
技能的反面; 软件工程师的自我评估  
今天作者主要讲述的是关于“软件工程师的成长”的话题。相信这个话题也是所有身处这个行业的工程师们最关注的。
要衡量一个软件工程师的能力,那么必须设计一定的衡量指标。就像衡量一个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)如果还原了,要求他把魔方恢复成面试官最初给他的那个混乱的局面,必须一模一样。
每日打卡阅读和写作:
7月24日打卡
阅读页码:83~98页
今天主要阅读的是第四章的部分内容,受益匪浅。作者在本章的题目是两人合作,但是作者主要阐述的内容对我最大的启发是:在今后的工作中,无论是自己团队还是外包团队,一定重视项目开发的习惯或者是规则。要有一套自己公司的代码风格、代码设计规范、代码复审。关于本章的内容,需要再次仔细阅读,加深对程序员代码实现的要求。
每日打卡阅读和写作:
7月25日打卡
10张PPT干货,教你写出一流的文案今天阅读了如何写好一篇文案,作者表达的核心思想是:想写一篇好的文案,最关键的是要掌握背后最核心的方法论
然后作者从以下几方面叙述了几种逻辑方法论:
1.分解产品属性:基础属性,功能属性
2.分析目标客户:个人属性,工作事业,家庭情况。
3.分析使用场景:购买场景,使用场景,保存场景,维护场景。
4.分析竞争对手:不作为,相同类型,不同类型。
5.如何突出特点:与用户脑中已有的东西产生联系、,利用数字具体,利用视觉化描述让用户能够感知到,突出能给用户带来的利益,唤起用户的某种情绪。
每日打卡阅读和写作:
7月26日打卡
阅读页码:111~131页

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多