转帖自:
http://www.tommstudio.com/ViewNews.aspx?ID=187
http://hi.baidu.com/rarnu/blog/

本文翻译自《美国优秀经理观念大全修订本》

我想现在没有什么比做一个软件工程师更能赚钱的了,当然了,明星除外。在美国,一个优秀的软件工程师,就算在一个平凡的岗位上,也能得到年薪50万(美元)以上的待遇。这绝对不是开玩笑,在北美曾有统计表明,一年内发放给软件工程师的工资以及各种福利,占去了全美净收入的2.4%,这是一个很大的数字。

我是一个Java软件工程师,但是在这里我不想说Java,而是想说说Delphi,这个曾一度被遗弃的孩子。

首先,我痛恨Borland的决策层,他们几乎把一个拥有鲜活生命力的产品断送了。几年前我就预言,BDE不会活得太久,我的预言成真了。虽然那是当时为了维护Java才说的,但也不是毫无跟据。我喜欢Java,喜欢使用反射机制来方便的调用一个未知的成员,但是Delphi不可以如此做,就算是后来有了RTTI机制,我一样不喜欢,它的限制太大了,一点都不自由。

但是反过来说,我又很喜欢Delphi,很多情况下,我无法用Java实现一些功能,但是我的同事可以用Delphi补上一些代码,使程序功能得到增强,这是让我很欢喜的一件事。不论是我的上级或下级,都有很多人说Java与Delphi的相容性很好,可以方便的合作开发。但是这一点并不能让我不痛恨 Borland,因为他们明明可以将更多的精力花在加强语言上,但是他们却做了很多无用的事。而且也没有收到好的成效。

在1998年的时候,Delphi是一个宠儿,人人都喜欢它并且使用它。Delphi以其独特的魅力(最大的特点是快速的可视化开发)吸引了大批原本使用VC的软件工程师。但是好景不长,自从Delphi开始收费后(而且还非常昂贵)它的占有率立刻下降了30%。这也许是一个企业要生存所必须的,我没有指望Delphi会永远免费。但是过高的价格是很多人放弃它的主要原因之一。这个情况在2004年到达了顶峰,数以百计的企业给员工下了禁令,禁止使用Delphi。

到了现在,也就是2007年,Borland已退出历史舞台,取而代之的CodeGear,又将Delphi发展到一个新的高度。或许有人说RAD Studio2007是匆忙之作,但是这至少让我们看到了一点,那就是Delphi还在进步,也让很多软件工程师找回了对Delphi的信心。至少在北美,已经不再是Java和VC的天下了。

话说到此,我想说一下Delphi软件工程师如何才能赚钱。在我退休以前,我曾经几次想改变自己的发展方向,虽然到现在为止,我都承认Java比Delphi优秀,特别是在移动应用方面,但是我还是想让自己成为一个Delphi程序员。就算是为了它那极为高速的开发,极为容易的赚钱方式,我想我选择它是没有错的。我看到过很多人,程序写得还算不错,但是他们赚不到钱,原因只有一个,就是他们没有被公司录取。

在被录取的员工里,我只说我看到的,Delphi程序员的报酬是最高的,我不怕说出实话,我身为经理,但是我的报酬甚至不如我的下属。原因仅仅是我只会 Java,不会Delphi。这些话也许听起来是违心的,其实我一直觉得Java优越于Delphi不知几倍。但是作为一个评测者,我深知公正的重要性。

Delphi软件工程师在公司里是相当重要的,但是人数是最少的。一个优秀的Delphi软件工程师一天的工作可以抵得上一个5人Java小团队一星期的工作。是不是觉得不可思议?这是事实。而且Delphi还是百搭,我们常常用它来弥补其他语言的不足(虽然它自己也有很多不足)。因此,我们对Delphi人才的招收是非常严格的。

就我看来,一个合格的Delphi软件工程师,他必然是有着非常丰富的其他语言的开发经验,有着非常强烈的研究欲望,也有着一个较大的研究圈子,这样能方便技术上的交流。很多时候,与公司内部的人进行交流是一个误区。相处越久的两个人,越是了解彼此,越是清楚对方的水平,也就越不愿意多与对方交流。反而倒是MSN上的很多网友,通常能给出一个灵感。

作为项目经理,我希望有更多有才华的人进入我的部门,参与到项目的开发中来。公司曾经尝试过招入一批Delphi软件工程师,但是收益不佳,召来的员工经常会辞职或是被公司辞退,能真正长久做开发的非常之少。总结而言,原因有三个。

其一就是使用Delphi的人不多(必须主攻Delphi,因为它与别的语言相差较大),有些软件工程师原本并非主攻Delphi,而是凭借自己对其他语言的熟悉,快速上手Delphi。但是Delphi是世界上最容易上手,也是最难精通的语言。仅凭借熟悉是完全不够的,然而他们不愿意对Delphi做出深入的研究。唯独不知,Delphi的世界与其他语言的距离还是比较远的,不可能一步就跨过来。

其二是有些Delphi软件工程师太过自傲(必须服从管理),不可否认的,由于使用Delphi的软件工程师不多,能写出优秀软件的更是少之又少。他们的自傲是完全有资格的。但是身在一个企业,就必须服从企业的管理,一个自由性太强的人,是无法做好他们应做的事的。也许个人能力非常强,甚至有能力独立完成一个大型软件,但是这并不代表他们在团队里会有出色的表现。

其三就是学习中的软件工程师(必须自己提前精通,而不是进入公司学习)每个人都会有一个从入门到精通的过程,这个过程必须在脱离企业的情况下完成。Delphi是一个完全被设计用来完全快速开发的工具,它不是用来学习的。通常情况下,一个Delphi软件的开发周期不会超过半年。如果软件工程师处处需要资料和他人的提点。一个必然的结果就是开发效率低下,情况严重时可能影响整个团队的进度。除非是科研性质的企业,控件厂商等,需要大量的研究,学习。一般企业使用Delphi以完成任务为主,使用大量的控件去快速的完成任务。以最高的效率获得直接的经济利益。

排除这三条,剩下的软件工程师是我喜欢的,他们一定能在工作岗位上顺利,出色的工作,并得到很高的待遇。我要求软件工程师有相当的能力,能够独立完成一个项目(第二要求)。但是我更需要优秀的团队合作精神与开发经验(第一要求)。很多时候,经验决定一切。你甚至可以完全说不出编写一段代码的理由,但是你必须知道如何写。这听起来的确有点荒谬,但是在工作中,这样的事时常发生。

在有些公司,领导会要求Delphi软件工程师掌握一些其他的编程语言,比较理想的是同时掌握Delphi,C++,汇编和Java(理想情况)。C#作为一门新流行起来的语言,也应该适当的了解。前文已提到,Delphi自身也有一些或大或小的问题,有的时候会需要其他语言来弥补,仅仅是懂得Delphi完全不够。就像我仅仅懂得Java,那也是不够的,同样的道理。

译注:
1. BDE不会活得太久,原文:BDE will not be in the world much longer. 直译觉得读起来不流畅。
2. 快速的可视化开发,原文:rapid and visual development,我曾一度想译为RAD,但是觉得不妥。
3. 极为容易的赚钱方式,在美国,软件的价格按代码量计算,平均5行有效代码一美元。
4. 小团队,原文中无“小”字,我觉得5人团队是非常小的,因此加上“小”字
5. 百搭,原文:Patch-all
6.Delphi是世界上最容易上手,也是最难精通的语言,原文:Delphi is the easiest to learn in the world, also is the language which most difficult to be mastered in. 这是我常常说的一句话,出处即源于此。
7.不可能一步就跨过来,原文:can not be reached by a foot.
8.从入门到精通,原文:from basic to be skilled in

博主的话:

这个世界的发展是多变的,三十年河东,三十年河西,任何事物都不可能永远占据霸主地位,希望广大Delphier,不要轻言放弃,就像作者所言,一专多能,继续研究Delphi,在熟悉几门其它语言,是非常有用的。

http://www.cnblogs.com/wxy8/archive/2011/01/29/1947350.html#2151602

Delphi程序员如何找到高薪的工作?(赚不到钱,原因只有一个,就是他们没有被公司录取。Delphi必须要独自进行深入研究,才能精通,同时也不能自由性太强)的更多相关文章

  1. 一名Delphi程序员的开发习惯

    一名Delphi程序员的开发习惯 有关开发习惯的一些想法,如鲠在喉,不吐不快.究其发贴动机,当然不排除有骗取参与分的可能,但另一方面,也希望能给同行(念Xing)者提供一些 建议,或者参考(希望不是误 ...

  2. 【转】优秀的Java程序员必须了解GC的工作原理

    一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率 ,才能提高整个应 ...

  3. 优秀Java程序员必须了解的GC工作原理

    一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率 ,才能提高整个应 ...

  4. 月薪3万的程序员告诉你:这样工作才能拿高薪(转 IT之家)

    习惯即刻回报 他不懂得只有春天播种,秋天才会有收获.刚刚付出一点点,甚至还没有付出,就想要得到回报.技术刚刚掌握,能一边百度一边干活了就觉得该拿到多少多少钱了.找工作先想着多少多少钱,入职了没干几个月 ...

  5. PHP程序员可以这样准备找工作

    你好,是我琉忆.PHP程序员面试笔试图书系列作者. 今天就跟大家聊聊作为一个PHP程序员,每年的跳槽季都应该怎么准备一番. 其实普遍的跳槽季总的就有2个. 分别是新年后的3-4月,还有9-10月份. ...

  6. java程序员在交接别人的工作时如何保证顺利交接?

    序言 各位好啊,我是会编程的蜗牛,作为java开发者,尤其是在职场混迹了多年的老手,肯定会遇到同事离职的情况,或者自己跳槽的情况,这些都免不了需要做好交接工作,不管是别人交接给我们,还是我们交接给别人 ...

  7. 优秀Java程序员必须了解的GC工作原理(转)

    一个优秀的Java程序员必须了解GC(Garbage Collection 垃圾收集)的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系 ...

  8. 【程序人生】程序员真会玩,工作996,生病ICU

    昨天Github上一个项目彻底爆红了网络,短短一天star数突破一万,Issues已破1800,大家纷纷说出有关企业的不合理加班行为,句句吐露程序员的心声,掀起了一波抵制加班潮,抵制996. 该项目里 ...

  9. 程序员,不要让自己做兔子(updated) 网上最近流传的一个笑话,关于兔子,狼还有一只老虎的,故事 我就是想打你了,还需要什么理由吗?谁让你是兔子 项目经理是这样当的

    程序员,不要让自己做兔子(updated) 前段时间和一个朋友聊天,酒席间向我抱怨他那段时间的郁闷:项目经理从客户那里拿来一个需求,实际上就是一个ppt描述,我这个朋友拿过来看后刚开始不觉得什么,一个 ...

随机推荐

  1. 鲁德http://www.testroad.org/topic/76

     [最新的招聘信息]:1.联动优势科技有限公司招聘性能测试工程师       薪资20K左右 http://ask.testroad.org/article/4042.上海-交通银行总行-性能测试专家 ...

  2. [Android5.1]ActivityManagerService启动过程分析

    ActivityManagerService(简称AMS)是Android系统的关键服务之中的一个.它的主要作用例如以下: 管理系统中全部应用进程的整个生命周期 管理应用进程中的Activity.Se ...

  3. js进阶 12-15 jquery如何实现点击button显示列表,点击其它位置隐藏列表

    js进阶 12-15 jquery如何实现点击button显示列表,点击其它位置隐藏列表 一.总结 一句话总结:在button中阻止事件冒泡. 1.如何咋button中阻止事件冒泡(两种方法)? ev ...

  4. 安装spark1.3.1单机环境 分类: B8_SPARK 2015-04-27 14:52 1873人阅读 评论(0) 收藏

    本文介绍安装spark单机环境的方法,可用于测试及开发.主要分成以下4部分: (1)环境准备 (2)安装scala (3)安装spark (4)验证安装情况 1.环境准备 (1)配套软件版本要求:Sp ...

  5. 组合搜索(combinatorial search)在算法求解中的应用

    1. 分治.动态规划的局限性 没有合适的分割方式时,就不能使用分治法: 没有合适的子问题或占用内存空间太大时,就不能用动态规划: 此时还需要回到最基本的穷举搜索算法. 穷举搜索(exhaustive ...

  6. POJ 3090 Visible Lattice Points (ZOJ 2777)

    http://poj.org/problem?id=3090 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1777 题目大意: ...

  7. 利用java反射将结果集封装成为对象和对象集合

    java反射机制是什么 反射机制是在运行状态中,可以知道任何一个类的属性和方法,并且调用类的属性和方法: 反射机制能够做什么 1.判断运行对象的所属类 2.构造任意一个类的对象 3.获取任意一个类的属 ...

  8. 【2024】求X到Y之间的整数和

    Time Limit: 3 second Memory Limit: 2 MB [问题描述] 计算X到Y之间的整数和(要求用函数实现).注意输入时X不一定小于Y,且X.Y不一定都是整数. [输入] 两 ...

  9. [TypeScript] Create random integers in a given range

    Learn how to create random integers using JavaScript / TypeScript. /** * Returns a random int betwee ...

  10. 检测dll是32/64位?(直接读dll文件包含的某几个字节进行判断)

    检查dll是32位还是64位? #include "stdafx.h" #include <Windows.h> int _tmain(int argc, _TCHAR ...