从初级程序员到高级程序员的心得你好!我是钱老师,我是广大程序员中的一只猿猴,平凡而执着。说实话,刚入行的时候什么都不懂,只会一点点java,各种被虐的感觉。写js和css,写后台。..慢慢被虐了~开始掌握jqury、jqueryui、easyui、datagrid、zTree、extjs、boostrap、echart等一些前端框架。..各种(XoX),后端也是因为各种外包项目。struts2、hibernate、mybatis、spring等主流框架想必都熟悉和使用过,但是对于struts2和springmvc来说,springmvc是用的最多的后来,工作久了,积累了很多代码,发现一个问题。写好的代码在复用的时候总是需要改动很多。我开始尝试尽可能地提高代码的通用性和可扩展性。于是开始搞设计模式,啃开源框架的源码,什么都学着模仿。之后自己模仿开源框架,编写了核心设计代码,比如ioc容器、rpc框架、基于观察者的高可用中间件等代码。还模仿了基于二进制的linux权限管理,并在项目中成功应用,优化了一般字符串存储的体积问题。随着时间的推移,公司越来越多的业务与我联系在一起。渐渐地,我的代码能力在项目组也得到了认可。从一个新人到核心开发成员,开始接触软件架构。开始有同事协助我工作,开发任务的安排迫使我不能写接口文档,而要做项目架构中很重要的数据库设计,还要画各种UML来理清各种项目代码的关系。在外包工作中,有开发工作和研发工作。中间件设计开发是最恶心的,经常要处理很多并发的编程问题。各种并发容器,比如LinkBlockingQueue、DelayQueue等队列,也有了很多容量评估、高水位、系统阈值、QPS、RT等新知识,突然发现世界太大了水那么深。除了中间件带来的痛苦之外,还有一个恶心的提示是mysql存储过程。写了好几遍,再也不想写了。还有700多行,有的甚至上千行的sql扩展开发。改变是痛苦的。我希望不再增加或改变更多的要求。也是因为性能,我也开始学习orcale优化器策略、索引设计、物化视图设计和jvm知识。那些新生代和老年代,标识压缩,TLAB,串行和并行收集器让我想起了那个寒冷的冬天。项目经理开始让我学习Hadoop。Linux的熟练程度决定了我的掌握速度。我开始把工作之余的生活搬到Linux的世界里。我已经使用Linuxshell工作了一个多月。不得不用windows(只能查东西),为了加强linux,开始学习集群架构知识,今天搭建一个tomcat集群,明天计划实施nginx,Apache负载均衡,实施集群优化,比如读写分离,动静分离技术。后来想到一个问题,就是当负载服务器宕机时,集群会瘫痪,于是开始接触高可用,发现了两个好东西,keeplive和zookeeper。后来做压力测试的时候,发现nginx的峰值在4W左右,Apache低很多,于是开始研究他们的负载均衡。于是得知他们因为七层的负载均衡,只能做请求分发。有一种技术叫LVS——软件实现的第四层负载均衡,和F5的原理是一样的。通过IP转换实现的负载均衡技术,但它是一种软件实现。还有基于consistenthash的session缓存层,以及几个常用的nosql研究。一个月后,发现自己的linux突飞猛进,这才开始学习Hadoop系统。从第一版到第二版,我也研究了它的hive、hbase、zookeeper、sqoop、stormwithspark等生态。开始尝试从朋友那里拿资料,根据朋友描述的产品线做集群设计和部署。看到自己部署的集群可以模拟朋友公司的生产环境,我非常兴奋。后来为了获取更多的资料,学习了python和nutch,以及solr和elasticsearch的使用。我公司也有一个大数据部门,后来顺利通过考核调到大数据事业部,进入了我的大数据生涯。一开始遇到了很多问题,比如mr和hive的数据倾斜,storm和spark的join问题,hive索引基于elasticsearch的优化,hbase的二级索引实现的分布式问题。这个过程也加强了我的python和linuxshell能力,因为我经常写运维脚本,也掌握了scala多范式编程。在大数据业务部的日子一天天过去,逐渐适应了来自web的不同业务需求。一开始部署了环境,改了很多配置文件,做了一些日常的清理工作,除了指标统计工作和一些临时的业务需求排查问题,一天的工作还剩下很多时间。听说最近很多项目也是和模型有关的,开始了解大数据的数据挖掘领域。通过与同事朋友的交流以及网上的一些资料和书籍,逐渐熟悉了机器学习的各种算法在spark、mahout、mapreduce中的应用。例如基于频繁项采集、分类、聚类等算法的舆情分析系统,以及过程中的词库设计、同义词、错词处理等关键问题,其次是标签系统和用户画像系统的开发,以及公交路段实时监控预报系统的开发过程。在这个学习过程中,我和以前一样,模仿过去,写了很多业务流程架构开发,开始把自己的价值投入到生产中的数据挖掘上。现在我有很多数据挖掘开发经验。上海尚学堂的大数据培训也给了我很大的帮助和支持。他们在实际项目中学习和积累经验是快速成长的好方法。写到这里,经历了从web到大数据的大量经历后,我再次看到了一个新的方向,那就是人工智能,我也开始投入到人工智能的研究中。同时,我也感叹,作为一名IT技术人员,我迫切需要一种学无止境的精神来承受技术的快速更新换代。
