程序员的发展道路
1.(2-3年)基础素质
毕业头2-3年,是培养基础素质的时候,是把学校学到的理论知识,应用在实践过程中的时候。
1.1知识面
工作中用到的知识,和学校里学习的知识,往往不大相同,去接触实际用到的技术,解决方案,设计模式,努力扩展自己的眼界,是这个阶段的主要任务。做web开发的,会慢慢得接触到html,css,js等等知识,做后台的,接触到php,java,linux,线程,性能瓶颈等等各类。这个阶段接触的东西比较多,比较杂,同时年纪轻也是学习能力最强的时候。
1.2解决问题的能力
书上有的东西,不管多难,只要你肯花时间,总归学得来。比较难的是书上没写的东西,需要你自己思考,推理的东西。这些归结到一起,就是你解决问题的能力。这个得通过师傅教,自己总结经验,一步一步的掌握到精华。互联网上有很多专业论坛,网站,会讨论一些程序员遇到的问题,参加这些论坛,参加进讨论,会有很大进步。
1.3健康心态
心态健康尤其重要,有很多时候,时间紧,任务重,问题多多,间或有些不合理的安排,会导致人心存怨气,挫伤积极性,要慢慢培养自己坚强的心态,不管遇到什么问题,不抛弃,不放弃,迎难而上,抱着遇神杀神,遇佛杀佛的念头,保持信心,问题终究会解决的,事情终究会告一段落的。
毕业3年以后,你知识面也够广了,也遇到了不少的问题,都慢慢解决了,心态上也成熟了,不怕压力,不怕困难了,那这三年就不白干,很充实,很有意义。
2.(5-6年)专业素质
工作到第5,第6年,原来一起毕业的同学们,差异就开始显示出来了。有的人喜欢钻研知识,有的人倾向于走向管理,咱们先说喜欢研究专业知识的人,该是有所成绩的时候。在某些专业领域,该有相当造诣了。以下是几个分类:
2.1前端
前端是一个概念很大的范畴,包括桌面程序,web程序等等,主要是指跟UI有关的,跟产品长什么样子有关的,针对web来说,成为 html,css,js的专家,熟悉各种js插件,能做出各种效果。
2.2后端
后端包含的东西也很广,包括服务器,各种应用平台,各类操作系统,总的来说,这部分不关心界面长什么样子,主要关心数据存取如何更好,更快,更智能。学Java的,熟悉各种J2EE组件,熟悉各种框架,平台,了解如何处理大并发的请求等等,这些都是后端。
2.3数据库
数据库是一门独立的学问,入门容易,深入进去很难,越大的公司,越重视数据库,能够掌握各种性能调优,掌握分布式数据存储,都是一很大的学问,能把这个掌握透了,也是很大的专家。
2.4移动终端
移动设备方兴未艾,未来会成为主流趋势,掌握在移动开发的关键技术,也是很吃香的,熟悉android,ios等各类系统,熟悉各类终端的性能,优缺点,也是一块很大的蛋糕,要花不少时间研究。
2.5云计算
人会越来越懒,事情会越来越多交给电脑去处理,所有负责处理事情的电脑会连成一片云,这也是未来发展趋势,掌握云计算的知识,会是很占先机的。
2.6产品设计
有很多程序员,做了足够多的产品之后,对于如何拿技术实现不大感兴趣了,他们更感兴趣的是,做什么样的产品才能更受欢迎,比如说puja干的活,就是这个。走产品设计,也是一条路。
2.7其他
计算机技术早已经开枝散叶,发展出无数的小系统,这远不是一篇文章所能描述的,就程序员来说,做杀毒的,做游戏的,做金融的,做哪一行也能出状元。
总的来说,在第6年的时候,如果你喜欢钻研技术,那么你应该在某一领域,有了很高的造诣,对某些技术,非常熟悉了。
3.(5-6年)管理素质
工作到第5,第6年,原来一起毕业的同学们,差异就开始显示出来了。有的人喜欢钻研知识,有的人倾向于走向管理。倾向管理的童鞋,在以下几个领域的能力会凸显出来。
3.1知人善任
喜欢钻研技术的人,目光往往局限在自己那一个小圈子,不愿意去倾听别人,了解别人,有做管理的潜力的人,刚刚相反,他总是能考虑别人的感受,总是去主动了解别人,什么人有什么脾气,适合干什么事,怎么和他相处,他一直在研究,久而久之,这人的领袖能力就展示出来,你让他安排个什么事情,他总是把合适的人,放在合适的位置。
知人善任,是做领导的第一级别能力。
3.2善于纳谏
能做到知人善任,这个领导已经算是合格了,但是也仅在入门阶段。善于纳谏,才是更高级的水准。
不管你是多聪明的人,你掌握的知识是有限的,手下的人,比你更接触实际,他们的反馈比你脑袋里想的,可能更接近实际。发挥大家的聪明才智,才是最好的办法。这个时候,你一定要放低身价,不要刚愎自用。
有很多管理者,止步于第一阶段,无法再升,原因之一就是他自认为聪明,放不下面子,总觉得我是领导,难道还不如你们小兵聪明吗,不肯民主决策,凡事独断而行,慢慢就会越来越脱离实际。
3.3协调能力
如果你能够知人善任,同时又肯听大家的意见,那么你已经有了比较好的领导能力,但是想要再提高,还要掌握一个能力,协调能力。
一般来说,凡事有能力的人,都有小性子,典型的一个特征就是不大听话。这乃是正常现象,试想,如果一个人事事听命于人,事事模仿别人,自己哪里还有独立思考的空间?又怎么能聪明起来?
聪明人自负,愚笨人忠直,这是一般规律。
能让自负的聪明人不太过出格,让忠诚的笨人不太受冷落,这是领导者要干的事情。
3.4决断能力
决断能力是领导者的最后一道门坎,平庸和英明的分水岭,就在这里。
为什么决断能力如此重要呢?
因为你手下十个人,就有十张嘴,就有十个想法,有的人说往东,有的人说往西,有的人喜欢吃辣,有的人喜欢吃鸡,有小人,有君子,有忠臣,有奸臣,听谁的,不听谁的,领导者需要下决定,是非成败,最终都要你一人负责。
严格来说,做管理,比钻研技术要求要更高,因为你牵涉到手下的一批人。一将无能,累死三军,所以做管理的人,学习要更加勤恳,态度要更加恭谨,干程序员到第6年上,如果你侥幸做了管理者,需牢记此理。
4.(10-15年)总结
在程序员这条路上走到第10-15年,不论你选的是专业路线,还是管理路线,都应该熟能生巧了,办事应该像庖丁解牛一样顺畅。作为在这行工作了15年的老牛,后辈们见了都要尊称一声老前辈。
选择专业的,应该是在专业技术方面,有了相当造诣,认识了很多在这一行有名望有权威的专家,光讲各种成功失败的故事,就能讲一箩筐了。
选择管理的,应该是对于各种人际关系相当在行,编织了很大的交际网络,有一批忠诚于你,崇拜你的粉丝。
NOTE:以上说的都是理想情况下的发展路线,在现实生活中,不如意者十有八九。这就好比在民国时期就开始打仗,一直打到解放战争的老兵,虽然有少数幸运儿依靠天纵之资再加上连串的机遇,从小兵打成将军,但是也有不少老兵依然在扛枪。这些浴血奋战了二十多年的老兵,依然值得尊敬,能够经历这么多仗而存活下来,堪称老兵油子,必然积累了大量的实战经验,这些老兵,依然是一笔宝贵财富。
5.我们团队的规划
针对我们团队(志虎,默涵,庆飞,沙沙,孙维)来说,结合我们手里的项目,要掌握的知识,我把它分类两类:
5.1要胜任工作需要掌握的知识
JQuery
1.会使用各类选择器
2.了解jquery事件的原理
3.会做常用的效果
4.会使用jquery ajax
5.会写jquery 插件
Css
1.会使用css的选择器
2.理解css的框模型
3.理解css定位
4.会使用firebug调试css
Php
1.会使用php 数组及其函数。
2.会使用php include
3.会使用php 文件上传函数
4.理解php exception
5.会使用php date相关函数
6.会使用php面向对象的功能
7.会使用php string各相关函数
Linux
1.了解常用linux系统,比如ubuntu
2. 会使用路径操作命令,比如 cd, pwd, ls
3. 会使用文件操作命令,比如 more,cat,cp
4. 会使用查看进程以及杀死进程命令
Mysql
1.会写各类带条件查询语句
2.会写多表联查sql
3.会写各类insert,update语句
4.理解数据库index机制
Svn
1.会 svn update
2.会 check in, check out
3.会 merge
4.会revert
5.会 svn compare
Smarty
1.理解mvc原理
2.熟悉smarty基础语法(注释,函数,属性)
3.会使用变量调解器(modifiers)
了解公司产品制作流程
每个公司的产品制作流程,都是不一样的。
1.了解elgg cv的整体结构
2.了解dragon框架的整体结构
3.了解从pm出发到研发到测试到客户支持的整体流程
4.了解开发代码的流程
5.了解 Fix bug的流程
5.2想要在公司里脱颖而出需要掌握的知识
想要在公司200来人里面,能够让人听到你的声音,需要扎实下一翻功夫,下面的知识,必须要能掌握好:
1.出色的沟通技巧
2.优秀的英语表达
3.对某一个领域专家级别的造诣,比如说你对CSS相当懂,或者你对cassandra相当懂。
4.热心帮助别人,你对别人帮助越多,回馈越多。帮助不限于针对本部门的同事,也可帮助QA,帮助市场部,帮助支持部门
5.多参与各种讨论,只要有时间,就参与进各种讨论之中,贡献自己的思想,学习别人的解决方案。