软工个人总结
一、请回望暑假时的第一次作业,你对于软件工程课程的想象
1)对比开篇博客你对课程目标和期待,“希望通过实践锻炼,增强计算机专业的能力和就业竞争力”,对比目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么?
提升:首先代码行数上是有了提升的,deadline是第一生产力,要是没有每一次博客截止时间还有GitHub上传代码的截止时间的恐惧,恐怕也不会肝那么多行c/c++。还有就是查找资料的能力有了提升,github上好多开源的代码是真的好用。关于python和c艹的掌握。了解了html,css和简单的框架,肯定比开学初好一点叭= =啊最后就是抗压能力,嗯,我还没秃。
不足:
1 技术上:alpha冲刺的时候把时间浪费在图标还有肤浅的css上,想想实在是罪过
2:GitHub:由于没有怎么上传过代码,GitHub使用也只会简单的pr等,并且在合并代码上都是人工,有机会还是想试试那种管理工具的。
3:合作和交流上:在与小伙伴沟通方面做的不太好,有时候沟通是浪费时间但却没有效果的。也算是知道了某些方面的不足。
2)总结这门课程的实践总结和给你带来的提升,包括以下内容:
1、统计一下,你在这门软件工程实践中,完成了多少行的代码;
根据每次的个人学习记录表(虽然不够真实)再加上自己算的C/C++ 1000+ ,python,html,css等1200+合计大概2200+
2、软工实践的各次作业分别花了多少时间?(做一个列表)
第N周 | 新增代码(行) | 累计代码(行) | 本周学习耗时(小时) | 累计学习耗时(小时) | 重要成长 |
---|---|---|---|---|---|
1 | 500 | 500 | 25 | 25 | 1熟悉了c++有关vector,map用法 2学习了正则表达式 3学习了状态转换图和有穷自动机 |
2 | 50 | 550 | 8 | 33 | 看了有关软件的使用,原型模型以及构建之法 |
3 | 300 | 950 | 48 | 81 | 修炼心性,debug能力有提升,心理素质加强= = |
4,5 | 50 | 1000 | 25 | 106 | |
6,7 | 60 | 1060 | 10 | 116 | |
8 | 300 | 1360 | 50 | 166 | c++,python |
9 | 0 | 1360 | 5 | 171 | 感觉这周过于松弛= =,后面要狠命还了 |
10 | 0 | 1360 | 5 | 176 | 美工 |
11 | 160 | 1360 | 20 | 196 | 终于实现了页面的跳转= =,商家端页面设置 |
12 | 100 | 1480 | 35 | 230 | 初识matplotlib,sql-connector |
13 | 50 | 1530 | 4 | 234 | 找Bug |
14 | 500 | 2030 | 18 | 252 | python,html |
15 | 100 | 2130 | 25 | 277 | html css |
16 | 50 | 2230 | 4 | 281 | 完结撒花 |
(好好反思之前也没有很认真的统计时间不过按照软工我花的时间应该是只多不少的)
3、哪一次作业让你印象最深刻?为什么?
A: 结对作业。至今都记得那是一个国庆七天假期,我大概花了两天来写那个什么wordcount,哦对,还人生第一次通宵(呵呵呵)最后让队友交一下,结果我俩都忘记合并到仓库(手动微笑)结果自然没有分,不过我不死心的找了助教去测,结果如果交了分数还是ok的,至少时间也没有白花叭。。反正github的坑以后还是得好好避免(哭了)如果有下次我就放飞自我玩个七天!!!
4、累计花了多少个小时在软工实践上?平均每周花多少个小时?同时贴出开篇博客“你打算平均每周拿出多少个小时用在这门课上”的回答
A:累计大概花了280+每周大概20h??(我觉得肯定不止啊)
???既然我当初有心理准备这门课花时间,那我为什么还是跟自己过不去一个学期12门课????软工带来的影响就是还得在两天自学一门课的情况下腾个时间写小结。虽然也想一个学期好好总结一下,只能说来的不是时候,后面再完善吧(如果我还记得的话)
5、学习和使用的新软件;
墨刀 微信开发者工具。
6、学习和使用的新工具;
A: github:之前是在上面站在巨人的肩膀上比较多(2333),后来发现自己的代码也能上传而且更利于项目的开发,虽然懂的还是皮毛,但是相比之前还是有进步的
B:iconfont里面有很多图标和界面啊,对于不会美工的人来说也是可以偷懒的好办法
7、学习和掌握的新语言、新平台;
A:语言首推python,其次学习了html css的hello world级别的认识
B:mysql
8、学习和掌握的新方法;
A:科学上网
B: 马云爸爸什么都有
9、其他方面的提升。
A:算是认识到了,每个人都有每个人的想法,什么时候要保持自己的想法,什么时候要听取他人的意见。沟通是一门艺术。
二、写下属于自己的人月神话——个人或结对或团队项目实践中的经验总结+实例/例证结合的分析
在团队项目的时候,由于每个人都要有明确的任务分工,于是任务就被模块化和细化,但是带来就是相关功能实现时人与人之间的沟通需要耗费一定的时间。也就是“对于可以分解,但子任务之间需要相互沟通和交流的任务,必须在计划工作中考虑沟通的工作量。” 下面的图也是这个意思。
而我想说的是,虽然增加人手在一定程度上可以提升效率,但有时反而会耗费相当长的时间,如果沟通不当的话。在代码版本的迭代中,每一次都要在新更新的版后面变更相应的版本号为下一次需要改代码的人提供便利,否则版本之间的不同步也会拖慢整个项目的进度。还有就是当面沟通的效率很高,但是当交流不便是,有注释的,有文档说明的也会让改代码变得事半功倍。所以在整个项目推进的过程中,团队成员的协调和沟通能力有时候显得甚为重要。
三、对下一届实践的建议,或者对于开学初的你,对于大一的你,对于开学初的我,对于同期的TA们,对于后来的学弟学妹:
1)你有什么想建议、告知和期许想要告诉他们呢?
A:不要选很多课!!不要选很多课!!不要选很多课!!重要的事情说三遍!队友的责任心很重要!!责任心很重要!!!责任心很重要!!即使很菜也要跟有责任心的组队!!!尽早组队!!即使抱大腿也会有提高的!!只要自己不放弃!!
B:对于我大一时的我:我的天!!你在迷茫什么???那么多技术博!那么多干货!那么多时间!!!学起来啊喂!!不然现在的我只会懊悔真的菜!
C:开学初的我:反正总会熬过来的,再来一次其实我也还是会选很多课,选软工。
2)特别地,特别地,下一届要不要中途换队员(强制的、彻底的从一队换到另一队)?假设依旧是一个90+人数的大班
A:视情况而定,如果发现自己跟组内很多的人都不在同一个频道无法沟通,这种沟通就是不可调节的,因为每个人都是独立的个体,那么就果断一点,去一个自己比较喜欢的队。还有一种情况是,整个队伍很多人都不作为,甚至只有一两个人在为整个团队做贡献,如果你很强你认为你一个人能搞定就继续,否则跳槽。最后就是一般情况下不建议换队,新的项目有新的环境,新的语言,如果自己没什么相关经验的话也很难融入其他队伍。
3)身在一个格外大的班级,竞争强劲,你认为一个组的人数应当在多少比较合适?
A:其实我觉得7 8个就够了,人太多任务反而不好分配。
4)个人/结对/团队作业应该控制在怎样的规模?
A:个人作业:我觉得一周花费的时间不超过20h 结对作业:每周的每人的任务量不超过25h 团队作业:我觉得现在这个时间就差不多了。
5)这学期下来,你最感谢的人是谁?有什么话想要对TA说呢?
A:想感谢的有点多啊
(又不是获奖感言啊喂)感谢团队项目里虽然我很菜,虽然我bb个不停,默默承受我的马斌斌。
四、分析一下自己所处的团队。软件工程实践是大学里少有的认真的团队协作经验。《构建之法》上说团队的发展有几个阶段,你的团队都经历过么,最后到达了“创造”阶段了么?(参考《构建执法》第17章 人、绩效和职业道德)
团队发展大致为萌芽阶段、磨合阶段、规范阶段、创造阶段这四个阶段。萌芽阶段其实是应该算是从暑假就开始了,大家对于“吃”这个话题比较感兴趣,正好实在做菜品的检测,因此“小白吃”团队应运而生。磨合阶段,这是一个大家从不熟悉变为熟悉的一个漫长过程,各自的代码风格,各自的想法,思维的碰撞每个人的性格都在这个阶段得到了或多或少的“摩擦”因为每个人的子任务都与其他人的任务密切相关。规范阶段,包括开发文档,甚至细节到代码行的注释,文件的命名,版本更新的命名等等,这些很细节的东西,有时可能耽误相当长的时间。创造阶段:我觉得我们的小组有达到这样的阶段,附加功能的实现,以及对于实际问题的考虑,每个人都有尽自己的职责,即使由于时间问题我们的项目没有得到很好的推广,但是,大家都有为此想过办法。
五、怎样证明你学会了软件工程?
1)研发出符合用户需求的软件
必须公开发布,有实际的用户,一定的用户量和持续使用量 (3 天后能保持10 - 100个用户);而不是: 做没有用户使用的软件
由于我们一开始也没有考虑到会出现支付问题,因此我们的小程序没有上线,但是这并不是技术问题,我相信经过推广之后,肯定是会有使用量的。
2)通过一系列工具,流程,团队合作,能够在预计的时间内发布 “足够好” 的软件
有项目规划/需求/设计/实现/发布/维护,有定时的进度发布 ; 而不是: 通过临时熬夜,胡乱拼凑,大牛一人代劳,延迟交付等方式糊弄
计划表及燃尽图
3)并且通过数据展现软件是可以维护和继续发展的。
而不是 找不到源代码,代码无文档,代码不能编译,没有task/bug 等项目的发展资料
由于我们算法的核心功能是菜品的识别和检测,我们对于数据集进行了两次的收集和标注,以及很长时间的训练,可以说我们的正确率是有保证的,并且在这套算法之后如果遇到瓶颈,我们会通过其他方法降低吃“霸王餐”的现象。
4)对着这个检查表:http://xinz.cnblogs.com/p/3852177.html 检查一下,自己如果去企业面试,这些常见的问题是否都能回答,并在此总结。
请在随笔中用数据证明上述内容或侧重选择之一。
首先就是关于语言的使用,关于前端语言和后端语言,很不幸的,我好像还停留在过家家的阶段,比如下面java进阶,只能说路漫漫其修远兮。
六*(选做)、阅读软件工程中关于代码质量的的经典论文,从下列文献中选择一篇或若干篇,结合自己的实际做一个阅读笔记(例如,自己写的代码质量如何,是不是一个大泥球,如何衡量自己代码的质量)?从以下参考论文中选择一篇或若干篇:
参考论文文献:
[1] Stamelos I, Angelis L, Oikonomou A, et al. Code quality analysis in open source software development[J]. Information Systems Journal, 2002, 12(1): 43-60.
[2] Boehm B W, Brown J R, Lipow M. Quantitative evaluation of software quality[C]//Proceedings of the 2nd international conference on Software engineering. IEEE Computer Society Press, 1976: 592-605
[3] Samoladas I, Stamelos I, Angelis L, et al. Open source software development should strive for even greater code maintainability[J]. Communications of the ACM, 2004, 47(10): 83-87
针对第一篇:其实由题目也可以看出来,open source,开源。 这篇文章大致在讲 什么是开源,已经开源软件的开发:原型在网上发布,其他程序员可以进行自由地读取、修改。该系统演化速度很快,比传统的封闭项目的速度要快得多。 介绍了开源项目的好处:高品质、高产、高效率,迅速发展,对问题能够更快解决。
所以开源其实是一个双向的过程,一方面我们可以将自己的代码上传到github上,帮助之后有用到的人,帮助我们管理我们的代码,不断的版本更新和迭代,另一方面我们也能站在巨人的肩膀上,让自己所作的努力是往正向发展的。
七、个性发挥,包括图文、照片和创意等
关于这个软工实践怎么讲呢,确实是痛并快乐着吧,应该是有学到一些东西叭,我觉得不仅仅是写代码,还有一部分是人与人的交往中体现,比如有时要做一个冷静的局外人,毕竟旁观者清。另外就是,马斌和黄泽请的串串真好吃。
所以浩鸽说好搓一顿的呢