你有没有遇到过那个经典的面试问题,"你预见过自己5年后的职位吗?"。每当有人这样问时,我就会想到Twisted Sister乐队从1984年开始发行的某张专辑。当然是玩摇滚,至不济也得是个摇滚明星级别的程序员吧。这种问题通常得不到正面回答——就像那种在面试 中无病呻吟式的陈词滥调,"你最大的缺点是什么?"。有的时候是不是太大起大落?以至于那些无辜的旁观者会受到伤害。
但是,我认为这是一种不一样并更严肃的话题,它应该引起足够的重视。而这并不是为了面试官好,而是为你好。文章开始的那个问题听起来有点老生常谈,而 且大部分人都是有备而来。但是这个问题却会引起更深层的思考:一名软件开发人员的职业生涯会是怎样的呢?当然,我们干着一行是因为我们热爱编程,并且在这 一点 上,我们非常幸运。但是,当你50岁的时候,你还会坐在电脑前编程吗?当你60岁呢?对于那些渴望成为程序员的程序员来说,最好的职业生涯出路是什么呢?
开个玩笑,如果我告诉你,程序员可分为八种级别,你会怎么想呢?
1. 不朽的程序员:
这是最高层次。你写的代码并没有随你而去,而是保留了下来(万古流芳)。你会在计算机领域永垂不朽。其他程序员会研究你的成果和著作。你可能获得了图灵奖,发表过有巨大影响力的论文,或者发明了一项或多项为众人所知的基础性技术,已经影响了编程事业的发展。
介绍你的并不只是个维基百科词条——很多网站致力于研究你的生平和成就。只有很少的程序员达到这种高度。
代表人物:Dijkstra(迪杰斯特拉)、 Donald Knuth(唐纳德·克努斯/中文名:高纳德)、 Allan Kay (阿兰·凯)
2. 成功的程序员:
这些程序员既声名远扬又借助自己的编码创立完整业务,甚至整个行业。他们给自己创造了真正的自由:自己决定从事什么工作的自由。并且跟自己的同事分享这种自由。
这是大部分程序员都渴望的一种高度。能否达到这种高度往往更多的取决于业务技巧而不是编程能力。
代表人物:Bill Gates(比尔·盖茨)、John Carmack(约翰·卡马克)、DHH (戴维·海涅梅艾尔·汉森)
3. 著名的程序员:
这 也是一个不错的层次,但是美中不足是出名不能当饭吃。在编程这个圈子里,你非常有名。但是,有名气 并不一定就意味着你会藉此获利来养活自己。出名很好, 但成功更佳。你可能为一家著名的大公司或者有影响力的小公司工作,也可能是一个普通创业团队的一员。其他程序员对你都有所耳闻,你正对这个领域产生积极影 响。
4. 能干的程序员:
作为一名软件开发人员,你事业有成。公司需要你的技术,找份好工作对你来说永远不是件难事。你的同事尊重你。你工作过的每家公司都在你从事的方面取得了长足的进展。但是,仅此而已,别无他长?
5. 普通程序员:
处 在这个水平,你有自知之明,知道自己不是一个伟大的程序员——可能你永远都不会是。天赋跟成功鲜有关 联。如果你拥有生意头脑和人际技巧,你会非常成功。 如果你是一名平庸的程序员,但是能够以此谋生,那么可以说你是很有天赋的,但不一定在编程方面。别低这份估自知之明,因为有自知之明的人比你想要的要少。 有没有天赋无关紧要,只要你能《发现自己的强项
》并且持之以恒。
6. 业余程序员:
一 名业余程序员热爱编程,这说明:他可能是一名很有前途的学生或实习生,他们正在为开源项目做贡献,或 者在业余时间开发有趣的"仅供娱乐"应用程序或网 站。他们的想法以及代码表明他们充满热情并且很有前途。成为一名业余程序员是一件很不错的事情,从这个阶段可以很快成为一名有作为的程序员。
7. 不知名的程序员:
这是众所周知的典型的一种程序员:无名氏。他们有能力(通常会有)但不出色,可能为一家不知名的大公司工作,但那只是一份工作不是生活的全部。不过,那也没有什么问题。
8. 糟糕的程序员:
那些没有一点技术或能力但不知怎么就成了程序员的人。他们接触的每件事情都会成为同事们的苦难——这些员工更糟糕,他们甚至不知道在和别人合作工作。
这些糟糕的程序员有什么共同特征呢?按理说他们跟写什么样的代码无关——但不管怎样确实有关。
这种划分并不是非常严格。并不是每一名程序员都渴望在自己的职业生涯里只做同一件事。但是一名程序员在十年、二十年、三十年或者终其一生能够达到一个什么样的高度?这值得我们思考。你最敬佩哪位著名程序员?他们取得了怎样的成就赢得了你的尊敬?
简而言之,你想怎样度过此生呢?欢迎你在评论或微博中和大家分享。
本文出处:伯乐
在线 - 职场
博客
本文链接:http://www.jobbole.com/entry.php/341
分享到:
相关推荐
CIH病毒,全称为Chernobyl Virus,是由台湾程序员陈盈豪在1998年编写的一种破坏性极强的计算机病毒。该病毒以破坏计算机硬件而闻名,尤其是其能够重写BIOS,导致计算机无法启动。CIH病毒的首次公开版本是在1998年4月...
- **宏指令**:允许程序员创建可重用的代码块,提高代码的复用性和可读性。 4. **段(Section)和地址定位** 在 NASM 中,程序被划分为多个段,如 `.text`(代码段)、`.data`(数据段)等。ORG 指令用于设定段的...
此外,它还支持机器学习和人工智能,能实现更高级别的智能自动化。 4. Automation Anywhere:与UiPath类似,Automation Anywhere也是全球知名的RPA软件,提供了一个直观的工作台,用于设计和执行自动化流程。它的...
ASM是计算机科学中最基础的语言之一,它允许程序员直接对硬件进行操作,具有高效、底层的优势。这个项目可能是为了理解即时通讯软件的工作原理,或者是为了学习编程技术。尽管这个教程可能并不完全实用,但其背后的...
Color Cop 包含多种功能特性,具有取色器、放大镜(含有多个放大级别)、不同点阵的采样(单像素以及3乘3、5乘5取样)、抓取为网页安全色、颜色历史记录和一个辅助的调色板。同时,Color Cop 也可以将 RGB 十进制...
以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 设计模式之 Facade(门面?) 可扩展的使用 JDBC针对不同的数据库编程,Facade提供了一种灵活的实现. 设计模式之 Composite(组合) 就是将类用树形结构组合成...
本工具专注于Byte与Bit之间的转换,对于程序员来说,这样的工具是进行低级别编程或理解二进制数据流时非常有用的。 首先,我们来看“Byte转Bit”。一个Byte等于8位(Bits)。当你有一个字节的数据时,例如0x42...
3. ADO(ActiveX Data Objects):ADO是微软推出的更高级别的数据访问技术,相比ODBC,它提供了更简洁的API和更高的性能。在VC++6.0中,可以通过COM(Component Object Model)来使用ADO,例如使用CDaoDatabase和...
请注意,该书上所有的例子都得到了作者的授权,因此请不要进行未经授权的复制或转载。 **设定环境** - **Linux/FreeBSD**: 安装 GNUStep。为了编译GNUstep应用程序,需要执行位于 `/usr/GNUstep/System/Makefiles/...
然而,对于许多程序员来说,如何将Ajax与现有的应用程序进行有效集成仍然是一个挑战。DWR(Direct Web Remoting)作为一种简化Ajax编程的技术,为开发者提供了更为便捷的方式来构建动态网页应用。 《DWR中文文档v...