高级软件工程实践总结
四个月的时间匆匆,高级软件工程也在恍惚间结课了。对软工实践的印象可以用一个字概括:赶。可能因为研一的课程比较多吧,印象中作业在赶,博客在赶,项目也在赶。
回首
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
在开篇博客“未来的期望”中我的期望是“希望能够通过这么课,了解项目开发的整个过程并掌握该项技能”,现在看来这个目标完成了一半一半,一半是了解了项目开发的整个过程,对于“掌握该项技能”感觉也只掌握了一半,因为项目涉及的技术和知识实在是太多,团队作业不仅让我看到了团队的力量和其他同学的闪光点,也认识到了自己的短板和不足。
首先,还需要加强对专业基础的理解和掌握。在作业过程中,能够感受出是对学过的知识的复用,但这种复用又不同于生搬硬套,需要对知识本身有很好的理解和掌握,是用来解决具体问题的,也就是不仅要知其然还要知其所以然。其次,需要加强自己的统筹兼顾的能力。在本次团队作业中,我担任的是队长一职。事后回顾发现,自己并没有很称职的完成队长这一角色。对于整个项目,容易陷入自己做自己事情而忽略对于项目整体的把握和其他队员进度的兼顾;对于负责的部分,编程过程中容易陷入对细节的深究,而忽略了自己真正要解决的问题。最后,由于团队项目匆匆结项和对设计模式的熟练程度不够,对个别模式理解得不是很到位,需要再花时间复习理解,才能真正应用到实际的开发中去。
总结这门课程的实践总结和给你带来的提升,包括以下内容:
- 1、统计一下,你在这门高级软件工程实践中,完成了多少行的代码;
- 2、高级软工实践的各次作业分别花了多少时间?(做一个列表)
- 3、哪一次作业让你印象最深刻?为什么?
- 4、累计花了多少个小时在高级软工实践上?平均每周花多少个小时?
- 5、学习和使用的新软件;
- 6、学习和使用的新工具;
- 7、学习和掌握的新语言、新平台;
- 8、学习和掌握的新方法;
- 9、其他方面的提升。
代码统计:
作业 | 代码量(行) |
---|---|
个人 | 249 |
结对 | 330 |
团队 | 1451 |
总计 | 2030 |
时间统计(作业时长、累计时长、平均时长)
名称 | 时间(h) |
---|---|
阅读与思考 | 1 |
数独 | 9.8 |
设计模式1 | 3 |
设计模式2 | 3 |
设计模式3 | 3 |
结对作业原型设计 | 10.1 |
智能匹配的程序 | 11 |
团队项目 | 120 |
总计 | 160.9 |
因为后期的项目冲刺花了较多的连续时间,所以总的来算,高级软工实践平均每周至少有八九个小时。
印象最深
印象最深的一次作业应该是结对作业。因为结对作业是我第一次接触合作编程。
这次结对编程使我认识到了规范的重要性,更深刻的理解了代码不仅是给机器看的,也是给人看的,最终是人在看
,在编程过程中要时时刻刻有“保持简明,让代码更容易读”的原则,不然即使是自己写的代码,过一段时间再回头看可能连自己都看不懂当时自己为什么要怎么写了。正是这次结对编程,让我体验了构建之法的奥妙。
学习和使用的新技能(软件、工具、语言、平台、方法、提升)
通过本课程的学习,先后学会了以下技能:
- 学会了markdown的使用,大大提升了编写文档的速度
- 使用VS对代码进行性能分析和改进
- 代码规范的使用和重要性
- 原型设计和原型工具(Balsamiq Mockups 3)的使用
- 微信开发者工具的使用
- 熟悉了js
- 掌握了设计模式的应用场景
- 参与到了项目开发的流程和编程中去
- 认识到了自己的短板和不足
人月神话——经验总结
在最后的团队项目中,我负责的是小程序端的开发,在页面传值的问题上,网上有许多解决方案,在得到解决方案后我并没有就此打住,而是继续深究页面传值实现的原理,结果浪费了半天的时间还把自己搞得一头雾水。
在项目中我们不免会遇到难题,可能自己目前的知识储备无法解决,需要依靠搜索引擎来解决,当遇到的问题可能是比较常见的问题,网上有许多人也曾经遇到了相同的问题,这时候去搜索就会搜索到很多解决方法甚至是对该问题的深度剖析和原理的扩展。随着搜索的深入,这时候的方向可能就会陷入技术细节里,从而忘记了最开始的目的是要得到答案而不是去寻找为什么。
我觉得编程应该是一件目的性很强的事情,因为不管是在个人项目还是合作项目,涉及的技术和事物实在是太多,我们应该时时刻刻提醒自己现在所做的事是否和一开始的目的相符,从而提升我们的编程效率。
建议和告知
对于没有项目经验却又对软件开发感兴趣的同学来说,这门课是不错的选择。它能够让你一步步了解软件开发的流程,对编程能力也有提升,也能够让你对自己的技术方向有更清晰的定位。
一开始看似很繁琐的作业是一个很好的筛选手段,能够将想学的同学吸纳进来。我觉得这门课程的特色不在于传授了多少知识,而是逼着你不断的去学习。这就好比告诉你目的地在西边,剩下的路就只能靠自己去行走和摸索了。在形成了自己的一套解决方法之后,之后再遇到难题就不会不知所措了。
团队分析
我觉得我们的团队并没有经历萌芽阶段,一开始我们的目标和分工就十分清晰,有人负责服务器端,有人负责微信端。分工完成之后我们也都进入了各自的学习过程。在耦合的阶段我们进入了所谓的磨合,庆幸的是磨合的结果都以成功告终,都是从实际情况出发,寻求问题的最优解,也就是说我们从磨合到规范的过度十分的平滑和自然。我觉得我们也到达了“创造阶段”,团队成员们互相支持,互相依赖并保持了各自的灵活性。
学会了软件工程
根据团队项目的要求,我们有按照项目的规划、需求、设计、实现等在alpha(alpha冲击合集)和beta(beta冲刺合集)阶段定时发布了开发进度。