软件工程实践总结
1. 回望第一次作业,曾经对于软件工程课程的想象
1.1 对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
1.1.1 能力
能力,肯定是增长的(看下文),没有增长的话就非常苦逼了- -。但是我感觉我学到的东西好像很不牢固的样子。我素来不是什么经验学习者,主要是节奏控制的不好,通过经验学来的东西很容易忘掉。在时间比较紧张的时候,能把任务做完已经不容易,很难及时整理这些知识。事实上,碎片知识管理一直是我的一个大毛病。所幸,实践让我养成的习惯却不是那么容易消散的。
1.1.2 合作
在团队里面工作和单干,真的不一样。各种格式统一,各种例程什么的,很多,但是这些都是表面。真正震撼的是,思维的碰撞。。你永远不知道你的队友现在到底在想什么。。
1.1.3 心态
我搞懂了一个问题:“这个项目,到底属于谁?”。我的答案是:整体属于整体,部分属于部分。项目属于团队,我只有部分的所有权;换句话说,我只需要部分的精神依赖,而这种依赖可以由我自己来掌控。我也说不清这是一种什么感觉。以前我竭力推行我自己的想法,把项目当成我的孩子,受到打击之后也有彻底放弃、不闻不问的,后来就看淡了,该做什么做什么。后来要搞换人,对我丝毫没有什么精神打击。
1.2 软件工程实践为我带来的提升
1.2.1 总代码量
记不清了,期间应该有数千行了吧,包括我自己做的一些小东西。
1.2.2 各次作业的耗时表
有些作业因为某些原因,耗时并不准确,请注意。
作业 | 简要描述 | 用时 |
---|---|---|
第一次 | 开班博客 | 4 |
第二次 | 数独 | 18 |
第三次 | 部门管理软件设计 | 13 |
第四次 | 部门管理软件实现 | 12 |
第五次 | 团队作业 | 约100+ |
第六次 | 个人技术博客 | 4 |
第七次 | 华为软件云评测 | 5 |
第八次 | 课程总结 | 5 |
总计 | 约180+ |
1.2.3 印象最深刻的一次作业
当然是数独那次啦~
那次作业布置在暑假快要开学的时候,deadline又恰好卡在去学校的那个点上。更糟糕的是我有拖作业的习惯,那个时候本来有10天的时间可以完成,硬是让我拖到剩下2天才去做。我编程能力又不好,疯狂肝了两天。那个时候我第一次真正体会到了被软工实践支配的恐惧。
后来的作业中,这种感觉就没那么强烈了,因为我学会了计划与放弃。
1.2.4 累计花了多少个小时在软工实践上?平均每周花多少个小时?
累计约180小时,每周平均13小时。
1.2.5 新软件
- Android Studio
- Eclipse
- Code::Blocks
- Visual Studio
1.2.6 新工具
- 墨刀
- Github
- Teambition
1.2.7 新语言、新平台
- Java
- Android
- JSON
1.2.8 新方法
- UML设计
- 一些代码编写的小技巧
1.2.9 其他方面的提升
- 大佬队的做法真是让我大开眼界
- 学会活用Excel作时间管理
- 学会活用高级搜索寻找资源
- 活用UI素材库
- 软件开发流程
- 非合作博弈(误)
2. 属于我自己的人月神话:个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
无限坑了。。
3. 各种建议
3.1 对软件工程实践菜鸟的tips
- 你想当码农么?
大计算机系无所不包,以后想做什么的人都有,在计算机系什么机会都有。你想当码农么?想这个问题,一直想,想通了再决定报不报软工实践。你的时间很宝贵。 - 选跟你实力相近的人组成队伍。
不解释。 - 第一时间把团队管理框架搞起来。
最方便的做法,直接把大神的框架copy过来,慢慢适应。管理先行,否则你一定会后悔的。 - 学会放弃。
建议阅读微观经济学。
3.2 要不要中途换队员
可以换,但是绝对不能草率地换。
换人这件事情的重要性甚至可以和Alpha、Beta冲刺比肩,教案不应该厚一点么o( ̄︶ ̄)o。
4. 我的团队经历过么哪些阶段(《构建之法》17章),最后是否到达“创造”阶段?
我认为我们团队也就只是进到规范阶段的初级阶段而已。我们一开始激情高涨,但是大家各自为战,后来就越来越没有激情,讨论也冷下来了,后来才开始整理烂摊子,开始真正做事情。我们也不是没有规范的想法,但是工作已经开始了这么久,总是会有问题的。
我看那些大佬团队,一开始就制定了相当细致的规范,真是令人羡慕。他们已经有过很多次合作的机会,一开始就能进入稳定的规范阶段起飞期,然后很快就进入创造阶段。一开始老师说什么“厉害的人在一个队很容易闹矛盾”什么的,我当时就觉得不对。因为这个世界上,有一种团队叫做特种部队。
5. 我是否学会了软件工程了?
5.1 要求
- 研发出符合用户需求的软件:必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户)。
- 通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件。 有项目规划/需求/设计/实现/发布/维护,有定时的进度发布。
- 通过数据展现软件是可以维护和继续发展的,而不是找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
5.2 达成情况
- 我们的软件只有在课堂上发布,还没有真正推向市场。用户也就我们这些人而已。
- 我们的项目管理做得还不是很好。
- 我们的代码和文档记录都放在我们的Github库里面,童叟无欺。
6. 个性发挥,包括图文、照片和创意等
我一直不明白,这么牛逼的东西怎么就销声匿迹了呢?
我们至今仍为砖头所奴役