临河而羡鱼,不如归家织网。授人以鱼,不如授之以渔。不忘初心,方得始终。
研究生期间参与的企业项目坚定了益达进入IT行业的决心。那份执着与看待问题的思维,使他在开发路上愈战愈勇。在益达看来,处理问题的思维就相当于一个软技能,是学会了就不会跑掉的东西。问题的本质、触类旁通、借鉴思想,严谨性这些都是他的思维要素。遇到问题多思考,多问what,why,有耐心,不急躁,多沟通,层层排查最终找解决办法。
益达·大数据开发
学生时代脱颖而出
益达高考选择的是电子信息科学与技术专业,计算机学习占比居多。他从几乎没接触过电脑的完全小白正式走进了0和1的世界,慢慢学习了C,JAVA,HTML,Android等计算机开发语言。益达本科毕业后又通过保研进入研究生进修阶段,研究无线传感器网络数据聚类算法,SVM算法,神经网络等,通过MATLAB去实现,比较优劣进行改进。研究生期间益达参与了部分企业项目,根据项目需求自学了Delphi和MFC相关知识,项目实战过程使他获益匪浅。2015年6月益达研究生毕业,以Android开发攻城狮的角色进入到工作岗位,从此他离开校园,变身成一个职场菜鸟,开启另一种人生状态。
既然要做一件事,就尽自己更大的努力做好
初入岗位,自然是适应与学习,而这些主要是通过沟通和自学成长的。看老程序猿写的业务代码,成了益达第一步要跨过去的门槛,由于业务较大,代码量不小,需要花很多时间去学习。那个时候他接手的第一个任务是开发支付SDK,完全是益达独自一人完成的,当时他与其他程序猿各种沟通协作,询问查资料。git、51CTO、掘金、StackOverflow还有各种技术相关的论坛网站都少不了他拜访的身影。谈及到这个SDK任务,他印象最深的是微信支付问题,其他银联和支付宝的接口都比较好接入,容易测试联调,但微信支付接入就比较有坑了,不过在他查阅资料调整测试的不断努力下终于实现了。完成之后他并没有继续做SDK开发,而是应部门需要被转到JAVA服务器去做实时数据计算开发。
后台开发需要做数据统计相关工作,益达从接触Kafka、Storm等开源工具做起,更多的接触了Linux系统,在实践中不断学习到常用的各种命令,实现shell脚本的编写。服务器管理中使用nginx、haproxy等代理工具,自学netty与jetty的开发流程。由于唯一一位老司机离职了,导致storm集群、mongo集群、elasticsearch集群、Docker集群等维护工作也是益达一人接管。开发中益达觉得遗留下的elasticsearch统计对他们业务的针对性不强,所以他又在探索学习Apache Kylin和druid工具,不断提升IT技能来适配当前业务需求。
益达在如此强压环境下,并没有抱怨,在他看来,尽自己最大的努力做好一件事是对他个人价值的体现。
自学与反思,是开发的必备要素
益达在开发中碰到的问题不计其数,身经百战的他回顾走过的路,填过的坑,整理了以下6个方面,希望能帮助初入职场的程序猿们少走弯路。
1.代码方面,结构清晰,逻辑严谨,注释得当,方便自己理解以及测试定位问题,同时也方便别人理解看懂代码。
2.业务方面,一定要协调沟通并且理解到位,否则很容易和需求方产生各种问题,进而可能会有各种扯皮和更改。比如后台服务接口开发中,业务代码遇到问题也要及时和接口调用方进行确认,及时做调整。
3.基础能力方面:自学技能是一个很好的技能。如果对设计模式、数据结构等基础还不是特别明白,一定要去理解学习。可以结合开源框架学习,开源框架中一般都会包含多种设计模式和常用的数据结构,比如Android中的RxJAVA响应式编程,学习其中的思想。
4.资源方面,开发中要养成资源及时释放的习惯,尤其是JAVA开发,毕竟“Stop The World”并不是什么好事情。不用的对象等要及时清理掉。CPU、内存、负载等硬件资源也要做好监控工作。
5.性能方面,其实在写代码的时候就要有这方面的意识了,如提到的资源释放问题。同时在开发中要注意一些细节,例如:在处理数据的过程中采用List数据结构,一般采用ArrayList比较多,但如果你的数据添加、顺序访问、删除比较频繁,那它就不合适了,相比下链表结构的LinkedList就会好很多。还有就是学会性能调优,在JAVA中就需要理解JVM,学会调优工具的使用,然后定位问题,做出相应的优化。
6.分布式服务器开发管理方面:主要是各类框架集群的搭建、服务代理的使用(外网代理转发到内网等,负载均衡处理)。如果集群搭建有问题,会影响很大,比如老司机留下来的ES集群,在集群节点内存分配、节点角色分配上都不合理,导致集群性能不稳定,所以又重新做参数调整和部署,数据索引方面比如index的mapping设置,routing设置以及冷热数据分离,数据压缩等处理。总之开发过程中遇到的坑还是很多的,不论是业务层面还是非业务层面,都要开发者们有耐心去解决。
一入行业深似海,想要如鱼得水,就得学会掌握更多技能,不断丰富自身,广度深度都进行探索,也许有些东西开发中不一定用得到,但是学会了,总不会错。无论是各类开源框架、还是开发语言,其实都只是使用工具,毕竟框架总是层出不穷的,掌握核心思想就能更好的遨游各处。
如果你也愿意分享你的故事,请加51CTO开发者QQ交流群 370892523联系群主小官,期待你的精彩故事!
活动回顾:
转载于:https://blog.51cto.com/51ctoeditor/1890740