去年下半年到现在,因为公司人员流动,也有好几个新进的员工分给我来带领,也有刚从学校出来的,在和他们交流的过程中,不由的想起自己刚刚进入这行的一些感想。
记得自己当初写过一篇总结的,我想这些对于刚出校门没什么工作经验的程序员应该会有一些帮助,但是却怎么也无法在csdn博客列表中找到这片文章。
后来无意中发现它竟然跑到了我的回收站中,我已忘记是因为什么原因使他跑到了这里,但是我想恢复的时候又发现有点坑的是,csdn回收站的东西无法恢复,因此只好重新发表了。
以下是当时的总结:
从学校走出来,转眼间就过去三四个月了,在公司的这几个月来,终于在最近几个星期迎来了第一个正式的开发项目,确切的说,是项目迭代。
截止到今天,这一轮迭代已能算是基本完成,虽然分到自己的任务并不是很多,甚至可以说非常少,但是从中得到的收获依旧是巨大的,这大概就是所谓的实践出真知吧!
在培训学校学了四个月,感觉学了很多东西,但是一直迷迷糊糊的,连书本上的许多习题都不能独立搞定。每每看到一个小程序的代码的时候,总感觉非常的简单,但是当只是给自己一个需求让自己找思路的时候,却又总是感觉无从下手。
而来到公司之后,或许是因为不一样的气氛的缘故,在不断的学习的过程中,当我再回过头去找一些以前没有做过的小习题时,居然很是惊讶的发现并不是之前看到的那么难,解决思路也都像是原本就有一样水到渠成。
或许这就是积累的力量吧,坚持走下去,就会有很多事在不知不觉间发生了改变!
在这一轮的迭代中,我只负责一个查询功能的实现,整体比较简单,只是对查询出的结果进行处理的过程看似有一点点复杂。因为是第一次独立的开发,所以在这个过程中犯了一大堆的错,思路变了又变,代码改了又改,也正是因为这样,让自己才获得了很大的收获。
这个小小的功能,代码被我重写了好几遍。刚开始的时候,因为对mongodb数据库的完全陌生,所以只是简单的套用别人的查询语句得到一个自己看不太懂的结果,然后进行了一系列的变换,最终把结果变成了我所熟悉的字符串和list集合,再在这个基础上进行处理,最终得到我想要的结果。
结果最终是被我弄出来了,很是兴奋,但是经过高手的检查之后,告诉我的却是这样的写法太不可取了,原本应该很简单的实现不该被弄的这么复杂。于是乎,在高手的指点下重新设计思路,完全摒弃了用字符串来处理的想法,于是几乎整个的代码就都成为了废品,只能重头再来!
不断的查资料,不断的询问,不断的尝试,一两天的煎熬后,终于又成功使用第二种思路得到了我想要的结果。然后反反复复的检查了很多遍,再次确定似乎是很符合要求了之后,我便又找来了高手给我检查。
满心期待,但结果还是不符合要求,原因是我们的web项目使用的是springmvc结构,而我的代码处理逻辑几乎是全部都在dao的实现类中一气呵成了!
对于高手的点评,我是心服口服,因为对于mvc三层结构,以及controller、service、dao这三层,我在培训学校的时候一直都没有弄明白,一直到现在开发的时候我都分不清该怎么用。
高手告诉我说,dao中只需和数据库打交道,得到了数据库中的结果就ok,然后主要的处理逻辑在service中,service中返回的结果要能够供别人调用,最后返回的结果的最终处理放在controller。
于是,再次整理思路,把dao中的代码进行分解,然后适当的放到另外两层中,再进行数次的调试,最终又成功迎来了我想要的结果。
我想,这下应该是可以了吧!我在本机上测试了无数次了都没有任何问题,应该算是完工了吧!但是当最后和前台一联调才发现完全不是那么回事,前台无论发送什么样的请求给我,我给他返回的竟然都是“message:没有数据;result:success”!
这是一个多么令人沮丧的结果,尚差一步,但就是尚差一步!于是只能再次拼命的分析,绞尽脑汁的测试。
但是结果却是不尽人意的,我怎么想,怎么测都觉得应该是没有问题,可是他结果偏偏就是有问题,于是我只能是不停的抓耳捞腮!
这里是公司,不同于在学校,结果出不来不能就这样了,再没办法也要想办法!于是在最终感觉真的是黔驴技穷的时候,我便只能又找来了高手。
结果,高手随便瞄了一眼就找到了问题所在,这让我长久的折腾更显得徒劳!原来问题只是我在接收前台参数的时候多加了一个@requestbody的注解,我以为接收参数就要这个注解,而实际上这个注解并不能这样乱用!
在高手的再次指点下,我删除了那个注解,结果tomcat一启动,页面一刷新,想要的画面就那样神奇的出现在了界面上,这时候真是感觉颇为无语,说不出感觉的无语。
和前台联调成功,这个任务算是基本完成了,这个过程中,初步清楚了mvc,初步懂了mongodb数据库,初步明白了公司项目开发的整个流程,也初步掌握了debug调试。
综上等等,在这一次项目中,最大的收获应该主要有两个,第一个就是了解了公司正式项目的基本开发流程,使自己刚进公司时的忐忑心理变得略微踏实了一些。
总结一下,大概的流程应该就是这样的:
首先由需求人员向项目组提出需求,然后给项目组的所有人进行需求讲解,大家一起探讨需求中各项细节的可行性。
当开发人员和需求人员一起确定需求没有问题的时候,如果有时间,可以让开发人员进行一次需求反讲,在需求和开发都确认没有问题的时候,需求便算是正式定下来了。
需求确定以后,开发人员进行分工协调,然后订制开发设计概要和API,后端API中一般包括一些接口,需要的参数,还要和前端一起确定好访问路径,需要传递的参数以及返回给前端的数据格式。
在设计api的过程中,前后端各自设计好以后,要召开专门的会议互相讲解,在讲解讨论的过程中达到相关意见的一致,此过程中测试人员也要参加。
当api也都确定好以后,开发人员正式开始开发,测试人员也开始写测试用例。
在开发人员写代码的过程中,要针对自己的代码进行单元测试,同时需要写好单元测试文档,在测试的过程中不断的修改和优化自己的代码,以保证逻辑更严谨,执行效率更高,代码更整洁。
然后,在前后端各自都测试并完善好自己的功能点后,前后端人员一起进行联调,进一步确保功能没有问题。
如果上一步骤也都没有问题以后,代码就打包部署到测试服务器交由测试人员来专业的测试,进一步寻找问题,以求最终的程序更加完善。
这一次的开发基本步骤大概就是这样了,那么第二个收获就是学会了比较正确的开发态度。
之前培训的时候,可能是因为环境不一样吧,那时候遇到一个习题或者是一个需求的时候,都会一开始想一阵子办法,当一段时间的努力还是无法解决问题的时候,通常就会忍不住去看看参考答案,然后在参考答案的帮助下,自以为找到了自己的思路,然后会看似成功的完成代码,而这样的后果是,其实并没有真的得到该有的收获。
而这次真正的开发中,没有参考答案,也没有做不出来就不管了的说法,无论怎样都必须想办法得出想要的结果,正是因为这样,才使自己在开发中得到了与之前完全不同的收获和感悟。
人生有许多的第一次,第一次总是让人记忆尤深!第一次之后还会有无数次的其他经历,许多事只有走下去才知道结果如何;许多事,只要不断的走下去,就会有意想不到的收获!实践出真知,行动得结果,空谈会误国,实干才兴邦!在理论中实践,在错误中成长,在失败中总结,在跌倒中爬起,坚持不断的走下去,学下去,这世间终究会有一片属于自己的天空!
路就在脚下,坚持走下去,以编程书写人生,使代码产生力量,用软件展现价值,让程序推动梦想!!