初入江湖,门派之争
有人的地方,就有江湖,有江湖就有门派。江湖里门派众多,比较出名的有少林、武当、峨眉、华山等,而我选择了……
2016年3月,我离开了校园,来到了深圳这个寸土寸金的地方,开始了人生的第一个实习工作。那时候所在项目组的工作其实已接近了尾声,没有什么事情可做。每天过来上班就是喝喝开水,看看文档,然后听听技术总监吹嘘他当年的丰功伟绩,就这样维持了三个月。我觉得这样的工作与我预想的完全不一样,没有拼搏没有干劲。于是在毕业之后,果断拒绝了加薪留任,毅然地选择了辞职。
然而理想很丰满,现实很骨感,离职之后的路并不好找。因为性格比较内向,多次面试碰壁。从7月到8月,我花光了身上的所有积蓄,心里也慢慢的产生了后悔的想法,当初要是没有离职多好啊。然而世上没有后悔药,生活还要往前走。终于,在几经辗转之后,我被东鹏特饮录用了。
这时我的工作职责是负责泛微OA系统的集成开发与维护。因为大学里学过java,一开始的工作规划也是java开发方向,所以这份工作也是蛮符合心意的。但是没想到还没有开始,这份工作就已经结束了。当时公司刚上finereport不久,有两名帆软员工在现场实施项目,合同期即将结束,而我们公司这一块还没安排人员负责,于是在一次部门会议上,我就被安排负责帆软报表项目开发,那是我第一次听到finereport这个名词。就这样机缘巧合之下,拉开了我与帆软之间的故事序幕。
江湖历练,方兴未艾
欲练此功,必先……江湖里每个大佬的练成,都有一个挣扎的过程……
刚开始接触FineReport的时候,给我的感觉就是“这不就是一个excel吗”。
FineReport的入门真的是太简单了,对于一个计算机专业的人来说,几乎是一拿来就可以上手。我花了一天的时间,看了基础视频和帮助文档初级教程,然后就开始做任务。初期的任务是关于EHR的一些报表,周报、月报、离职率、留存率等,这些工作都很简单,我也顺利的完成了。
这个时候我的心里还是很犹豫,能不能在这条路上走下去。在我的内心深处,还是希望有一天能够重回java开发的道路上来。很多个下班后的晚上,我依然在电脑里敲打着java代码,琢磨着springMVC,在博客里记录收获的点点滴滴。
但我还是坚持下来了,然后开始接触erp和鹏讯通系统。这时候我发现它与之前所做的报表截然不同,不再是冷冰冰的数据,而是企业命脉的体现。如果你不了解公司的业务逻辑,根本无从下手。于是一遍遍的跟相关部门的人沟通问题,整理需求。在这之中,我也开始思考,数据究竟是什么,有什么意义。对帆软提出的“让数据成为生产力”也有了一个模糊的认识。
在接下来的项目中,又接触到微信红包项目的报表开发。这是我第一次接触大数据级的项目,单表数据日增量300万+,基本的sql处理已经不能应付了,我开始学习使用kettle来处理数据。这又是一个没有接触过的工具,网上相关的资料和视频也不完整,相关的书籍也找不到,只能在百度那里搜索到一些零零散散的知识点,然后自己去摸索一个个功能的使用。在这个过程中,亲眼见证了一大堆毫无意义的数据在自己手里转化成一个个关键指标。
微信红包扫码用户数6000万+,总扫码数12亿+,而且还在夜以继日的快速增长着,这些数据如果不经过处理,那么就丝毫没有意义,甚至还虚耗内存。但是经过处理,它就变成了帮助我们关键决策的一把利剑。通过分析消费者各时段的扫码量,可以创造更精准的广告营销。通过分析产品货龄,从而帮助企业优化调整铺货策略,使整个供应链的周转效率加快,降低过期和质量风险。通过扫码数量推算实际销量,可以实现对当地销售业绩预测以及对备案计划等起到了重要的参考价值。
这时候我也逐渐地认同了帆软,开始喜欢上了这个工具,决心深入的了解各个功能,因此我的能力也得到了不断的提高。
有一次领导提出了一个需求,要做一个防窜货报表。其中的一个难点是用到商户会员系统中的码表和扫码表,将扫码表的数据逐条遍历然后通过我们内部的一个算法找到对应的码表,再从码表里查出对应信息。当时负责这个系统的同事一听,拍拍手说“这个需求做不了”,但是我觉得还可以抢救一下,于是问他要了算法的代码,经过仔细的研读和分析之后,我有了一个大胆的想法,使用帆软的公式实现算法逻辑。后来几经试验,终于成功了。但是性能上不是很好,于是我开始寻找合适的替换方案,终于在kettle里使用java脚本来实现了。
在这过程中,我的能力也逐渐获得了领导的认同,从2016年底到2019年初,我收获了一次升职,多次调薪,并获得了公司的年度优秀员工。但更为重要的是,我从此坚定了自己的职业规划,不会再在内心徘徊。不管前方的道路有多难,我将在数据分析的路上继续奋斗。
2019年初,由于个人发展,我从东鹏饮料辞职,现就职于现代教育。
华山论剑,群雄争霸
江湖里有那么个地方,群贤毕至,高手云集,众人可以尽情展现自己的才艺,得到天下英雄的认可……
一千个读者就有一千个哈姆雷特
同样是finereport工程师,面对同一个问题,也可能有一千种想法,一千种方案。初学者可能想着的是如何解决问题,而优秀的人在想如何更好地解决问题。
2018年,我开始活跃于帆软论坛,加入了角逐问答的行列。
如果说,finereport如何入门最快,那无疑是看基础视频和帮助文档。如果说,如何快速深入掌握finereport,则应该是项目实战和问答。项目实战是技术+业务的结合体,而问答,则是脱离了业务,纯粹技术的体现。中国的应试教育非常强大,无数的学霸大佬都是在疯狂的刷题中成长起来。而帆软的问答,无疑是一个巨大的、实时更新的免费题库。不,是一个解答有回报的题库。
在问答里,隐藏着很多的大神,我常常为他们的答案惊叹不已。有很多问题的解答角度是自己从来都没有想过的,也不会去想的。遇到这些答案,我通常会拿来跟自己的进行比较,去劣存优,然后通过不断的学习,将它们转化为自己的知识点。而遇到暂时无法解决的问题时,我会把它们添加到收藏夹里,等以后有空了再翻出来看看。相信通过时间的积累,我将有更强的能力应付这些问题。
有一次遇到一个问题,要求实现点击当前分组时,当前分组数据的顺序改变,其他分组的顺序则保持不变。这几乎是一个不可能实现的问题,因为不同分组的数据,其实都是通过同一个字段扩展出来的,怎么可能实现一部分顺序改变,而另一部分不变呢。这令我百思不得其解,而社区里也有很多人都说不能实现。但我没有放弃,下班后一个人在办公室里默默的研究着,因为我在网页上见过类似的效果,而夜晚的静谧也为我打开了一条思路。我用一个数组里的下标来对应不同的分组,通过改变指定下标的值完成指定分组的顺序改变,最终实现了这个效果。这个方案也被我记在帮助文档《分组内排序互不干扰》里面。
就这样日积月累,我也完成了华丽的转变。从一开始啥也不会的小菜鸟,到现在已经可以快速的响应别人的问题。更难得的是,在这之中,认识了论坛里面的许多好友,也得到了大家的认可,而由于全年的努力,官方也为我出了一篇专访。
归纳总结,秘籍传世
一代宗师,闭关苦修,终悟绝世武功,然不留下秘籍,竟至失传,悲乎哀哉……
读书的时候,经常喜欢写点小东西,作文和周记也经常被老师拿来当堂朗读,文章上过校里面的专栏,也获得过市级的奖项。
毕业之后忙于工作,偶尔也喜欢在博客分享一下自己学习的过程。
一直觉得,写作是一个重新整理自己思路,归纳总结的过程。很多东西,也许我们当时记忆深刻,但是过不久便忘了。但是如果我们有过整理和记录,却是很难忘记。即使一时记不起来,回头看下当时的记录,记忆便一下子跃然于纸上。
在工作中,有一次用户反馈查询报表时报错,具体的报错信息是:错误代码......列表中的最大表达式数为 1000。报错信息很清楚,问题很容易定位,是下拉复选框选中的选项超过了一千个,导致Oracle的In语句查询的时候报错。但是怎么解决呢,当时查阅了帮助文档,确实有一篇对应的解决方案,先是用java自定义一个函数,然后在sql查询中嵌套帆软公式和自定义的函数,达到分隔字符串的目的。
当时看完这篇文档,脑子里只有一个想法,“太麻烦,不想动手”!但是问题不解决不行,于是只好自己想办法。这时我突然想到,可不可以用or语句来改写in语句呢,想到立刻便去验证,结果出人意料的简单,只需改一下sql和下拉框返回值的分隔符就能实现。
我把我的想法跟领导说了,当即收到了表扬,心里面很高兴,就想把解决方案记录下来,这时我了解到,原来帆软的帮助文档是人人都可以参与编辑的,于是我发布了自己的第一篇帮助文档。
后来每当有新的想法和方案,我都会将它整理下来,发布到帮助文档上。截至目前为止,已经发表了48篇文档。相信通过整理和总结,可以巩固自己的知识点。也希望自己的方案,能够给别人以帮助。
兼收并蓄,和而大同
天下武功出少林,武学之间,本没有派系,唯有取长补短,方能更强……
FineReport,不止是FineReport。
帆软的使用过程中,涉及到的技术很多,sql、js、java、html等等。选择帆软,并不是与编程分道扬镳(并不会解决中年脱发烦恼)。好的编程功底,会在报表开发的路上助你一臂之力。
而今的我,早已不惧报表开发过程中的种种问题,甚至还能享受其中带来的乐趣。但是依然觉得,需要学习的知识还有很多,比起那些优秀的人来,我还差得很远。选择了这一行,就注定要学习一辈子,奋斗一辈子。
但我不怕奋斗。未来的路还很长,我将不忘初心,砥砺前行。
期待与你一起进步!
|