挨踢部落故事汇(23):一路前行,兴趣所至

原创
移动开发
IT人中,很多人半路出家,自学成才。但并不是每个人,纯粹追求梦想,走进程序的世界。有很多人和with_prototype一样,忠于兴趣,选择编程。今天由with_prototype来和大家分享兴趣是如何引导程序猿成长的。

【51CTO.com原创稿件】with_prototype主要从事Java开发、曾做过配置管理、系统运维、框架研发组件,现在就职于一家保险经纪公司的架构组,担任架构组工程师。闲暇之余,喜欢看技术书籍,偶尔听听音乐,骑骑车,跑跑步,跟朋友玩玩游戏。

[[195972]]

with_prototype·Java开发

兴趣入行赚了***桶金

with_prototype和很多人一样,不是计算机专业出身,出于兴趣走进了IT行业。追溯到十年前,那时候他上大二,偶然的机会他在校园报刊亭中看见一本月刊杂志“黑客x档案”,他一时间痴迷于杂志中介绍的各种系统漏洞、安全工具、网站提权的知识。于是他买了***台笔记本,开始实践各种黑客工具。就此与计算机结缘了。

兴趣会使人自发地解决问题。初为小白,新机器很快受病毒困扰,with_prototype无奈去中关村请人重装系统,顺带买杀毒软件。了解到Ghost这一利器,他变身成装机人员。宿舍中,一天三遍刷系统,做镜像,拿同学机器做恢复实验。同宿舍的同学会说他疯了,简直就是褒奖(呵呵)。

就在这学期有C++课程,他看到学院机房里一水儿的IBM工作站,于是找到机房主任,坦白的说自己喜欢黑客技术,申请当机房网管。机缘巧合,遇到一个病毒分析高手,小一年的学弟,一同管理机房。就这样,with_prototype在机房实践了3年,讨论过如何鉴别病毒,参与过机房布线,做过讲师助手,开发过PHP程序,那是他对程序还不感冒,但程序员的种子已经种下。机房的生活有时候很累,一天都不出屋,遇到机房重做系统,要到凌晨才能完成,但with_prototype觉得很有意思。一年下来他也挣了500块钱,虽然不多,但对于当时的他来说特别兴奋,这笔钱后来全拿去买技术方面的书了。

毕业季现学现卖,培训Java,转型程序员

转眼到了毕业季,那段时间with_prototype很郁闷,学数学专业,但专业受限,路子窄,他又不喜欢。他曾面试过一些硬件公司,最终因专业不对口没去成。也参加过软件公司的校招笔试,写程序拼不过软件学院的同学,一时间不知所措。

身为一个程序开发的菜鸟,with_prototype无法解释市面上各种软件的实现原理,但他认定软件技术和黑客技术同属信息技术的不同分支,相比安全领域寂寞乏味,程序开发无所不能。因此他毅然决然选择Java培训,转型程序员。

那个年头培训机构还不多,没有在线培训课程,他选择了达内。抱着学精的态度,每天朝九晚九,几个月后就出道了,找了份金融行业的软件外包工作。

说道如何快速入门Java,with_prototype觉得主要有两方面:

1、  理解Java核心体系。Java的体系对于初学者过于庞大,通过培训串讲知识点,清晰学习思路,了解编程的套路;

2、  理解编程思想。掌握了Java基础,还要懂得面向对象思想,才能用Java的方式做分析、设计。

举个例子:

with_prototype刚刚学会向上转型时,就是搞不明白为什么要使用内部类。当时这个阶段,花了不少时间,因为语法上都能看懂,但就是不明白含义。其实内部类就是为了完善Java多继承体系而存在的。通常结合代理、接口、内部类的多态机制,实现上层对象对实现细节的忽略,达到面向对象编程的目标。

最快入门Java的方法应该是,自学Java的语法基础,拿上《Java核心技术》,找个内行人划重点、串流程,通过Java核心技术学习面向对象思想,多写多查多上网看资料。随后学Java-web,一定要自己做一个项目,把问题都解决了就通了。

在入门Web程序开发后,他的程序员生活开始了。

工作中坚持学习,兴趣使人成长

现今SOA大行其道,而在with_prototype刚起步的时代,Java提倡的是一种面向配置、面向接口编程。典型的技术框架就是Spring和IBatis。他刚接触配置开发不久,公司大项目就提上了日程。他越想快速搞清楚如何实现配置,并同时完成开发任务,工作的压力就越大。由于对新知识掌握不够牢,他时常感到恐惧。有时候数据库设计不合理,导致工作重复做,也很受挫。

正是在这种情况下,为了缓解压力,with_prototype养成了一些学习习惯。完成日常工作之后,额外花一些时间学习,学习一些与工作无关的开发。多一份了解,就多一份自信。

他做了很多小程序,比如:

1.     用JavaScript操作dom,结合HTML表格,那时候with_prototype不懂样式,他就用table、button标签,实现动态表格,提交修改到数据库;

2.     实现交易撮合算法,模拟股票买卖交易,用Java实现;

3.     用commons-compress写一个文件压缩器,自动备份每月的工作资料、学习设计模式等等;

系统发布那天,他准备好数据库脚本,提交了程序,保障系统顺利上线了。总之,学的多,心不虚。会的多,胆就大。

兴趣导向,在坚守中求变

后来with_prototype换了工作,在保险行业的做运维开发,既兼顾配置管理,又带实习生,在这儿度过这几年,他觉得最宝贵的经历,就是跳出Java日常开发的圈子,掌握了一部分解决问题的能力。运维工作特别锻炼人的思维,分析问题的过程,都是对逻辑思维的锻炼。修改程序逻辑只是一方面,对问题数据的维护,要经过仔细的思考推断,还要能够从多个角度看待问题。

1、学会多角度思考问题

有一次with_prototype拿到一个性能问题,一段程序使用嵌套递归的方式,计算一组继承类的树形结构上各个节点的属性值,从根节点开始,通过配置控制节点计算顺序,先计算根节点,完成一层继承结构的对象计算后,再进行下一层计算,耗时很久。分析程序逻辑是正确的,而问题***的解决,是推测获取数据库链接过于频繁,加之数据量大,导致数据库连接频繁创建,造成性能问题。他考虑到只是个小模块,采用创建集合缓存数据库连接的方式,解决了计算过慢的问题。后来系统改进,重写了流程控制部分,并且使用了连接池。可见,过度设计有时候会适得其反。

2、自学工具解决自动化问题

在公司Windows服务器上,有很多备份工作需要手工完成。当时的方案是用cmd脚本完成自动化。

学习cmd,是个体力活。这方面相关资料少,除了命令说明,就只能从网上东拼西凑一些资料,自己摸索。但学习的过程是很有成就感的。

with_prototype实现了系统目录的增量备份,结合WinRAR实现自动归档,清理历史包。后来用的熟练了,有很多图形界面工具的命令操作行业可以加入进来。比如VSS管理(定期分析重建索引)、SVN增量备份(每次需要记录上次备份的版本号,就写在一个空文件里,下次继续更新,直接读取文件获取版本号)。

with_prototype这份工作坚持了5年多,周围的伙伴换了一茬又一茬,后来还做了核心系统迁移,通信平台的设计开发。不过, 一旦工作变得机械化,乐趣就少了,做来做去,还是跳不出公司部门规划这个圈子。所以他又换了工作。

走进互联网,用开放的技术方式,解决新问题

再后来,with_prototype来到一家互联网公司做研发。在开放自由的环境中,开发人员最快乐的,莫过用更多的方法,解决遇到的问题。可以根据需要,更多的去用开源技术,自己去封装工具。with_prototype前段时间做过一个社交平台,他考虑检索的内容频度、数量大,结构相近,在设计之初,就考虑将搜索引擎与数据库分离存储业务数据。最终,在lucene上,封装常规索引操作的API,能够更方便的添加索引,查询、按权重排序。完成了主要部分开发。与此同时,他头一次接触到微信、支付宝、其他第三方支付平台,通过抽象不同接口,添加独立配置的方式,实现了支付的核心。之后使用模板引擎,完成了通信内容的转换,一个简单的支付平台也成型了。

健康观念的改变

“脸皮厚,身体好”是with_prototype以前一个部门经理说的,现在他也做到了。工作之余,with_prototype也注重加强锻炼身体。最有效的锻炼,还是跑步,从一开始跑不动,到能慢跑一小时,坚持下来就好了。他偶尔也学学烹饪、烘焙。想减肥,就得少吃油。总有人调侃他为什么不着急找女朋友,其实,黑程序员的人太多了。如果看到喜欢的女孩,多了解,有意识的让自己变得更好,多用心传达……水到渠成是早晚的事儿。

【写在***】

生活还得继续、工作也不能停,接触更多新事物。现在很难说一个IT人员,能够从业多少年,因人而异,兴趣使然。用心坚守,总会发现新鲜事物,这是一个发展的行业,让每一天都过得有意义,只要兴趣浓厚,即使悲伤、难过,也都是暂时的。希望自己的认识能够对后辈有所帮助,总结以下三点:

首先,要相信自己的选择:从开发到运维,从产品到测试,从安全到大数据,从金融到互联网,从医疗到电商。各行各业,各类技术,心有多大,世界就有多大。

其次,跟上时代的脚步,不断学习,积累沉淀:没有IT基因,没关系,因为再年轻的专家也需要经验的积累,而40岁同样可以学习编程。

最重要的一点,工作再苦再累,都要热爱生活:因为有一种温暖,叫关怀;有一种勇气,叫责任,有一种纯粹,叫爱。

 

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

51CTO开发者交流群②群 312724475

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

责任编辑:何星 来源: 51CTO
相关推荐

2017-03-21 11:19:57

开发者故事

2017-11-28 14:15:38

开发者故事

2016-12-30 16:43:53

开发者故事

2017-01-18 16:37:43

开发者故事

2017-03-01 15:57:48

开发者故事

2017-01-11 17:25:23

开发者故事

2017-01-10 14:59:03

开发者故事

2017-09-15 11:39:47

2017-01-19 13:40:56

开发者故事

2017-03-10 11:32:49

开发者故事

2017-01-16 17:24:08

开发者故事

2017-01-18 11:07:20

开发者故事

2018-07-04 17:42:58

开发者故事

2017-04-25 15:39:30

开发者故事

2017-03-24 16:43:09

开发者故事

2017-01-13 16:36:29

开发者故事

2017-06-09 16:27:40

开发者故事

2017-10-23 13:15:51

2017-04-21 15:50:52

开发者故事

2017-01-05 15:30:59

开发者故事
点赞
收藏

51CTO技术栈公众号