程序员的八种境界,你在哪一境?

如果将程序员分为本文的8种类型,你会是哪一种呢?

在求职的时候,相信很多人都被问过这样的问题,“你对自己未来5年的职业规划是怎么样的?” 每当我被问起这个问题的时候,我的脑海里总是浮现出TwistedSister乐队1984年拍摄的一段视频里的这个场景:一位老师对着他的学生大喊,“我想要你告诉我,不,是告诉全班同学,你究竟想要过怎样的生活?”

注:TwistedSister是一支源自美国纽约的摇滚乐队,成立于1970年代早期。后来经过将近10年的奋斗,他们在80年代初取得了较大的突破。然而由于他们的叛逆形象和古怪行为,在他们最风光的时候,他们被美国政府看作是重金属毒害青少年的一个典型例子,于1988年被迫解散。

你自然会想:我要变得很牛!或者至少成为一个很牛的程序员。尽管这个问题看起来并不像其他一些同样老掉牙的问题那么严肃(比如,“你觉得你最大的弱点是什么?”),但很可能你还是觉得难以回答。也许有时候你表现得太牛了,不屑于回答这样的问题。但要小心了,你可能会惹恼别人。

在我看来,这个问题同样是一个相当严肃的问题,值得好好思考一番。不是为了应付面试官,而是为了你自己。

对于这个问题,大部分人都会选择一个不痛不痒的答案来敷衍面试官。但它也确实引出了一个更为深层次的问题:一个软件开发人员究竟该有怎样的职业生涯?当然,我们选择这一行是因为我们喜欢这行,并且幸运地得到了老天的眷顾,我们干上了这一行。但你能在50岁的时候依然坐在电脑前敲代码吗?60岁呢?所以,我们得趁还年轻的时候好好思考一下这个问题:作为一个程序员,最完美的职业生涯应该是什么样的呢?

那我就来告诉你吧,基本上,这个世界上的程序员可以有8种境界:

1. 不朽的程序员

这是最高境界!虽然人已经走了,但是他的代码却依然活着。他成为计算机博物馆中的一个永久收藏。其他为数众多的程序员都在学习他的作品。他在生前可能得到过图灵奖,或者发表了大量有影响力的论文,或者是发明了一些影响到计算机专业课程设置的基础技术。他已经不仅仅只是拥有一个维基百科的条目,事实上,有很多专门的网站来讲述他的作品以及他生平的事迹。

在人的有生之年能够达到这一境界的程序员屈指可数。

代表人物:Dijkstra、Knuth、Kay。

注:Dijkstra是一名荷兰的计算机科学家,他因发明了计算机编程语言而于1972年获得了图灵奖。Knuth是《计算机程序设计艺术》一书的作者,他被称为算法分析之父。Kay是一名美国的计算机科学家,是面向对象编程、视窗图形用户界面设计的先驱者,他有一句名言是:“预测未来的最好办法是创造未来。”

2. 成功的程序员

成功的程序员不仅拥有广泛的知名度,同时还运营着一个不错的公司,甚至控制了整个产业链。他们拥有绝对的自由,可以做着自己想做的事情。他们同时还有着把“自由”带给广大程序员同胞的梦想。

这一境界的程序员最受人羡慕。要到达这一境界,更多的是需要商业上的才能,而不是你的编程能力。

代表人物:比尔·盖茨、Carmack、DHH。

注:比尔·盖茨是微软公司的创始人,他是个电脑神童,13岁开始编程,20岁开始领导微软;他同时也是个商业奇才,他利用自己的远见卓识和精明的商业头脑让微软名噪天下,把软件做成了人们生活中不可或缺的东西,成就了今日的微软帝国。Carmack是Id软件公司的创始人,该公司主要从事电脑游戏以及游戏引擎的开发,作品有《半条命》、《反恐精英》、《毁灭战士》等。DHH是一名丹麦的程序员,他建立了“Ruby on Rails”Web应用架构,并与人合写了《Web开发敏捷之道:应用Rails进行敏捷Web开发》一书。

3. 知名程序员

进入这一境界的程序员也不错,当然前提是,你得有一份不错的工作。

这个境界的程序员虽然在圈子里很有名,但是成为名人并不意味着你可以靠这个赚取收入并且养活自己。出名固然不错,但成功更为关键。你可能在一家非常知名的大型技术公司工作,也可能在一家很有影响力的小公司,或者是在一个很有希望的创业团队。不管怎么样,其他的程序员都或多或少地听说过你,并且你对你所在的领域有着积极的影响。

4. 胜任的程序员

你作为一名软件工程师非常成功,因为你的能力使你在工作中游刃有余。你从来不会为找一份满意的工作而发愁。你的同事也非常尊敬你。每一家你工作过的公司都因为你的加盟而在某些方面得到了提升。

但问题是:你接下来的方向在哪里?

5. 普通程序员

这个境界的程序员能够基本应付一般的编程工作。他们自己也很清楚,由于天资所限,他们很难成为杰出的程序员。

其实,天赋跟成功的关系并不大。如果你有敏锐的商业嗅觉和不错的人际交往能力,你依然可以变得很成功。如果你是一个普通的程序员,但你还能靠这一行当过上不错的生活,那已经说明你是很有才的,只是你不必非得干程序员这一行。

人贵自知之名。通常你的能力都会比你自认为的要低。缺乏天赋并不是什么大不了的事情。要勇敢一点,发掘自己的特长,并且充分地加以发挥。

6. 业余程序员

业余程序员通常都热衷于编码。他们可能是一些很有前途的学生或实习生,也可能正在参与某些开源项目,或者利用个人闲暇时间开发一些“好玩的”应用程序或网站。从他们的代码和创意可以看得出,他们是一群很有想法、充满激情的人。

成为一名业余程序员是件好事。这个境界的程序员可以通过自我提升,很快速地胜任程序员这个职业。

7. 低调的程序员

还有一些坊间流传的比较有个性的程序员,比如JoeCoder,很有能力但是没啥令世人瞩目的成就。他们可能服务于某家大型公司。对于这些人来说,写代码仅仅是份工作而已,并非他们生活的全部。这没什么错,挺好的!

8. 烂程序员

这个级别的程序员技能极其匮乏(已无境界可言),他们通常是因为某些阴差阳错的原因才干上这一行的。他们所做的任何事情都会给他们的同事带来痛苦和灾难——当然可能也有一个例外,就是他们的同事也是一帮差劲的程序员,差到连身边全是一帮烂程序员都意识不到。

如果要给烂程序员下一个定义的话,那就是:没有金刚钻,却偏偏揽了瓷器活。

应该承认,以上所有的这些境界定义得并不严谨。其实,不是所有的程序员在他们的职业生涯中都渴望相同的东西。思考一个程序员在他10年、20年、乃至30年、甚至一生的时间内所能达到的成就,是非常有意义的!想一想,你最崇拜哪个程序员?到底是他的什么成就,使得你对他有如此的崇拜?

话说回来:你究竟想要过怎样的生活?

(0)

相关推荐

  • 程序员的八种境界,你在哪一境?

    如果将程序员分为本文的8种类型,你会是哪一种呢? 在求职的时候,相信很多人都被问过这样的问题,"你对自己未来5年的职业规划是怎么样的?" 每当我被问起这个问题的时候,我的脑海里总是浮现出TwistedSister乐队1984年拍摄的一段视频里的这个场景:一位老师对着他的学生大喊,"我想要你告诉我,不,是告诉全班同学,你究竟想要过怎样的生活?" 注:TwistedSister是一支源自美国纽约的摇滚乐队,成立于1970年代早期.后来经过将近10年的奋斗,他们在80年代

  • 8种类型极品程序员,不知你属于哪一种?

    在日常工作里肯定会发现很多有趣的事情,极品程序员所做的事就是很有意思的.事实上,现在所讨论的极品程序员主要是从他们的判断力.行为举止.个人态度和匪夷所思的工作方式上来判断的,有的时候这些程序员一味的只是追求文档上的内容,而不擅于用分析方式来解决问题. 几乎每一个软件开发者多多少少都会出现头脑短路的现象,也就是说,下面所列举的各种极品程序员类型,总有一款是属于你的. 1. 钟爱型程序员:万般宠爱集于一种技术 这种类型的程序员所遇到的致命错误就是:只钟爱一种技术,对别的技术不来电.其实这不是什么值得

  • php程序员应具有的7种能力小结

    一,php能力   1,了解阶段,您能写一些代码,因为那是在手册和google的帮助下,您才完成的.变量乱定义,N多函数不知道,做起事来很慢,想到什么写什么,代码写的比较乱,后期维护很麻烦.   2,熟悉阶段,经常查函数,手册估计也看过一,二遍了,常用的函数基本上您都了解了.后 期维护给您带来了不少痛苦,您开始发现自己的代码有很多不足,开始思考如果改进自己的代码,如何站在项目的角度来规划自己的代码,而不是想到什么写什么, 知道如何来减少冗余代码,使您的代码清晰,知道什么样的代码写出来让人看着舒服

  • 作为PHP程序员你要知道的另外一种日志

    前言 本来准备讲解nginx和apache的日志的,但是个人不太推荐apache(纯属个人爱好),这里就不介绍apache的日志了. 作为一名程序员,比码代码还重要那么一点点的东西就是日志的分析和查询.下面列出常见日志及设置方法. 配置文件 nginx分access_log和error_log两种日志 设置需要在nginx.conf中,默认通过源码包编译安装nginx目录应在 /usr/local/nginx 目录下,如果你通过yum或者其他方式安装,不清楚或不知道nginx具体安装目录,可以使

  • 经验丰富程序员才知道的8种高级Python技巧

    本文将介绍8个简洁的Python技巧,若非经验十足的程序员,你肯定有些从未见过.向着更简洁更高效,出发吧! 1.通过多个键值将对象进行排序 假设要对以下字典列表进行排序: people = [ { 'name': 'John', "age": 64 }, { 'name': 'Janet', "age": 34 }, { 'name': 'Ed', "age": 24 }, { 'name': 'Sara', "age": 6

  • 经验丰富程序员才知道的15种高级Python小技巧(收藏)

    目录 1.通过多个键值将对象进行排序 2.数据类别 3.列表推导 4.检查对象的内存使用情况 5.查找最频繁出现的值 6.属性包 7.合并字典(Python3.5+) 8.返回多个值 9.列表元素的过滤 filter()的使用 10.修改列表 11.利用zip()来组合列表 12.颠倒列表 13.检查列表中元素的存在情况 14.展平嵌套列表 15.检查唯一性 1.通过多个键值将对象进行排序 假设要对以下字典列表进行排序: people = [ { 'name': 'John', "age&quo

  • PHP程序员必须知道的两种日志实例分析

    目录 前言 php-fpm 慢日志 开启慢查询日志 php-error 错误日志 开启错误日志 本文实例讲述了PHP程序员必须知道的两种日志.分享给大家供大家参考,具体如下: 前言 作为一名程序员,比码代码还重要那么一点点的东西就是日志的分析和查询.下面列出常见日志及设置方法. php-fpm 慢日志 php慢日志需要在php-fpm.conf设置,如果使用源码包安装默认请执行下面命令 cp php-fpm.conf.default php-fpm.conf 默认通过源码包编译安装php目录应在

  • 搞笑的程序猿:看看你是哪种Python程序员

    不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的Python程序员编出的Python代码,显示出了不同的风格,代码都很简单,有趣.下面让我们一起来看看一个Python程序猿进阶的全过程吧.(偷笑) 编程新手 def factorial(x): if x == 0: return 1 else: return x * factorial(x - 1) //不简单啊,迭代,新手哦. print factorial(6) 一年编程经验(学Pascal的) def factori

  • 程序员编程十条戒律

    1.- DRY: Don't repeat yourself. DRY 是一个最简单的法则,也是最容易被理解的.但它也可能是最难被应用的(因为要做到这样,我们需要在泛型设计上做相当的努力,这并不是一件容易的事).它意味着,当我们在两个或多个地方的时候发现一些相似的代码的时候,我们需要把他们的共性抽象出来形一个唯一的新方法,并且改变现有的地方的代码让他们以一些合适的参数调用这个新的方法. DRY 这一法则可能是编程届中最通用的法则了,目前为止,应该没有哪个程序员对这一法则存有异议.但是,我们却能发

  • 一篇关于程序员性格的文章第1/3页

    每个领域的工程人员都知道工具和他们所用材料的局限性.如果你是一位电机工程师,你就应明白各种材料的导电性和使用电压表的各种方法.如果你是一位建筑师,你就应明白木材.混凝土.钢材的性能.而如果你是一位软件工程师,你的基本建筑材料是人的聪明才智,并且你的主要工具是你自己.建筑师是将建筑物结构进行详细的设计,然后将设计蓝图交给其它人去建造,而你则是一旦当你从细节上对软件作出设计后,软件生成过程也就结束了. 编程的整个工作就如建造空中楼阁一样--它并不是纯粹的人工活动.于是,当软件工程师研究工具和材料的必

随机推荐