路在,人在,心在 (软工实践总结)
一、 回望来路
曾经的期待和目标
大三的目标就是,在JAVA的基础上,研究透Android Studio 的开发
* 目标已经完成,只是对于它的深入,还需进一步努力! * 曾经摸不懂Java的包和类,也不明白Android Studio的Project与Android的区别,抱着一本书练习着一个个小Demo,到现在在Java上,写一些基于Java的Json文件的处理和分解,解决实际问题,可以说是一种从书本到实战的体验,感觉对于期待和目标来说,已经超额完成。当然,这也算是一个入门,只能说摆脱了C++一门语言走天下的窘境,也算是掌握了如何去在短时间,学会一门语言的能力。
* 超额的内容,绝不仅仅是Java和Android Studio这么简单,这门课,让我“无可奈何”的学习了很多的东西从一般的编辑软件Atom到VS code写markdown,以及接触了Unity3D和C#,莫名感觉可以学的东西还有很多。
* 但是如果把软工实践单独当做学习开发工具,熟练编程语言课的话,现在看来,显然狭隘了很多,四个月下来,编程语言,开发工具都只是这门课的配菜,真正的主菜则是跟随一个团队一起进步,一起成长。因此,很欣慰作为软工团队的PM,了解了一系列的软件设计开发流程,真正能让一个程序员从幕后走到了台前,当然了,新鲜事物总带着神秘感引人向往,但是做到这个位置才知道其中的不易。这里面有太多可以学习的东西,也有太多可以汲取的教训。总之就是不要抱怨你现在的艰难,其实在困境中走出的每一步,都是成长。
总结和提升
1.代码总量
- 大概:4K+
2.时间:
作业次数 | 花费时间 |
---|---|
建立博客阐述心声 | 3个小时左右 |
数独输出与游戏 | 总共跨越4天,后期修改的部分也跨越了一两天 |
结对原型设计 | 第一个版本大概用了4个小时左右,第二个版本3个小时 |
结对随机匹配 | 从10.1-10.6,一个人边在宿舍打代码,边过节 |
团队展示 | 3个小时左右,p图和博客排版 |
选题报告 | 4个小时左右 |
团队采访 | 2个小时采访,1个小时博客 |
需求规格说明书 | 10个小时,通宵卡在Markdown导出PDF的绝望 |
系统设计 | 4个小时左右 |
UML设计 | 4个小时 |
团队小测同学录 | 8:20-21:40 体验了一把极限编程 |
华为云评测 | 3个小时 |
Alpha版本冲刺 | 12次的冲刺,即使参与但是由于部门工作,很遗憾没有全心投入 |
Beta版本冲刺 | 5天冲刺,这次的参与,才叫团队的力量 |
3. 最深刻的作业
-
1> 数独
- 的确是一种兴趣,那种作出一个小游戏的感觉,真的是最大的动力,其实开始真的没有想什么1000000数据的输出问题,完全就是奔着附加题做的,因为那是自己的兴趣,而之后做1000000输出的时候,又再次学到了很多的知识,其实累点苦点无所谓,重在在这之后学到的内容,收获的东西,这才是最重要的东西。
-
2> 部门学生匹配
- 10.1-10.8,从不想学Json,写了一个手动生成Json的C++程序,一个个比对,到Json.cn验证,确保没有问题。到读取无奈必须学习Json,从C++查到Java,最后决定用自己只懂皮毛的Java,找包,导入,学习方法,到之后算法的修改,一遍遍的迭代。10.1假期不再寂寞。 -
3> 团队同学录
- 极限编程,有之前的基础,加上团队的合作,功能模块明确,分配开工,协调配合,让我第一次感觉到团队的力量,很强,很大!及其充实的一天
-
4> Beta版本冲刺
- 由于个人的部门原因,Alpha版本的确进展没有达到预期,分配任务也不是太明确,在Beta版本汲取教训,同时更改团队的管理模式,再次感受到团队的力量。
4. 累计花的时间,和每周的时间
- 依稀记着第一次作业时候说的话,软工需要的时间,都是我的空闲时间。的确,就像计划里写的一样,虽然只是在Alpha版本有所拖延,但是其他的时间,可以保证软工第一,学习第二,所以累计花的时间,可以说是:吃饭的时候想着,学习的时候念着,睡觉的时候梦着,打游戏的时候担心着!
- 每周的话,除了冲刺的每一个晚上,除了10.1国庆的每一天里,还有数不清的夜里,写着个人的博客,结对的博客,团队的博客,还记着数独博客,是在早上8点要飞福州的凌晨2点半迭代完的。记着被Markdown导出PDF无奈,那个Atom的插件bug我后来感觉知道,也不怪Atom和VS Code识别问题,应该是马克飞象太兼容我的bug了,其实很多比如
#
后面应该打的空格都没有打,emmmmm,所以还是自己才疏学浅吧。该付出的成本,该付出应该付的!明白了就好。
5. 学习和使用新的软件
1> MockPlus原型设计工具
2> Android Studio
3> exe4j
4> Atom
5> VS Code
6> Eclipse
7> Unity3D
6. 新语言、新平台、工具和方法
1> Java
2> Android
3> 稍微接触了C’#’
4> 接触了一些Html
5> Json语句
6> 一些数据的处理方法
7. 其他方面的内容
- 学习到了一整个软件的开发流程,从最开始的需求规格说明书,到之后的UML设计,开发接口,以及管理一个团队的方式,如何才可以更有效率的团队开发。
二、实践总结
- 个人的学习,CSDN,博客园,还有各种大大小小的学习网站,这些资源足够在现阶段自学很多东西,学东西不应仅仅停留在DEMO,或者是书本的一段段代码,虽然这些代码打完了可以有一种成就感,也就是学会这门语言或者工具的感觉。但是真正会运用,最好还是去做一个完整的项目。这样的过程,包括遇到问题,解决问题的能力才会让以后少走弯路吧。
- 熬夜不一定是好事,因为可能效率并不高,有时候选择自己有效率的时候做事情,也是一种能力吧。记住,凌晨四点的福大,不是熬到的,而是给自己的计划,让自己精力充沛,从4点开始的。熬夜到凌晨,睡到中午的生活,之后浑浑噩噩一定是一件值得称道的事情吗?我觉得未必吧。
- 作为一个PM,要把握每一个模块的内容,做的越细化,越好操作,方向才能够明确,所谓的细化,不仅仅是每一次会议,主要还是在UML图上下功夫,以及需求规格说明书的内容上写的越细越好。
- 掌握每一个模块的进度,让团队运行在并行的轨道上,这就要求衔接好每一步。
- 学习东西,不能避重就轻,该做的迟早要做,会了都是提升,就像Json的学习一样,费劲的写一个生成,却
终究逃不过的读取,而学会了这个,对团队的同学录制作,也是一个大大的帮助。
- 做程序,也要懂得放松和生活,太大的压力会让自己也难以应付,所以嘛,还是那句话,要调配好自己的生活和学习。
三、给下一届萌新的建议
- 其实吧,开始的时候看着学长学姐们的建议,嘻嘻哈哈,段子频出,好不快活的感觉。但是经历过,才知道其中的苦中作乐,就像我第一次作业写得一样,最苦的日子,也是自己记忆最深刻的时候,让自己不断成长的时候,敢尝试,愿付出,不逃避,按时交付,你敢挑战自己,这门课就会给你充足的空间展示自己。
- 对于我而言,我不想说这门课坑或者不坑的话,因为一切的写作手法都不如告诉你要做什么来得实在:
- 1.首先,你要失去一大部分打游戏的时间。不知道下届,吃鸡还会不会这么热门吧,反正忙的时候一个赛季一般也就跳20几次。
- 2.其次,你要学会如何去学,因为软工实践,虽然目的是要做一个团队敏捷开发的流程,但是必要的工具学习是必须的,所以呢,如何去学习,怎么要求自己按计划学习,要求自律。
- 3.再次,学会和团队同学相处,和老师和助教沟通。身处团队,交流相处是必须的,几个臭皮匠顶过一个诸葛亮嘛~,一个蒸蒸日上的团队,力量比想象大得多。而星型的团队,没有经历过,也不好去评价。总之,一个优秀的团队给我的感觉就是,每个人都有自己的一席之地,各司其职的模式,也会让每一个成员都有存在感。
- 4.最后,讲一下团队换人吧
- 其实,就像栋哥说的,没有尝试过,不知道对错,就应该去尝试。的确,我同意这个道理,也敬佩这里面的勇气。就我们的团队来说吧,的确从中获益,因为换人,给我们带来了一种新的管理模式,以及新的团队热情和动力。
- 但是,在我看来,客观的说,对于一个由认识的同学组成的团队来说,的确有点残忍吧。因为从感性这个层面来讲,这里面不只是一个工作相关的关系,更像是短时间,大家积累下的感情,大家一起努力的过程。如果,离开的是一个大牛,对于他自身可能没有什么影响,但是对于团队的工作,是否能够继续下去,是否团队的每一个人都认同他的离开,后续的开发主心骨会不会有变动。因为这不是工作,不是人人擅长的跳转而已。如果离开的是一个后进者,可能对他的团队影响并不大,那么他会怎么面对这个结局呢?也许他希望自己提高,然而不得不去选择离开。还是那句话,因为这里不是公司,不是人人的能力对等,交换的只是位置而已的状况。
- 而理性来说,适应现状,是一个团队,一个人必须拥有的能力,从这个方面来看,锻炼能力也是必要的,我们需要这种能力。所以,综上考虑两个方面,我对此给出的建议是,对于想离开的队员应该打开一道门,让他们跳槽或者说是交换,因为他们希望主动锻炼自己的能力,而不是被迫退队打击自己的积极性。而对于本身发展良好的团队,应该听从团队自身的一个想法吧。让他们吸纳,或者交换一部分人员。因为这个短时间组织好的团队,肯定有他的闪光点,做一个交流保持继续的动力,也很重要。
- 哦对了,少说了一点,那就是有女票^未选软工实践的同志,考虑一下,自己的时间……嗯,剩下的,你懂得~
四、自己团队所处的阶段
- 就像构建之法所讲的领导力,一个团队的磨合期到规范期,再到创造阶段,我觉得我们就在经历这个阶段,从开始,大家一些人之间不熟悉,到后来慢慢熟络,有的时候也会有一些争执,也会有一些问题,在一些使用的问题上也存在一些分歧,不断磨合之后。在beta版本的冲刺中就可以体会到,每个人各司其职,作为PM也不需要过多的亲力亲为,规定好的内容,按时交付,而作为PM,我需要做的内容就是决定一些大的框架和方向,然后安排每天的工作。组织会议,并且给每一个人信任,每个组都有自己的做事方式,配合模式,而我只需要顺应每一个模式,然后组织组间的沟通,这种状态,就是一个真团队的样子,信任和效率挂钩,积极的处事态度,会让事情的处理更加便捷。而不断的成功,会让团队的自信得到增长,然后达到良性循环的状态。
五、 学会了软工
-
1.我们的应用发布在三个公共平台
-
2.团队合作Issue以及每日的燃尽图,规划每日的工作。
-
3.GitHub代码,接口文档,以及项目策划,代码规范有注释。确保项目是可以维护和继续发展的,因为对于游戏而言,可以加入很多的元素,所以注重后期的迭代是我们要做的事情。一份没有注释的代码,或者命名不规范的代码,的确是让费解的。也不易于接手继续开发。而接口文档就更像是两个层面交互必须的东西,没有这个东西一切的迭代开发,都要重新去写实现,加大了很多的迭代开发难度。
六、写在最后,杂谈
- 8月24日第一次作业,到2017年的最后几天,完成了最后一次个人软工作业,也许软工实践也即将带着他的高压和苦涩离开我。此时,让我回想到了2016的那次C++,同样高压,同样痛苦,但是比起那次,这次的我,应该说是按时按质的交付了每一次的作业。欣慰自己在这一年之后的高压下,可以有这样的表现。
- 欣慰的同时,还有一次别样的惊喜,那就是那件黄杉,既算是意外,也算是肯定吧,让我能够积累下一份自信。更加自信得面对未知的困境,未来也会遇到各种各样的困难,自信得坚持,相信自己可以做到。
- 也许开始的我,担心上台答辩,担心作分析,对管理只有一个模糊的概念,慢慢地去适应上台的感觉,适应被提问的感觉,从担心,也慢慢变得从容,不再去惧怕的同时,自信和乐观也让自己更加相信自己的团队,相信和支持每一个成员。PM对我的意义,整体来看,真的很大。
- 人总会错过一些东西,或者一些东西无法尽善尽美,有些是能力所限,有些是天命难为,但是能够在这些客观因素下,把自己能做的做到让自己满意,问心无愧,我认为已经足够,所谓尽人事,听天命吧!而错过终究不能再弥补,能做的就是汲取教训,以一个乐观的态度,把握今天的时间,做好明天的计划吧。
- 最后,当然是感谢栋哥,感谢刘乾学长,和emmmmmmm,考拉?小吴?(尬了)学长,还有为这门课付出努力的各位老师,长辈们。谢谢你们!