原文:http://blog.csdn.net/fweione/archive/2008/02/01/2076371.aspx
迷茫的程序员/30岁的大限/40.50的程序员该如何走...等等的说法,让我感觉很多软件开发人员对自己的发展之路,有很多迷惑.在此,以我个10多年的软件从业人员的经历和感悟,谈谈我的看法,供大家思考和讨论.仓促落笔,还望大家指教.
第1阶段 PG 程序员
这是一个必然经历的过程.需要学习编程技术,熟悉操作系统,掌握软件开发的各种基础知识,积累软件开发的经验.
谈到学习.我认为有两种东西要学.
一种技术.我所说的技术,是指能够用文字表达的,形成体系的,可见的知识,都是技术.都可以从书本上或者各种渠道去获取.包括编成语言,开发工具和环境,设计方法,品质管理,以及专业背景知识等等.
另外一种是经验,不能完全描述的,抽象的,感性的内涵的东西.称为经验.经验,只能用身体去体会,用思维去感觉,用失败去积累.只能从别人那里去吸取.通过自己的实践去巩固.
这个阶段,需要真正掌握一种或者几种技术.对软件开发有一定领悟,对设计和代码的生成有比较深刻的认识.并对品质保证体系,有足够的认可.大部分迷茫中的程序员,其实都处于这个阶段.
第2阶段 TL/SE 开发小组负责人/系统工程师
在这个阶段,出现了分枝.一些人将发展成TL(Team Leader),另外一些人将发展成SE(System Engineer)
TL, 在了解了开发的过程和掌握一定软件开发技术的特点之后,可以带领一个团队,以群体的力量去完成开发任务.并提交具有相当完成度的成果.TL需要的是协调和组织软件开发团队的能力.了解和掌握开发进程中容易出现问题的环节,保证和控制进度和品质的能力.
SE,具有更深入的技术,能够准确描述和设计特定领域的软件,解决高层次上的软件开发问题.比如系统设计,系统构造,系统分析.并能够在开发团队中,起到技术重心的作用.解决技术上出现的问题.
与PG的区别在于,TL和SE具有相当的开发经验.TL偏向管理.SE偏向技术.
第3阶段 PL/BSE 工程负责人和Bridge型SE
PL(Project Leader),一个完整工程的负责人,需要有控制和管理一个完整工程的启动,开发,管理,和日后的维护.
BSE(Bridge System Engineer),通过和客户的交流,完善和改进技术上的设计,采取最佳手段去达到预期目的.
与TL/SE的区别,PL/BSE需要具有下面这3个概念.否则,不能够成为称职的PL/BSE.这些概念,才真正使得PL/BSE在思想上进一步成熟.
第一,成本概念
开 发需要成本,如何控制成本,如何估算成本,每一个开发项目的前期,都需要BSE去进行系统的判断和分析,估算出开发难度和开发周期.而PL,则需要核算在 这样一个开发规模下,他需要多少开发人员,和多少时间去完成这个任务.如何安排项目的进度,则需要PL/BSE不断的调整,提交项目预算时候,PL /BSE提交的数据,将是最重要的判断标准.
PL/BSE需要具有一定的财务知识,和同业人员工资行情的大致了解.设备,场地,出差,甚至于水电费用的核算.才能真正预测出一个工程的成本.
第二,客户概念
PL/BSE需要和客户打交道.PL要做的是,了解客户的动态信息,掌握成果的发布时间.并在突发事件发生后,如何保证项目的正常开发.而BSE需要做的是,深入了解客户的需求,认真选择实现技术和反复论证设计方案.决定如何实现才能以最小成本获得最佳效果.
也许国内很多程序员直接和客户谈,但是这些是不正规的.从沟通层次上来讲,需要PL/BSE这个层次和客户交流.因为所有这些,都需要以一个整体的姿态去和客户谈,从整体的思考去权衡客户的要求.作为一个程序员,只能看到系统的一部分,和客户的交流是有限的不充分的.
第三,品质概念
如 何进行品质保证,如何进行可维护性强的开发,如何进行可扩展性强的开发.是每个PL/BSE来考虑的.从形式上讲,BSE要提出各种方案,而PL,则需要 有作出决定的勇气和负担责任的胆量.作为PL/BSE,需要认真考虑在开发的不同进程中,需要侧重管理的指标,项目结束前的品质保证体系.项目结束后的后 期维护体系.
作为PL/BSE,比TL/SE具有更重大的责任,需要考虑更广泛的因素.包括员工的生老病死,女工生育,等等一系列自然和非自然因素.
说 到这里,我想各位都在衡量自己处于什么位置,可以告诉大家,如果一个正规公司,PL/BSE比TL/SE辛苦10倍,TL/SE比PG辛苦10倍.而 PG,应该是最轻松.只要做好安排好的事情.而TL/SE要去想如何安排,怎么做.PL/BSE则要想,为什么这么安排和安排了会有什么后果.
第4阶段 PM
这里,大家看到了,纯技术类型到了BSE这一层次,已经没有发展了.所谓发展,是思想层次的发展.哪怕BSE开创了一门新技术,发明了新语言,甚至设计了新操作系统,他也只是BSE.因为他所做的事情,就是BSE范围.或者就是一个纯粹的SE.
PL/BSE,都可以发展成PM(Project Manager).PM需要具备的能力,不仅仅是对某个项目的开发控制和管理能力.更进一步,他需要具备下面这些东西,才真正能成为PM.
第一 市场能力
一个PM,需要有自己的客户群,并能够开拓新客户.从整体上控制自己的团队的开工率.和人员工作密度.在保证团队生存的前提下,完成制定好的利润指标.一个PM,和一个公司的总经理,没区别.
第二 持续生存能力
自己的团队,能否持续生存.是一个PM必然思考的问题.
对内,平均年龄要保持在一定水准,整体稳定性要保持一定指标,如何培养核心人员,如何组织团队文化等等.对外,同行业中如何保持竞争力,如何保持技术同步,如何创立团队品牌.
第三 利润率
PM,已经是高级管理层了,需要面对的是总经理或总裁的直接要求,而总经理或总裁面对董事会提出的要求,都会落到具体实施者,PM身上.没有赢利概念的PM,不是一个合格的PM.
第5阶段
到了这个阶段,我想你的思考问题方式已经非常成熟.是选择一个平台去开展你的事业,还是自立开创一片天地,都是可以选择的.因为已经具备了开创事业的最基本的能力.当你做了选择之后,经营理念,企业文化,行业领域的选择,将是另外一门学科了.
上面所有的这些,不是一个必然的阶梯.可能有人喜欢纯技术,那么在SE这条路上,他会走的很远.有人喜欢经营,可能在PL这个层次,就出去开创自己的事业了.更有很多走到一半,发现软件这个行业不适合自己的性格,寻找另外的路了.
而 且,PG/TL/SE/PL/BSE/PM,都不是职务.只是一种定位.可能小公司,TL已经是副总经理了,在大公司,PM也不过是一个部门经理.技术也 不是一定输给管理.因为软件产业毕竟是高技术产业.只是分工不同.一个SE/BSE,未必在薪金待遇上一定输给PM.反过来说,PM宁可高薪聘请SE /BSE,来充实自己的开发团队.
顺便说一句,如果我定工资体制,我会如下定义.
PG 月薪制加奖金 1000-2000
TL/SE 月薪制加奖金 2000-4000
PL/BSE 月薪制加奖金 5000-10000 或 年薪制
PM 年薪制
(所 谓年薪,也有个认识误区,好象等同于1年的固定总收入.其实不然,年薪制,是需要一个指标的.达到一定的指标,可以达到所期望的收入,如果达不到,则只是 一个底线收入.这个指标可以是销售额,也可以是利润额,也可以是新开发客户群数,是和公司的发展方针挂钩的一切指标.所以年薪更能激励士气)