软件工程项目个人总结——第八组成员朱池苇
收获
一、技术层面
在本小组项目的开发过程中,我主要作为后端程序员以及文书记录者的身份工作;在前端刚刚起步时也曾经作为前端程序员参与简单的前端代码编写。因此在前后端方面,以及文字处理方面,均有一定的技术上的收获。
1、后端
小组后端使用的主要编程语言是Java和Scala,隆晋威同学使用Scala,我、张世聪同学和欧阳炳濠同学则使用Java语言。目前我能对Java有了一定的了解,能够使用其编程并且debug。
除了Java语言本身之外,还了解了一些模型和技巧。比如:Actor并发模型,处理异步问题的synchronized、notify和notifyAll,使用request进行前后端交互,序列化与反序列化,静态类的使用等等。可以说是收益良多。
2、前端
小组前端则采用了HTML5+CSS+JavaScript的常规技术组合以及开源游戏框架Phaser.io。在前端刚起步时,付千山同学作为产品经理着重于调研、测评和反馈工作,导致前端程序员不足。因此我作为临时前端人员进行了简单界面的编写(主要是登陆界面)。因此掌握了一定的HTML语言。
3、其他
因为开发中涉及到大量的新技术,因此学会了如何看技术文档和官方样例。也接触到了stackoverflow这样的搜索错误原因的网站。
同时项目代码托管使用github,因此对git的了解和使用也有了一定的掌握。
我还进行了文字处理工作,因此掌握了markdown语法、燃尽图的做法等文书处理知识。
二、软件工程层面
1、代码风格:良好及统一的代码风格对于项目来说非常重要。特别在前后端交互时,调试需要通过服务器部署后才能进进行,debug变得尤为麻烦,而前端代码中细微的错误特别容易发生,浪费在前端debug上的时间不计其数。我在参与一部分前端debug后发现,如果我们养成良好的代码风格和习惯(比如<>的有头有尾,等号和赋值等等),可以减少非常多的debug成本。这是需要慢慢且刻意地去培养的。
2、结对编程:就像第一点说的,在代码量稍大的情况下,代码中一个小小的等号问题就可以花费3-4小时的debug时间。而这些问题大多可以通过结对编程的方式解决。在本项目中前端的一些bug就是由结对编程避免或解决的。
不足
经过一学期的开发,我发现自己在计算机软件方面还完全是个井底之蛙,许多技术还仅停留在了解层面,没有在实际的软件工程中运用过。且技术栈实在太浅,需要拓宽加深。
同时我对软件工程的一些主流模型、技术、框架和他们解决的问题知之甚少。也正因为如此,我无法成为架构师或者是项目经理。这也是我从组长隆晋威同学身上学到最多的一点,我需要更多地了解编程思想,而非埋头学习程序语言。
我需要成为一名程序员,一名科学家或者一名工程师,而不仅仅是一台打字机。