给软件工程师的 12 条职业建议

来自:阮一峰的网络日志,作者:阮一峰,微博@ruanyf

什么样的人适合当软件工程师?

下面的职业建议分别来自台湾的侯捷老师,以及美国的著名程序员尼古拉斯.泽卡斯(Nicholas C. Zakas)。

我觉得这些建议非常好,不仅适合 IT 行业,也适合其他行业。

其中一些也许你不一定认同,但我想你会得到启发。

1、兴趣

虽然很多人在选择职业时受到家庭、环境等方面因素的影响,不一定能从事自己非常感兴趣的工作,但是如果可能的话,一定要以兴趣为要。这样在工作时会很开心,在个人发展方面也会取得很好的成就。

因为只有兴趣才能使你乐在其中,乐在其中你才会产生热情,充满热情才能使你做到卓越。

2、认知

认知影响态度,态度决定一切。

侯捷老师认为,一个人在选择发展道路时,尤其重要的是要对自己有一个正确的认知

每个人的兴趣可能会变,有些人看到某个行业有发展,有前途,因此对这个行业、这条路产生很大兴趣,这是非常可能的。

但是每个人的本质基本不变,你是否甘于寂寞,是否能够与寂寞为伍?你的抗压性怎样?你的毅力强不强?你的心理素质如何?

这些特质都是不易改变的,而且只有你自己才能给出这些问题的准确答案。只有对自己有了正确的认知后,才能决定往哪个方向发展。

他认为,做 IT 产业非常寂寞,也非常辛苦,大家可能在周末的晚上都要加班,这就要求从事该产业的人必须甘于寂寞,具备一定的忍耐力。

侯捷先生在年轻的时候非常努力,曾被称为部门的「门神」,通常都是最早来,最晚走。

他认为如果一个人喜欢交际应酬,喜欢公关,就应该尽早离开这个行业,因为选择道路一定要忠实于你的本质、你的兴趣。

我补充一点,软件工程师主要跟机器打交道,而不是跟人打交道。有时,你会整整一天坐在电脑屏幕前,不说一句话,全神贯注地调试软件。所以,如果你特别喜欢社交场合,喜欢跟人互动,你可能不适合当软件工程师。

3、EQ(情商)

有能力读完大学的人,聪明才智基本上处于同一水平,没有人可以凭借聪明就可以取得成功。

尤其是在进入社会后聪明才智已经退为次要位置,人们更重视 EQ 方面的东西,包括你的人际关系能力、沟通表达能力,抗压性、处理危机的能力等等。

4、学技术要掌握本质

我们在学习技术时应该注意掌握技术的本质性、不变性和可复用性。本质的东西不易变,不易变就可复用,这三者是一体的。

在接触先进的技术时,如果我们能将它的底层结构、本质性的东西搞清楚,会给我们带来莫大的帮助。

本质性、结构性的东西属于基础建设方面的问题,它对我们做项目可能不会带来直接的帮助,但在无形中会带来很大的影响,无形的通常是最宝贵的!

世界上没有万变不变的手法,只有万变不变的宗旨。

5、刻苦修炼内功

学武的人都必须从最基本的马步、吐纳等内功方面学起,招术很重要,但如果没有内功方面的基础,招术也只能停留在基本的层面,不会到达很高的成就。

在技术追求方面也一样,我们有时候会太热心于学习业界的新技术,每一样都想沾一点。其实不必太急,基本功的东西更重要,研究得扎实一些,招术就比较容易创作了。

6、唯坚持得成功

坚持、毅力对一个人的成功是最重要的。有一句话说:在大树底下站久了,树阴就是你的。

侯捷老师自认才能平庸,但很能坚持。他的这个个性在朋友之间是被称道的。

虽然有时坚持并不代表一定成功,但只有坚持才能有成功的机会。

年轻时尽量刻苦一些,使肉体承受最大的痛苦,年龄稍大一些的时候才能享受成果。有一句话「退一步海阔天空」,但侯捷先生更希望大家「撑一下海阔天空」,一试再试做不成,再试一下。

7、不要别人点什么,就做什么

尼古拉斯.泽卡斯的第一份工作,只干了 8 个月,那家公司就倒闭了。他问经理,接下来他该怎么办,经理说:

小伙子,千万不要当一个被人点菜的厨师,别人点什么,你就烧什么。不要接受那样一份工作,别人下命令你该干什么,以及怎么干。你要去一个地方,那里的人肯定你对产品的想法,相信你的能力,放手让你去做。

他从此明白,单单实现一个产品是不够的,你还必须参与决定怎么实现。好的工程师并不仅仅服从命令,而且还给出反馈,帮助产品的拥有者改进它。

8、推销自己

泽卡斯进入雅虎公司以后,经理有一天跟他谈话,觉得他还做得不够。

你工作得很好,代码看上去不错,很少出 Bug。但是,问题是别人都没看到这一点。为了让其他人相信你,你必须首先让别人知道你做了什么。你需要推销自己,引起别人的注意。

他这才意识到,即使做出了很好的工作,别人都不知道,也没用。

做一个角落里静静编码的工程师,并不可取。你的主管会支持你,但是他没法替你宣传。

公司的其他人需要明白你的价值,最好的办法就是告诉别人你做了什么。一封简单的 Email:「嗨,我完成了 XXX,欢迎将你的想法告诉我」,就很管用。

9、学会带领团队

工作几年后,已经没人怀疑泽卡斯的技术能力了,大家知道他能写出高质量的可靠代码。有一次,他问主管,怎么才能得到提升,主管说:

当你的技术能力过关以后,就要考验你与他人相处的能力了。

于是,他看到了,自己缺乏的是领导能力,如何带领一个团队,有效地与其他人协同工作,取到更大的成果。

10、生活才是最重要的

有一段时间,泽卡斯在雅虎公司很有挫折感,对公司的一些做法不认同,经常会对别人发火。

他问一个同事,后者怎么能对这种事情保持平静,同事回答:

你要想通,这一切并不重要。有人提交了烂代码,网站下线了,又怎么样?工作并不是你的整个生活。它们不是真正的问题,只是工作上的问题。真正重要的事情都发生在工作以外。我回到家,家里人正在等我,这才重要啊。

从此,他就把工作和生活分开了,只把它当作工作问题看待。这样一来,对工作就总能心平气和,与人交流也更顺利了。

11、自己找到道路

泽卡斯被提升为主管以后,不知道该怎么做。他请教了上级,上级回答:

以前都是我们告诉你做什么,从现在开始,你必须自己回答这个问题了,我期待你来告诉我,什么事情需要做。

很多工程师都没有完成这个转变,如果能够做到,可能就说明你成熟了,学会了取舍。

你不可能把时间花在所有事情上面,必须找到一个重点。

12、把自己当成主人

泽卡斯每天要开很多会,有些会议根本无话可说。他对一个朋友说,我不知道自己为什么要参加这个会,也没有什么可以贡献,朋友说:

不要再去开这样的会了。你参加一个会,那是因为你参与了某件事。如果不确定自己为什么要在场,就停下来问。如果这件事不需要你,就离开。不要从头到尾都静静地参加一个会,要把自己当成负责人,大家会相信你的。

从那时起,他从没有一声不发地参加会议。他确保只参加那些需要他参加的会议。

推荐↓↓↓
程序员的那点事
上一篇:USNews 大学排行榜:计算机榜清华第一,北邮逆袭CMU! 下一篇:单条 256GB 的内存要来了