这个暑假,我很有幸到苏州新宇软件公司参加实习,这是我第一次在正规公司里进行学习实践已有的知识,整个实习虽然很短,仅仅只有一个月的时间,但是我却收获了在学校根本没有的很多技术知识,管理知识以及交际能力并且亲身经历了软件工程方法中的敏捷软件开发流程,还认识了不少软件行业的朋友,从他们身上学习了很多经验,总体收获很大。
刚进去的时候我被分在了SOW5组别,他们正在做的项目名叫:STAT,一种关于硬盘数据读写与测试的软件。整个团队有12个人,5个测试人员,7个开发人员,当然,我加进去后变成了第8个“开发人员”。这个团队开发软件的方法是软件工程里的敏捷软件开发方法中的Scrum方法,一开始我就先了解了下这种方法的规则,流程以及特点:
• 组织小型团队以达到“沟通最大化,负担最小化,非语言描述、非形式化知识”。
• 过程对技术和业务变化必须具有适应性,以“保证制造具有最好可能的产品”。
• 过程生产频繁发布“可检查、可调整、可测试、可文档化、可构建”的软件增量。
• 坚持在产品构建过程中进行测试和文档化。
• Scrum过程提供“在任何需要的情况下都能完成产品的能力”。
Scrum将整个项目分成很多Spring,而每个Spring里都有很多的User Stories,每个Stories里又分为很多的Tasks,开发人员就自行分配各自的Tasks,每个Spring的周期是一个月。而且这种Scrum方法规定了一项很重要的任务:每日15分钟例会。例会上,团队所有成员要回答3个问题:1。昨天做了什么;2。遇到什么困难;3。今天的打算。当然,这个不是问题,最主要的是,我们都得用英文来进行日常交流,开发人员里有一个人名叫Anatoly,是俄罗斯人,不过亏好英文讲的很清晰,所以这次实践不仅是技术上的实践,还是对英语口语的提高的实践。
在第一天用英语做完介绍后,给他们留下了一个好的印象(只不过是前天晚上提前写了背好的),我的任务暂时就是看看他们已完成模块的代码,了解整体。他们的编程环境是Visual Studio 2008,以C++为主要语言,python为辅。初次看他们的代码,感觉就是不一样,因为全是“::”(作用域操作符),不像在学校,仅是简简单单的代码,这里用的都是库,除了STL(标准模板库)以外,Boost库居多,所以我只能先去看Boost库,先问了身边的David如何学习,他就说去看文档,让我去boost.org看文档,结果我一进去,全是英文的,再想想他们平时的交流,都是英文,程序文档、注释也都是英文的,心里就想,英语果然很重要。
公司里提供了不少活动,每周四都有英语讲座,周五都有技术讲座,可去可不去,作为实习生,我就都跑过去听听看,原以为周五的技术讲座的是中国人,讲的应该是中文,结果,还是英语,不过大部分都是能听懂的,这样,从周一到周五,都要用英语洗耳,对于自己也是一个大好的机会在这种英语环境里进行锻炼。
我们的SOW5项目组的与客户的电话会议在每周二早上8点,因为客户是印度人,相当于他们的周一晚上下班时刻,电话会议里,所有人都要向客户叙述上周所做的事情,以及项目上遇到的问题,再进行需求上的交流,我刚进去的时候恰在进行Spring 4,项目组正在做的有User story 67-90。所以会议里听到的尽是些In story ..how,…当然,在这种会议上,我只是在边上听,并不实际参加讲话,亏好我没参加,印度人口音太重,几乎听不懂。
社会的确就是社会,可能这次我的机会太好了,遇到了工作中的一对情形以及罕见的情况。第一是招聘,公司在招聘人,在同一个办公室里的其他SOW,有人去面试了别人回来后说了下心得,也就是根据简历大概聊聊,如果技术过关了,再看看他的沟通等能力如何。第二是辞职,并且就发生在我们SOW5,就是刚才提到的David,是个研究生,他的技术很不错,尤其是对Boost的应用,我好多不懂的地方都是请教他的,听说是被别的公司高新挖走了。不过就是因为他的辞职,从而出现了罕见的情况:就是他对我们整个开发人员进行Code Review,因为在Network模块都是他写的,而从测试组的反应,这里的bug也是最多的,但正是由于他的离开,他要将他的代码讲给我们听,思路,算法,各种对象的用途,好让其他开发人员更好的理解,也让我看到了这么多代码是如何“练”成的,但还是英文,原来用英语表达自己的代码,还是很简单的,就是this/that means..。
很幸运,在实习的最后一天,也刚好是这个Sprint的向客户演示的时间,说实话,这个演示的气氛很紧张,毕竟,通过远程登录还有电话,客户边看我们的PPT和运行,边听我们演示解说,还不时提出问题。当时特别是由于一个同事口语不太好,从而太紧张,操作频繁失误,客户还以为是我们的软件有问题,后来经过Anatoly的解释,才稍微好了些。
至此,我的实习“圆满”结束,至于给圆满打上双引号是因为,整个实习我并没有对这个项目作出编码上的贡献,因为是商业项目,容不得我这种不成熟的实习生来小试牛刀,况且,我大二刚结束,专业课还没学,数据库,操作系统等等知识只是了解,尤其是进程,线程,开解锁等思想并没有熟练掌握,更不用说用代码去实现了。然而,我收获的却远不止这些,首先,最大的受益就是经历,经历了真正的项目的运作,流程,还有对未来学习的考虑,该学什么,该怎么学,自己都有了一些想法。第二,就是对英语的认识,虽然六级刚得知过了,以为很厉害了,其实,这只是开始,学英语,最后就是为了去说,去交流,否则,那只是一张空纸。
要交的报告~,必须得达到2000字,有些废话就不管了哈,就和大家分享下实习的经历~