现代软件工程最后一周总结
Q1 回顾课程计划
当时的计划是,
在技能调查表里,我选取的认为比较重要的几个技能是Programming: Comprehension, Program: Performance, Programming: Communication, Programming: Code Quality, Programming: Implementation, Personal Software Process。目前的水平只有2~3分,期望能够在课程结束后至少达到6分的水准。
然后经过了这段时间的锻炼的话,从现状来说,在程序理解方面通过大量的去阅读代码,包括这段时间新学了自己不熟悉的语言,阅读对应的库代码和示例函数,到现在基本能搞清楚用法,在这方面的能力大概可以给自己3~4分。线程之间的交互几乎没有任何提升,因为很少去接触这些东西,前些天去改一段异步执行的代码还是一头雾水。代码质量现在会有意识地给代码中加上对应的注释,对变量地命名也在逐渐养成强迫症,代码地模块实现和细化方面略有提升,但是在解除模块之间的耦合方面并没有多大改变。个人源码管理方面熟悉了更多地git命令。
Q2 《构建之法》的5个问题和回答
- 第八章 需求分析 关于产品的四个象限(P165)
当时的问题是不知道怎么去划分功能的不同象限,如何去投资不同的功能。现在看来呢,这个主要依靠市场调查,当市场调查,分析需求确定了之后,剩下要做的就是投入精力去做开发,作出一个MVP之后,根据反馈和进一步的市场调查以及资源情况进行动态调整。毕竟需求本身就不是稳定的。
- 第八章 需求分析 用户调查问卷的方式(P158):
这个问题,关于这类开放式回答因为在这次软件工程中并没有制作问卷,所以我还是认为会有比较少的人会认真回答这类问题。但是,这类问题的必要性很高,因为在一个程序员众多的环境下,我们对很多问题的把握常常会卡进一个局部误区,这类问题可以帮助项目更清晰认识到市场。这种问题的回答哪怕只有一个人回答都是有价值的。
- 第三章 软件工程师的成长 软件工程师的职业发展(P51)
这个是基础,没有一个合适的态度是不会得到真正的成长的。
- 第十六章 IT行业的创新 小即是美(p372)
大数据时代,用户才是基础,好的产品会有各种渠道进行推广,小的组织有更高的效率和沟通执行力。比如流行的游戏榜单上很多排名高的新游戏都是由小作坊制作发售的。
- 第八章 需求分析 功能质量和投资力度的线性关系图(P165)
回答类似问题1,所以根据不同时期需求不一样,需要动态调整各类需求的功能和资源投资。
Q3 新的问题
- 开发的过程中经常会遇到规划了几个feature却因为种种原因(比方说小bug,或者服务器之类的)最后可能完不成预期的规划,如果说几个feature的作用是一样的,而且进度也一样,怎么才能合理的判断feature的重要性来决定如何舍弃呢?feature和用户体验之间怎么取舍呢?
Q4 你看了一些软件工程的文献, 你的团队也做了一两次 “事后诸葛亮”分析, 可以再去看一遍,现在有什么新的感想?
软件开发没有银弹的。在过程中的沟通非常重要,小的bug最后可能成为最大的拦路虎,项目开始之前一定要有设计文档之类的东西,各个模块之间的拼接非常重要,小的bug如果累积到最后可能会造成各种连锁反应,所以要提早解决bug。在项目开发过程中每日构建等都是很重要的,有助于及早发现过程中存在的问题。
Q5 对比一些技能评价表,你有什么提高? 还有什么收获是不能用数字衡量的?
自我感觉对自己代码的管理有了很大的进步。其他一些提升在Q1里也有了回答。其他收获就是经验!!!软件开发过程中可能出现问题的各个环节大概有了一个了解。还有如何多人合作去做一个项目的经验,如何根据各自的能力去做一些合理的工作调配等等等。
Q6 设想一年之后, 你到了你职业发展的下一个阶段(高年级, 读研,工作),回头看这门课, 你对于这门课的教学方法, 老师和助教的工作,和其他课程的衔接,有什么意见和建议?
- 可选项目里的项目都是从零开始的,感觉如果有一些半成品的项目接手去做的话,更能锻炼代码的理解能力之类的。换组这样的范围毕竟比较小。
- 课程开始前推荐一些先修课程或者软件工程案例?比如说软件架构或者所使用的编程语言之类的。