前端时间看到Kaneboy的随笔, 提到灵感之源的事, 实在是让人看了心里不好受. 前端时间又刚好看完
关于定位
首先, 请问自己一个问题:我是谁?相信绝大多数人会回答:我是一名_____工程师.(空白处填上.Net/Java/C++等等). 但是请注意, 除了少数从事计算机教育/科研的人之外, 我们绝大数(无论是普通Employee还是Boss, 但本文只针对Employee而谈)都是在为商业机构工作, 所以我们中大多数其实可以算作是商业人员 (Business people). 简单的逻辑关系就是 人->商业人员->IT业职员(软件工程师).
对于Business People, Wikipedia是这样解释的:A business person is a generic term for someone who is employed at a profit-oriented enterprise.
请注意Profit-Oriented这个词: 商业组织的目的就是创造价值并获得利润, 组织中每一个人所作的工作, 都是为这个目的而服务的.
同意? 很好, 我们继续往下看第二个问题: 我们身上甚么能力是我们的雇主最看重的呢? 或者说,甚么东西是考察一名软件工程师是否称职的重要因素呢?
“自然是技术能力的高低, 水平越高, 雇主自然越愿意聘请你. “ 如果你的回答是这样, 那么请回顾第一个问题的结论: 每一名软件工程师首先是一名商业人员, 而每一名商业人员所效力的组织都有着很明确的Goal: Profit!
因此, 你的老板之所以雇用你, 每个月付你的高额的薪水, 只为了一个目的: 让你为他的组织创造profit.于是我们得到第二个问题的答案: 能否为组织创造profit,能创造多大的profit, 是考察一个employee的重要标准.
哦, 当然, 多数时候, 技术能力和创造profit的能力是一致的:技术能力越高, 为组织获取更多profit的几率也越大, 得到老板赏识和提升的机会也就越多.
但是(天哪,我恨这个但是), 也有可能出现技术能力和profit making相矛盾的情况:
最简单的例子, 某DBA, 技术能力很强, 但是缺乏和客户的合作精神, 导致公司损失客户(也就是损失profit), 他的下场自然可想而知. -- 高technical skill但是低profit making.
再来一个夸张的例子: Sale拿到一个project,价值$30k, 该项目可以用实现完美Object Oriented的J2EE实现, 也可以用”ugly”的asp来完成. 现在有2个PM先后看过了项目需求, PM Fred(技术能力最强的PM)建议把项目交给他, 他准备组建一直全是programming guru的”梦之队”, 用3个月完成一个完美的OO实现的系统, 他为此作出的budget是20k. PM Bob技术没那么好, 也不懂啥叫OO Design, 他准备找几个刚毕业的学生来用ASP做这个项目,当然我们已经可以想象Bob团队做出的东西内部肯定难看的要命了, 但好处在于, Bob的预算只需要10k.
假设Fred和Bob做出的系统都release给用户, 由于Fred梦之队的专家们采用了业内最好的技术, 他们的系统压根没有甚么bug, 遇到需求变更也轻松解决, 于是后期维护的费用几乎是0$. 但是Bob就没那么幸运了, 他的系统后期花在bug fixing和变更上的费用是$3k, 同时因为项目交付延期, 造成用户不满, 造成间接损失(公司信誉)$2k.
你看, Fred完成的任务比Bob漂亮多了, 老板肯定会任用Fred, 不是吗?
但是, 等等, 公司老板不是技术出身, 他可不懂Fred用的OO是多么先进, Bob做出的系统内部是多么的不堪入目, 他只能(也只会)注意这样的公式:
Fred team最后的利润是 收入30k - 开发费用20k – 维护0k = 最终利润10k.
Bob team最后的利润是 收入30k – 开发费用10k – 维护费用3k – 间接损失2k = 最终利润15k.
现在, 再猜猜我们亲爱的老板最终会任用Fred还任用Bob呢?
哦, 我知道你现在想说甚么. 当然, 当然, 我们聪明的Fred当然也可以采用Bob的方法, 他最后也能为公司挣到15k(甚至更多). 但是在这个例子里, 我们可以清楚看到最好的technical skill并不能为公司创造最多的profit. Fred要想成功, 他似乎更需要依赖的是财务预算能力和商业决断能力, 而不是懂得多少个Design Pattern.
因此, Technical skill和profit making之间绝对不是等号关系. 事实上, profit making始终是第一原则, Technical skill可能和profit making一致也可能不一致, 但是它自始自终都要服从profit making.
不扯远了, 回到我们自己身上. 那么, 我们这些软件工程师, 要怎样完善自己, 才能在职业道路上走的更顺利呢? 我想我们可以从前面的逻辑关系: 人->商业人员->IT业职员(软件工程师)一个一个来看.
(To be continuing…)
打印 | 张贴于 2006-11-24 17:31:00 | Tag:暂无标签
留言反馈
比如说,客户的期望本身就是能跑就OK,我们花很大气力下去做个0bug的系统出来增加的只是成本,
再举一个例子,很多时候客户方面的预算和目标都是分步骤实现,不是一步到位,所以第一个阶段需要的是可以理解他的紧急需求的一个团队,能够急他所急,想他所想,这个时候可以说技术根本不重要,重要的是让客户的领导看到他在正确的位置上,这样的系统客户会很愿意后期的维护费用和需求变更的费用承担。而这个时候一昧的展现高超的设计只会导致客户的反感。
不说了,丑陋的社会。。。
定位很难,现在想法比较杂,回头有空给你慢慢整理。
客户对项目不满意,也许不只是2W的信誉损失,或许带来的损失更多,楼主的这个假设也是不合理的。
唯一赞成的一个观点就是,技术不是唯一的,但是管理也不是唯一,而且不是所有人都适合做管理。对于真正技术人员最重要的是,如何做一个好的技术人员,会与别人沟通。而不是局限在只会自己钻研技术,不能让你的特长为老板带来profit。
国内老板大多会选择Bob来做项目,这个是事实!
===============
严重同意楼上某些兄弟这句话。
platform才有今天的成就。 这个例子只能就某些公司,某些文化,某些project而言是
对的,没有不便的rule. technical excellence在真正的有竞争力的公司是非常非常
重要的。。。
我们做另一个例子:
Fred team最后的利润是 收入30k - 开发费用15k – 维护0k = 最终利润15k.
Bob team最后的利润是 收入30k – 开发费用10k – 维护费用5k – 间接损失5k = 最终利润10k.
那么老板会用Fred team的方案,结论就是技术是第一位的。
为什么这样?例子用的有问题,误导人,
其实真正可能应该是,只能能创造更多的剩余价值,不管J2ee还是Asp,都是好猫。这是老板的观点,因为老板开公司的目的是赚钱。
而程序员呢,当然最终目的也是想多赚钱,要想多赚钱,其实就得让自已有更多的实力及机会,从老板那里得到更多的Money。
从技术角度讲,容易掌握的技术比如Asp,刚毕业的小弟也会,会的人一多,开价自然低。
而Design Pattern这样的东东,门槛高点相对就要值钱点。
而掌握了高技术的牛人,为了提高门槛,自然会去用复杂的技术来完成任务。会Asp的小弟,看到牛人的高薪,及迫于牛人制造的门槛,想要吃饭也不得不向牛人靠拢。
这其实才是程序员的生存现状,技术是第一的而且必须第一,你不行就得被别人干掉,除非改行不写代码了做个项目经理或是老板之类的。
职业说白了,就是一个小战场而已,有合作也有竞争,老板和老板比,不行公司就得关门,程序员和程序员比,你不行,别人就上。
对于这个项目的客户而言
由Fred team开发 最终客户支出 30k,系统维护很方便,客户很满意。
由Bob team开发 最终客户支出 30k,但是Bob team开发时间比较长,系统维护比较麻烦。客户不满意。
对于客户而言,他只关心支出,以及这个系统是否好用。
当客户有了新的项目,他会交给那个团队做呢?
这个损失可不会只是量化到2k这么简单,这个很可能就是最大的损失
>>维护费用3k
如kiler所言。而且很可能这个维护的过程是很漫长的,时间上的拖累会让这个team失去全力以赴其他项目的机会,长远看,损失也是会远远大于这个3k的。
你有没有想过以下情况
由于Fred team团队设计的架构很合理,所以他们第二个项目成本大幅降低,开发成本+维护成本只有10k,经过第二个项目以后他们有不断改进了架构,到第3个项目的时候项目开发成本+维护成本只有8k。反观Bob team团队,架构设计非常烂,结果第二个项目基本没有办法复用上个项目的东西,几乎相当于重做项目,开发成本+维护成本是13K,第3个项目也是如此。开发成本+维护成本还是12K。
接下来两个项目的成本,Fred team团队的开发成本为18K,Bob team团队为25k。
老板又会怎么选择呢?
楼主的例子是个典型的短视行为。
对于一个公司来说,技术不一定要摆在第一位,但是忽视技术的公司肯定不是一个好公司。
最起码对我来说,技术仍然是最终的竞争力
只是有时候有些地方的欠缺表现出了更大的负面影响,但那些部分仍然超不过技术的重要性
你举的例子恰好是没有什么技术含量的项目,这种项目里单从技术的考虑而言先进的技术(比如面向对象)从整体拥有成本上要远远高于落后的技术(比如asp)。成本的差异主要是体现在开发人员的薪水上。
而现实生活中技术决定项目成败的情况也很多,最明显的就是google,良好的搜索性能一直是google雄霸搜索市场的利器。
Communication skill (involving english)
Technic
要为老板创造价值
要以老板喜欢的方式为他创造价值
才可能得到认可
只是老兄你估计要被不少人K了,国内大部分开发人员的共同梦想是在一个只需要关心技术但是老板又会给很多钱的地方呆着...