[1]_技术研发 - 七年之痒
引子
取这个名字作为文章的名称,也算比较合适,俗话说男怕入错行,女怕嫁错郎,找份工作,有些人坚持走下去,很幸福,也有人走了不远,发觉不合适,转行了,很像婚姻一场。从08年毕业到现在正好有7年了,从最开始在外包公司开始做jAVA程序员,到后来的高级PHP工程师,再经历了几年的技术经理的工作,发觉日子在代码和业务中穿梭而过,已渐天花,中国有句古话,男人30而立,在中国做程序员,到30,也算是遇到一定的瓶颈,也经常在论坛中看到一些同行在30岁的时候,发出迷茫,是继续往前成为技术经理,或者技术总结,亦或在技术这条路上一路走下去?有支持,也有反对的声音,与我而言,工作开心,并能让你快乐,这点很重要,假如技术不能带来财富,就不会在世界上出现乔布斯、比尔盖茨,当然国内也不会出现雷军、丁磊。这么说貌似有点成功学的味道,不过事实是这样,30而立也好,知天命也罢,我亦看到有很多50岁出头的老板仍然很拼命的赚钱,所以年龄只是一个方面,更多的是问你的愿望。罗里罗嗦的废话暂不说了,先说说自己的打算吧。起因有几点:
1. 对Web技术的爱好,新技术的专研精神。做我们这行,其实还是很需要能够接受新东西的态度,记得之前面试一家公司的技术经理,项目很简单,电商之类,用PHP或者Ruby之类其实作为起步开发语言很快就能上线,但是董事长(传统行业,不懂技术),非得使用j2ee,观念不改变,不能接受新事物,总会多走路。
2. 受一些网友影响,老外那篇30天学习计划(https://blog.openshift.com/learning-30-technologies-in-30-days-a-developer-challenge/ )。以及一位学习设计的女孩学习编程的计划。当然国内也有一位仁兄的学习计划( http://segmentfault.com/a/1190000000722994 ),他们都按照计划完成了。这几年开发中其实有很多个想达到的目标,但都完成的不够彻底,未达到目标。
3. 7年多的技术开发和管理,我觉得不仅仅是结束,而是个新的开始,其实其中学到很多知识,有架构相关、团队招募管理,也有核心代码开发维护,研发管理。也有和技术不相关的内容,市场合作、项目外包、商务谈判等。是时候好好的再总结下知识框架。
4. 一颗全栈工工程师的心。从大学环境生态专业学习,到视频制作、Photoshop、3Dsmax、Flash,前端开发,服务器端开发,运维工程师。每一个领域都深深的吸引着我,虽然说贪多嚼不烂,不过技术这个东西每天都日新月异的在变化,为了更高的运行性能,更快的开发效率,全世界一群群聪明的脑袋无时无刻都为之努力着,对我而言,多种技能的学习和掌握,在项目开发中更显着游刃有余。
5. 一切为了未来。虽然很早就决定要在技术这条路上走下去,但做一次深入的学习和总结,对接下来的职位发展方向也有一定的帮助。
那么开始吧
第一步,需要知道的和我这个行业相关的职位有哪些?
初级(工作1~2年)
初级工程师,当然根据职能不一样,有网页设计师(俗称切图的)、前端工程师(JS为主,现在流行HTML5)、Java初级工程师、PHP初级工程师、.NET初级工程师、Android初级工程师、IOS初级工程师、其他各类XXX初级工程师。初级工程师能做什么,能干很多,端茶送水,下海摸鱼,上山打虎,开个玩笑。其实初级工程师可以进行简单的非核心开发,问题不大。
中级(工作3~5年)
和上面对应,初级变成中级。但是这时候,可以开始成为开发小组的组长,我记得当时我工作的时候大约2年多的时候成为组长,带着几个初级工程师项目开发。
高级(工作5~8年)
依然和上面一样,中级变高级。这时候也会出现一批技术经理,尤其是中小型公司,有着这段工作经验而成为技术经理的,比比皆是。我也是从第四个年头开始进入技术经理的角色。当然核心代码的编写,技术架构的设计之类也同步进行,尤其这3年,感觉跑的很快,但是又很虚无缥缈的在跑。其实我觉得这段时间更多的是需要沉下心来,去认真思考计算机技术如何能够与我们的行业整合起来,我们不应该还和以前那般,因为搭建出个什么平台而沾沾自喜,而是学着深思我们现在使用的技术是否能够更好,又或者我们现在主导的产品,当送到用户手里的时候,是不是让用户很有feeling,乐意给你24个赞,而不是觉得我这份任务交差了。
管理(工作10年+)
基本上不专门写代码,要么技术架构师,科学家,研究院,或者更高的中高层管理,技术总监之类。这一层暂时还没达到,先Mark一下,在接下来的文章中再思考与探讨开发10年以后的出路。
当然上面的职位根据年限来划分的,其实和我们研发相关的职位与部门很多:
1. 研发部门:
技术总监:技术部的BOSS;
架构师:解决某个领域的专家;
XXX程序员(XXX表示不同的语言):人口众多,绝大多数的任务都是由这层人完成,不同的应用用的手段还真不一样;
前端工程师:会玩Javascript、HTML5、Css,偶尔也会PS;
网页设计师:主营Css、HTML,俗称切图的;
项目经理:别多想,这个角色不好做,不是简单的拿根鞭子就能解决问题了;
2. 运维部门
DBA:数据库管理员;
运维工程师(系统工程师、网络工程师):管理生产服务器,代码部署,服务器的监测和平常的维护工作;
大数据工程师:解决大数据的统计问题;
3. 产品部门
产品经理:做程序的大家都懂的,不过和我合作过的产品经理其实都没想的那么难沟通。
UED:用户体验相关的人;
UI设计师:画应用界面。
4. 市场部门
市场专员:搞个什么特卖啊、促销之类的广告,并让苦逼的程序实现。
5. 领导层
领导:一般领导需要的就是数据报表之类的东西。
6. 测试部门
测试经理:管测试的活;
测试共测试:专找茬的人。
上面主要是针对互联网公司,有机会再去整一张完整的职位列表。
第二步,既然要做个全栈工程师,那么了解各部门的技术,也成了必须要做的事了。那么需要复习和学习的新的知识线路图也大致按照以上部门的职位需要掌握的新老技术,来完善知识框架。
进行的框架,稍后完工后,再进行补全:
[2]_如何与老板顺畅沟通
[3]_人人都是产品经理
[4]_文档那么多,我该何去何从
[5]_技术那么多,我该如何选择
[6]_先从前端说起 - Nodejs学习之基础(1)
(- 未完待续 -)