想转型的都是那些不甘于现状的,我就是其中之一。
我是2005年毕业,从毕业前的实习开始,做CAD二次开发,电气设计软件。
2006年转做无纸办公软件,那个年代无纸办公流行,C++更是主流,感觉也算有前途。
2008年转做Open Office的开发,维护世界级的产品会产生一种自豪感,Open Office本身代码体量也的确非常大。
2010年转做安全类的产品,从一个模块级负责人,核心程序员,到架构师,再到负责整体产品线的负责人,经历了4年时间。
在我的职业生涯中时不时就会产生一种莫名的危机感,经常会问自己,自己掌握的技术够深吗、是主流的技术吗、未来的职业发展又在哪里?
2006年一个同事跳槽去了一家大型企业,走的时候跟我们说,做二次开发没有前途,出去面试会被人看不起。但是我发现,在具体编码的过程中,很多经验丰富的程序员甚至不能把一个对话框程序写的很漂亮,一个对话框类的实现将界面与逻辑混在一起,没有太多解耦的思想在里面。后来的工作中悟出一个道理,没有小角色,只有小演员,只有把现在的事情做好,才能有未来。
2008年我在一个不满意的环境中,苦苦的寻找下一步的方向,从坐落在小区里的公司一直面试到了微软和IBM这个级别的公司里。被挫了很多次,也积累了很多面试的经验。其间有一家做搜索引擎的公司我没去成,我的理由只是因为工资没有任何提高。其实大家跳槽的时候都说是为了职业发展,结果往往是哪里给的条件好就去哪里,而在一般意义上看,高工资与好公司一般都是成正比的。当然偶尔也有例外,比如这里提到的做搜索的公司,如果当初在08的时候就选择做搜索引擎,也许后面的故事会很不同。
2010年我拥有了工作5年的工作经验,我发现一般工作到5年以后才会遇到一些真正的好机会。跳槽去了一家刚刚在创业板上市不久的公司,做一些安全类的产品。从这一刻开始,由于业务的快速发展和领导的信任,我开始拥有了一些能够独当一面的能力与锻炼机会。除了编写一些从无到有的模块,我开始关注架构的设计,团队培养,产品管理等一系列更宏观的问题。
回到原来的问题,我们为什么要转型,原因总结如下:
1. 大多数的程序员职业起点都偏低,很多人甚至只能从外包做起;
2. 大多数的程序员做不上主流产品,主流技术,所掌握的都是一些较为落后的技能,靠体力挣钱,而不是靠智力;
3. 很多公司不能给员工稳定的成长预期,过了某一个发展阶段双方很难找到共赢点;
4. 世界发展太快,当我们还在懵懂之时外面世界已经经历了从互联网,云计算,移动互联网,大数据,人工智能,一波又一波的产业升级。而我们一波都没赶上。
于是我们要转型。2011年当我看到hadoop权威指南这本书的时候,我感觉大数据一起会流行起来,而且大数据未来会在各行各业遍地开花。
可是,留给学习的时间真的很少,工作忙碌,下班要顾家。只好挤时间学习,在上班的路上,坐公交车、坐地铁,给小孩洗衣服,可以带着耳机听视频,成了唯一的学习方式。听视频虽然不能学到太多技术精髓,但也可以了解不少技术,开阔眼界。
2014年底,我转型做一些也数据相关的工作,做数据清洗,分析,建模,治理。我总结一下转型要做的一些事情以及要学的东西。
1. 要有行动,只停留在想法层面产生不了任何实质上的进展;
2. 挤时间,时间对于每一个认真生活的人都很宝贵,挤一下吧,少玩玩游戏啥的,总会有的;
3. 要重视学习,尤其是看书进行系统学习,从网络上看到的只言片语做为了解还行,但是不去系统掌握知识,境界很难上到新的台阶;
4. 要注视理论学习,上班以后最不缺少的就是实践,天天都在实践反而凸显的学习理论的重要性;
5. 把主要学习时间花在那些最通用、最被广泛采用的技术上,如果每天都在学习那些其他公司所不需要的领域知识时,说明该跳槽了;
6. 要注重基本的数据结构和算法,这些是写好程序的基础,基础决定高度,做那些能够解决困难问题的人,而不是做只能执行具体任务的人。差别在于能不能把现实的工程问题抽象成数据与算法。
7. 选一个好的方向,像高并发,分布式系统,数据库,大数据工具,统计建模,机器学习,数据挖掘都是即有用又缺人的领域,搞好任何一个领域都会有好的发展;
8. 我感觉能把数据分析、机器学习、自然语言处理、R语言这些学好,统计建模依然是很基础知识,不能跳跃学习;
9. 学习最重要的是入门与坚持,入门可以学视频教程,精深要靠应用与时间打磨;
就程序员的职业发展来看,我总结自己的一些经验:
1. 1~3年,要学精一门语言,这并不太难;
2. 3~5年,应该关注软件的设计,设计模式等知识
3. 5~7年,应该能独立完成一个软件模块,从需求到测试的全过程。我发现一般这个阶段会遇到一些获得期权或者股权的机会,能不能最终形成收益看运气吧;
4. 7~10年,争取可以负责更为全面的工作
在这个过程中,像数据库,操作系统,并发,多线程,项目管理,产品管理这些知识都需要,掌握的越多越好吧。
开发一个数据产品跟一个传统软件产品并没有太大的本质差异,很多技能从事哪个行业都是需要的。
posted on 2016-07-14 13:24
胡满超 阅读(1751)
评论(0) 编辑 收藏 引用 所属分类:
架构设计