那年 7 月份到深圳,信心满满的以为自己找工作会一帆风顺,谁知这成了一部血泪史,带着一份 servlet+jdbc 做的毕业设计到深圳,简历上三三两两的写了“项目经验”:图书管理系统、养老院管理系统,当时还完全不会 SSH(struts2+spring+hibernate),然后自信满满的到求职网上投简历,投递了两天,发现并没有任何用……
这家公司(下面称为公司)也是运气进来的,当时是拿着自己的电脑,简历,一份毕业设计《养老院管理系统》,非 SSH 框架技术,面试我的是公司的前端大师,也得亏运气好吧,当时做的界面和公司的后台系统是差不多类型。大概 10 天后,可能出于培养和解决当前用人问题把我招进来。
那年 -07-28,正式进入公司,由一位同事给我介绍公司的整体业务,把整个主要流程讲了一遍,然后就算入职了。
9 月份,公司接了一个大项目,来了四个人,那气势真是足,提出的需求真的非常多,非常苛刻,公司也是给其可以实现。我参与了进来,当时的项目经理也是非常好,看我刚毕业,也不会 SSH,交给我一个非常简单的模块,还记得是几个复选框添加到界面,然后让操作的时候这复选框要有作用。当我看了需求文档,真心不知道如何下手,然而项目经理以为我可能一两天搞定,结果搞了一个星期。公司框架导下来各种报错,不会框架方面调试!但也只能硬着头皮上,虽然那些基本的编程能力还是有的,毕竟也是独立的写完毕业设计,但是 SSH 开发真的不会,到后来几乎都是旁边的大神帮忙搞定的,真的汗颜。不过也通过他帮忙,对整个流程稍微了解了,总算是交了差。经过几天的时间,也算是熟悉了。后来获取了项目经理的一点信任,交给一个完整模块,可以从页面到后台交互都能完整的操作一遍,欣然接受了,花了个把小时把这个功能的需求写出来,交给项目经理,审核通过,然后交给我去做。九月份还有半个月我就在这上面耗着了,后来也是大体将这个功能完成了,也算松了一口气。
九月底安排去武汉出差,到武汉来帮忙打杂,做一些项目的修修补补工作。当然,个人也乐意这样的安排,反正都是学技术,还有补贴。首先把环境搭建好,然后将项目跑通,这里说一下,公司的项目,从 svn 上导下来之后,还需要很多步骤的修改,才能跑通,真的很头疼(现在这家公司,导下来直接跑通,方便很多),就开始了正式的 SSH 学习之旅。
在武汉这边,任务是做报表,写周报,将所用技术总结成文,写的每一个步骤都非常详细,也包括所使用的工具的使用等,因为公司周报要求不是很规范,只要有内容就行,但是我敢肯定,我的周报是当时开发人员里面写的最好最多最完全的。因为周报,能把所用技术不断的巩固,知识点不断的复习,把 SSH 框架的整体流程完全掌握,并且在 CSDN 发表了自己的简单的技术文章,自己也算是在技术路上启程了!
在武汉的这段时间,因为是做很简单的报表,趁着写周报的时间,把接触到的所有用到的技术:struts2、spring、hibernate、oracle、润乾报表、Dreamweaver、Secure Shell client、mysql、tomcat 等操作流程,接触到的业务需求,全部整理成周报,然后提交给公司专门收周报的工作人员,而正是这段时间,技术积累飞速提升。正是从这周报总结上获得了巨大的收益,希望都能有总结的好习惯!不断总结,技术才能变成自己的!
从武汉出差回来之后,在那年度年终大会上,代表着公司新人上台发言了。还抽奖中了公司一等奖(后来我听说是公司技术老总看我工资偏低,然后在抽奖环节做了“手脚”,感动 ing)
后来进入新项目开发,其实就是二次开发,只是把数据库,系统后台的结构全部进行改变。不管如何,这也算是一次机遇,无论项目大小,让自己知道要做什么,要去学习什么,要去获得什么,所以就非常激动的进入项目组,开始自己的零项目经验的开发!
最初,项目经理安排了一个订单修改的功能模块。公司订单这块真的非常的复杂,我敢说,很多的公司可能都没有这家公司的业务复杂。修改一个订单,非常的头疼,这才发现原来业务这块真的不擅长,非常缺乏经验。不知道要做什么,而且说得一些“概念化”的东西,听得一知半解,听完之后,就默默的点头,然后就去总结从项目经理那里讨论来的业务需求,然后一步一步的开始开发了。
当时,我们寻常思维的订单,无非就是根据产品的一种销售状态或者销售记录来获取数据库中的订单状态,这个订单的修改呢,其状态用四个表示数量的数据库字段来计算得出,然后又有各种组合产品、单独产品、组合产品 + 单独产品的信息修改,操作,真心非常之复杂,这过程就不再阐述。总之,通过这个功能学习到了:
▌ 1、通过业务融入到技术开发中,排开业务来开发的功能、项目,都是不现实的。初期不懂的业务、功能点一定要向同事、项目经理求助,然后理清自己的思路再进行开发,这样才能事倍功半!
▌ 2、技术层次,因为是个独立的新模块,这个功能涉及到了前端、后台的整体操作,不仅将后台的整体流程,从配置到开发独立完成,再到前端界面操作各种 js(虽然很浅,但是非常的实用),jquery 操作,然后将所用技术全部进行总结,这些再度成为我个人实际增长的技术点和能力,因此再次感谢自己的总结习惯!
▌ 3、开发过程中不要怕犯错。如果不犯错说明进步不大,亦或是在做重复的工作。只有犯错了,然后解决错误了,这样才能成长,技术才能得到提升。通过总结所有的东西都是自己的!
这个是项目中独立的一个开发模块,但是因为其业务的复杂,以及在前段后台的界面,逻辑操作,让自己得到了很大的提升(一个功能做了两个月),还好当初没有因为觉得难而放弃。
参与项目之后,因为项目组就四个实际开发的(后续走了一个,还有一个成了接受需求、测试等工作的同事),基本上开发由自己和另外一个同事在做,这个期间,还是不太理解完整的业务逻辑,虽然已经做过简化了,但是从自己做完订单修改功能后,才开始慢慢的了解,这期间也了解到了至少有 9 部分(线上、线下)的关联来实现主要的业务逻辑,因此自己的后续项目也围绕着这 5 部分来进行业务、需求讨论,并根据这些业务 / 需求来进行开发。
当时负责了 9 部分中其中的 4,5 个模块,然后参与了其他的模块的需求分析,因为都是关联在一起的,因此或多或少都在其他模块去开发过。
首先去完成的是线下功能,得去了解业务逻辑,得知道这是干嘛用的(再次强调熟悉业务),因为里面的逻辑太复杂了,在项目经理的谆谆教诲,抱着一知半解的心态,然后去做了,因为是二次开发,但是逻辑也有相应的变动,因此在以前的几千行代码上进行修改,当时哪里看过这么长的代码,然后里面各种调用其他类中方法,简直是受罪。但是呢,随着时间流逝,自己也从最初的完全看不进,到后来整个的那一块的模块读懂,并且修改了大部分的业务逻辑,现在想想也是挺有成就感的,这块的逻辑据说是公司的大佬级程序员几个负责不断修复完成的,然后我们就这样毫不留情的改动了。
改完之后,肯定要先单元测试,整了几个所谓“程序员能通过的测试用例”,然后去测试,很成功,没有问题(这种情况下很多情况是坑)!程序员的测试用例,简直到后来把自己坑的很惨。
把写好的功能交给测试部,然后测试部以用户角度去测试的啊,然后各种组合进行测试,提出一堆 bug,搞的头都大的不行,这绝对是个血的经验教训。
经过了两三个月的开发,总算也是项目进入尾声了,也终于把自己做的这个项目的整体流程,从需求 –pm 参与需求讨论、制定开发任务 – 开发者得到任务 – 开发 – 编码 – 单元测试 – 测试部测试,整个流程参与了下来,自己也是非常的受益匪浅,开发经验飞一样的上升(记住,我之前就说了我是一个爱总结的人,因此我的收获非常大)。
几个方面,这里就不多说了,反正一句话,完整的参与了一个项目,并且全身心投入进来,那么你的收获将会是非常大的。
以上基本上为自己在公司所经历的了,作为一年工作经验开发人员,最后再总结一下:
1、业务为主,理解业务,就能让自己思维清晰
2、初期不要嫌累和麻烦,做的越多,收获越多
3、不断总结,做的多不总结只能得到最常用的收获,但是做得多总结了,将全盘收获!
这里是程序员秘密聚集地,各位还在架构师的道路上挣扎的小伙伴们速来。“