虚心竹有低头叶 傲骨梅无仰面花

虚心竹有低头叶;
傲骨梅无仰面花.
——郑燮

不讲大道理,只说工作事
今天,2017年6月21日,曾经花了一两个月的时间,设计并且实现了一个数据处理的程序,做是做完了,可是一当用于生产,遍出现各种问题。主要问题有以下几点

问题的所在

1. 程序处理的性能
性能不堪入目。某当个大市的前期数据处理就需要两天。
2. 代码各种bug
总是有些深藏中的bug未被发现,在使用时才发现,从而需要急急忙忙的修改,并且数据又要从新生成
3. 代码的质量
代码质量很低,代码挺乱,需要重构的方法很多
4. 真的很难测试
程序写出来,是否满足需求,需要大量的测试,确实是比较难

曾做过的

1. 针对程序处理的性能
读写问题::发现在写的地方很花时间,有大量的小文件需要写,想进办法依然无法解决
spark处理:甚至想过使用spark完成,也做了一份spark的程序,使用集群处理,但是数据需要放在hdfs上读写,非常麻烦
2. 针对各种bug
平时一个人如何也发现不了问题,需要在使用过程中发现问题,解决问题
3. 代码质量
想过需要提高代码的可读性,想过重构,但是比较随便,只提取了部分方法。代码依然臃肿
4. 测试问题
使用小数据测试,但是由于数据复杂性,对于某些数据可能成功,对于其他数据,若格式稍有变化,不保证一定可用

这两天的碰到的人或事

c哥: 大神,我的项目负责人,现在带我的师傅。很多事都只有他才能处理,c哥做事极其负责,对于这个程序, 给予了非常多的建议与思路,可以说,这整个程序基本都是按照他的思路完成的,刚开始觉得,再难的问题,只要想通了,也就清晰了。
sf兄:高级工程师,低调大神,业务熟悉,善于优化, 协助我优化代码,sf听我思路,一下就能找到问题的所在,一看代码,立刻动手帮我把代码翻了个底儿朝天,刚开始挺不开心的,我的代码思路怎么的好,也不能从头到尾给我修改吧,逐渐的,我体会到了大神的用意,我之前的代码实在是太差了,一些最基本的性能的优化我都忽略,代码也不规范,比如map中,key能用int就不用string,经常需要拼接的字符串,千万不能随意使用string,尝试使用StringBuffer或者List,代码方法分散,做到真正的面相对象,主方法主思路,代码量不能多,多提炼方法出去。保证代码的清晰整洁,sf给我修改并且讲解大半天,真的是受益匪浅。
y总: 10多年的大神,总工之一,依然坚守在研发岗位,y总甚至提出了另外的一种处理方法,最主要的原因是我们对业务的不熟悉,y总使用的完全不一样的方法,目前觉得能极大的提高效率。
shihong:同事,朋友,差不多同时进公司,安排的任务基本是一起完成,合作非常愉快,这个程序是我们合作完成的,遇到不清晰的,我们便相互帮助,1+1>2

从这些人或事的感悟

  1. 虚心竹有低头叶 傲骨梅无仰面花, 向优秀的人请教,多他人的的优缺点。
  2. 最基础的知识还不够牢固。需要一步一步,脚踏实地的积累。
  3. 思维这种东西,需要使劲的去想,实在想不通,换一个方向使劲去想。
  4. 写程序之前,其实内心已经想好了需要如何写了,这时候,不要忙,先想想有没有什么问题,有没有更好的方法,真的全部想通后再开始码。做事也一样。
  5. 写程序,特别是做数据,先要知道数据源,先想好要如何测试,先想好可能的测试结果。
  6. 代码太乱,需要多看优秀代码,不断向前辈同事学习,不断思考自己写的代码,必须让自己的代码给其他人也能看懂。
  7. 多多分享,分享其实也是学习与复习最有效的办法之一
  8. 多感谢家人与同事,朋友。与同事愉快的合作,感谢他们提出的意见,不能太坚持自己的想法,先接受他人的意见,再看看和自己的想法有哪些不同,使用更好的,如果觉得自己的想法更好,可以提出来一起讨论。