挨踢部落故事汇(12):习惯成就技能提升

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了挨踢部落故事汇(12):习惯成就技能提升相关的知识,希望对你有一定的参考价值。

作为一个普通的芸芸大众,资深宅男,码农,狂爵的生活除了工作之外,还喜欢看书,听歌,静坐。对政府项目深有研究,目前是CMS核心开发团队成员,普通程序员组长。狂爵13年毕业后就开始从事Java CMS产品开发,目前所在公司是航天集团下属单位,开发的项目都是政府项目。他参与开发过国家某保密单位内网(三级等宝,信息迁移,数据摆渡,信息密级权限),国家电网内网升级改造,中工网系统WebLogic集群升级,水利部(财务门户、水资源监控应用门户、单点登录系统、信息门户),国防科工局内部福利系统(伪电商)项目及Java CMS系统等。

技术分享

狂爵·Java CMS产品开发

年少轻狂

决心学习编程是一个偶然的机会,狂爵高中时在电脑上胡乱的输入一串地址,巧合的进入了一家IT培训中心的网站。简单了解后,他深感其神奇,就此与IT结缘,打算以后报考计算机专业(其实当时是被那广告上打的高额工资所诱惑了)。后来学习的过程同广大学生一样,三分钟热度一过就无聊至极,三天打鱼,两天晒网,如此浑浑噩噩的过到毕业。

第一份工作是在13年12月份才找到的,刚刚求职时狂爵意气风发,感觉自己十分牛x,从要求10K的工资一路狂降到4k,期间不断复习所学,才有了第一家公司的offer。在那近半年的求职生涯中,狂爵遭到了社会大学的无情抨击,许是自尊心作祟,他曾默默计划毕业后就独立生活,不再向家里伸手(家是农村的,生活本就不易),故此那半年期间他过的极为艰辛,看着钱包一天天变少,却不能向家里求助。对当时的狂爵来说,已穷途末路,为了这得之不易的机会,他只能奋起直追,一切的缘由、后悔已无关紧要,目标只有一个:生存。

废寝忘食,全心投入

从参加工作进入项目组开始了解,狂爵参与开发的第一个项目是全国工商联500强企业调研系统。这个系统需要生成每年的调研题目,统计调研数据,用DataGrid展示出来,有200+列(每年的题目数量不定),要求实现用Excel导出,报表显示各种统计数据。入职第一天,狂爵办完手续就去了客户现场进行开发工作,分配给他的是统计报表模块,当时使用JasperReport报表组件,然而他之前并没有接触过,这对初入职场的他来说压力山大,有很多地方需要学习,为了快速找到一席之地,他喝了半年的红牛,每天只睡6小时,其余时间要么熟悉项目需求,了解各种统计项的计算方式(总资产周转率、资产负债率、销售净利率、资产收益率、净资产利润率、劳动生产率、人均利润率等等),要么研究分配任务需要的组件JasperReport,学习相关知识,攻克iReport报表过程中遇到的种种问题,包括获取当前时间及展示格式、属性为空判断、使某个字段中的数据在特定条件下才打印出来、嵌套子报表、自动换行、高度自动、分页设置、字体设置、中文乱码、报表变量、对报表内SQL进行动态值传递等等。编写报表内SQL语句,为满足一张报表的信息展示,需要对多张表进行各种复杂的SQL查询,用到很多高级SQL查询,直到项目上线。半年时间近200份报表都是狂爵独立完成。后期他也参与了其他模块的开发,DataGrid的展示,excel导出等等。这半年是他人生中转折的半年,他的努力,同事的帮助和信任,都是他步入社会的一笔财富。这半年让他拥有了可以在这个社会上生存的资本,掌握一技之长,拾起过往所学,更重要的是生活所迫让他认清了自己及这个残酷的社会,而不是初出茅庐时的狂妄自大,不知所以。谈及到每天6小时的睡眠,狂爵觉得这已经很奢侈了。“人,都是被逼出来的。在最初的一年中,我做的不是工作,而是把工作当作事业来做的。所以废寝忘食,全心投入。”

关于报表和开发工作中遇到的问题不计其数,狂爵整理了一些笔记,原创都写在博客里了,点击查看>>。好习惯便从此开始。

养成好习惯,快速提升开发技能

狂爵的开发技能是在不断学习中提升的,基本流程如下:先学会使用,知道都有什么功能;然后熟悉程序,知道每个包、文件夹里面对应哪块功能的程序;再阅读具体功能模块的代码,看看功能的实现,以及同其他功能模块是否有关联影响;最后看数据库表设计,知道每张表都是存储的什么数据,每个字段是什么意思,字段内的值代表什么,如状态字段status的1234值各代表什么。这套流程下来就有了大概的认知。在此基础上进行后期的开发或功能优化就比较容易了。

三年多的工作经历,他也养成了一些工作上的习惯:

1、代码有详细的注释,方便生成API(包括实体字段、各个层的方法作用及参数含义,数据库类含义及字段说明等);

2、统一代码Format(遇到过一团乱麻一样的代码,当时的心情是悲痛的);

3、遵循命名规范(有遇到a,a1,a2,b,b1,b2这样的字段命名及aa(),bb()这样的方法命名又没有相关注释说明,有种砸电脑的冲动);

4、 SVN提交需有详尽的修改日志说明(这点很重要,团队开发,说明你的提交修改了什么问题,或作出了什么修改,会对别人和你自己都省很多事情,毕竟你不是电脑,不会记得所有的修改);

5、每天下班写工作日志,总结分析一天的工作;

6、写笔记记录工作中遇到的问题,有的问题已经有先驱者躺过雷并向大家分享了问题的解决方法,他会将问题和解决方案纪录在个人笔记中,对于自己躺的雷和一些重要的问题会发布为博客;

每学习一项新技术,狂爵都会按照这3个步骤来学习:

1、学习一个新的工具可以参照其官方的文档和Demo,一般都有提供,如果没有可以在网络上寻找资源。

2、在本地实现Demo的功能效果,尝试理解其缘由。

3、尝试在Demo基础上实现高级的功能,在没有文档API的情况下,需要不断的实验,查找资料,或直接阅读源码。

有些高级的需求还需要修改源码进行操作,比如百度的UEditor编辑器,上传机制会将图片附件统一保存到一个文件夹。UEditor的上传机制不符合CMS的要求,CMS每篇文章的图片、附件,会保存在”/站点id/栏目id/文章id”文件夹下,有时上面还有日期的文件夹。这个就需要对其源码进行修改,查找跟踪其上传保存逻辑代码,实现自己的逻辑,这就是一个学习的过程了。

在开发中表现突出,得到Boss赏识

狂爵的职场经验只有一点,认真干活。对任务和自己要有个估算,每天他总是超额甚至完美的完成进度,如果工作期间没有完成,自己加班搞定(实在搞不定找同事或领导)。不要耽误整体进度,不要为自己的不行找理由,不要强加自己的主观想法于代码中。利用闲暇时间和项目开发相关人员讨论想法,毕竟很多需求都是用户的一个模糊概念,不是所有用户都懂技术,他们只会在你做出一版后,在其基础上表达自己的不满和所需。而这些往往在程序员看来是比较糟糕的问题。在充分了解用户意图后可以根据自己的经验或和同事讨论来得出合适的解决方案,同用户协商。

这些习惯为狂爵的工作带来了突出表现,效率大增。恰恰是狂爵每天超额完成任务,公司对他很满意,领导直接找到他给加薪,就这样狂爵半年内工资陆续涨了50%,并且调入产品开发组,进行学习和培养。他很珍惜这来之不易的机会,在之后的的产品开发和支持中,狂爵勤于思,敏于行,能力再次得到提升,和老员工相差无几。公司又给他涨了60%工资。试用期直接全额工资,一个月转正。至今回忆起来,狂爵仍然觉得当时的他,需要高强度工作来融入职场,找回自己荒废的时光,用现实的经验充实他自己,毕竟除了向家里伸手,当时他已无路可走。

但如此高强度的工作非常累,以至于他现在已经做不到刚入职场第一年那种劲头了。狂爵认为那样只适合刚刚步入社会进入职场的程序猿,需要借此寻找自己的方向,找到自己的价值所在。如今的狂爵,只是完美的完成工作(其实是生存无忧了,人性的懒惰发作),然后用剩余精力去学习更多的东西。通过这几年的工作及CMS开发经验,狂爵在闲暇之余尝试写一个自己理想的CMS产品,目前还处于偶尔想起时才会开发的状态,他已经搭好框架,开发了站点、栏目、信息等一些基本功能。

生活总是这样的平淡如水,能耐住寂寞,做好自己就行。程序员的本质就是解决问题,那么一切的因由自然也就是自己的能力了。一时的不得意也许只是工作的考验抑或是在别人眼里,你并不如你以为的那么优秀。撇开“你以为,你以为的,就是你以为的”,正视自己。

有一种落差,是你配不上自己的野心,也辜负了所受的苦难。狂爵以此座右铭来时刻警醒自己,在开发路上挑战极限。

如果你也愿意分享你的故事,请加51CTO开发者QQ交流群 312724475联系群主小官,期待你的精彩故事!


以上是关于挨踢部落故事汇(12):习惯成就技能提升的主要内容,如果未能解决你的问题,请参考以下文章

挨踢部落故事汇:入行IT自学成才

挨踢部落故事汇(18):程序猿与代码的基情

挨踢部落故事汇(11):编程起步从0到1

挨踢部落故事汇:程序猿的跳槽感悟

挨踢部落故事汇:女程序媛的开发梦

挨踢部落故事汇(16):技术人疲倦期的最佳实践