随笔 - 89  文章 - 118  trackbacks - 0
<2016年7月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

留言簿(16)

随笔分类(56)

随笔档案(89)

文章分类

推荐博客

搜索

  •  

最新随笔

最新评论

阅读排行榜

想转型的都是那些不甘于现状的,我就是其中之一。

 

我是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)  编辑 收藏 引用 所属分类: 架构设计

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理