相信很多人都曾经被面试官问过这样的问题:”你对自己未来5年的职业规划是怎样的?“,每当我被问起这个问题时,我的脑海中总是会浮现出《Twisted Sister》(一部拍摄与1984年的电影)中的这个场景,一名老师对着他的学生大喊。
我想要你告诉我,不,是告诉全班的学生
你究竟想要怎样的生活?
一般情况下,你的很自然的想法就是:你要变得很牛,或者至少变成一个很牛的程序员。尽管这个问题看起来并不像其它一些同样老掉牙的问题(比如,”你觉得你最大的弱点是什么?“)那么严肃,但很可能你还是会觉得难于回答,回避这个问题明显不是一个明智的选择。
但是,在我看来,这个问题同样是一个相当严肃的问题,只不过大部分人都没有注意到他的重要性,不是对面试官,而是对你自己。
对于这个问题,大部分人都会选择一个不痛不痒的答案来敷衍面试官,但如果你深入的思考这个问题,你会发现这实际上是一个关于软件开发人员可能的职业 生涯轨迹的问题,当然,我们选择这一行是因为我们喜欢这行,并且幸运的得到老天的眷顾,我们干上了这行,但你能在50岁的时候依然坐在电脑前面敲代码 嘛?60岁呢?所以,我们必须在还年轻的时候先思考一下这个问题:作为一个程序员,最完美的职业生涯应该是什么样?
如果你懒得自己思考,那就让我来告诉你吧,基本上,这个世界的程序员可以分为8种类型:
1. 不朽的程序员
这是最高的级别,虽然你的人已经挂了,但是你的代码却依然活着,你成为计算机博物馆中的一个永久收藏,为数众多的程序员持续的学习和阅读你的作品。 你在生前已经赢得了许多的赞誉,发表了大量非常重要的论文或者是创造了许多影响到计算机专业课程设置的基础技术。你已经不仅仅只是拥有一个维基百科的条 目,会有许多专门的网站讲述你的作品以及你生平的事迹。
能够达到这一级别的程序员屈指可数,这一级别的代表人物是:Dijkstra, Knuth, Kay
2. 成功的程序员
成功的程序员不仅拥有广泛的知名度,并且还运营着一个不错的公司——甚至是整个产业链。他们拥有绝对的自由可以做他们想做的事情。
这一级别的程序员是最多人羡慕的,到达这一级别更多的是需要商业上的才能而不是你的编程能力。
代表人物:Gates, Carmack, DHH
3. 知名程序员
成为这个级别的程序员也不错,当然前提是,你得有一份不错的工作。
这个级别的程序员虽然在圈子里很有名,但是成为名人并不意味着你可以靠这个获取收入甚至是养活你自己。知名固然不错,但无疑成为成功的程序员更加的 好。你的公司可能是一家非常知名的大技术公司,也可能是一家很有影响力的小公司或者是一个最新潮的创业团队,其它的程序员都应该或多或少的听说过你,并且 你对你所从事的领域可以起到积极的影响。
4. 工作杰出的程序员
你做为一个软件工程师的职业生涯非常的成功,因为你的工作能力相当杰出,你从来不会为找不到一份你满意的好工作好发愁,你的同事也非常尊敬你,每一家你工作过的公司都因为你的加盟而在某些方面得到了增强。
但问题是:你接下来的方向在哪呢?
5. 能力一般的程序员
这个级别的程序员,一般来说,由于天赋的差异,通常很难成为杰出的程序员,但天赋跟成功的关系其实不是很大,如果你有很好的商业或者是与人沟通的技 能,你依然可以直接跳升到成功的程序员级别。如果你是一个能力一般的程序员,但你却靠这行当过上了不错的生活,那说明你必须在其它方面有很好的天赋(除了 编码)。
不要怀疑自知的价值,通常你的能力都会比你认为的要少,但缺乏天赋并不是什么大不了的事情。要勇敢一点,发掘自己的特长,并充分利用,你也会成功的!
6. 业余的程序员
业余程序员通常都很喜欢编码,一般来说以学生和实习生为主,他们通常会向开源项目共享代码,或者利用空闲时间凭自己的兴趣开发一些应用,他们的代码和创意通常看起来都很有激情。
成为一个业余程序员是个好事情:这个级别的程序员可以很快速的成为一名工作杰出的程序员。
7. 未知的程序员
还有一些很知名的程序员,比如Joe Coder,有能力但是不太引人注目,很可能在为某个大公司工作。对于这类人来说,写代码仅仅只是工作,并非他们生活的全部,这没什么错,挺好的。
8. 差劲的程序员
这个级别的程序员通常是因为某些意外阴差阳错的成为了程序员,但他们本身并不具备写代码的技能,所有他们做的东西都成了他们同事的噩梦——当然有一种例外,就是他的同事也是十分差劲的程序员,差到都不具备与他的同事进行基本的沟通。
基本上,如果要给差的程序员下一个定义,那就是:没有金刚钻,却揽了瓷器活。
当然,这个级别排的不是很严肃,并且每个人对自己的职业规划都不一样。它只是想给你一点启示,那就是你在未来的10年,20年,30年甚至是你整个一生究竟能够完成哪些事情,你最为崇拜那个程序员,他身上的哪些特点最为吸引你?
简而言之,你究竟想要过怎样的生活?
分享到:
相关推荐
### 修炼一名程序员的职业...通过这种方法的学习,你将能够逐步建立起在特定开发环境下的编码能力,这是成为一名具有较高职业水准程序员的重要一步。当然,这仅仅是开始,成为一名真正的高手还需要不断地实践和学习。
在IT行业中,成为一名高级程序员是许多从业者的职业发展目标。这不仅意味着技术能力的提升,还代表了对整个行业的深刻理解与洞察。根据提供的信息,我们可以整理出以下关键知识点: #### 1. 数据结构与算法 数据...
### 一个创业公司程序员的自我修养 #### 一、引言 随着互联网行业的快速发展,越来越多的人选择加入创业公司,特别是作为技术核心的程序员们。在这样的环境中,如何快速适应并成长成为了每个程序员面临的挑战。本文...
它的设计目标是提供一种低级别的、接近机器语言的编程工具,同时保持高级语言的简洁性。C语言以其高效、灵活和移植性强的特点著称,是许多操作系统如UNIX的基础。C语言的关键概念包括变量、数据类型、控制结构(如if...
【标题】"软考程序员历年试题 word" 涉及的知识点主要集中在计算机科学与技术、软件工程以及程序设计等领域,这些是软考程序员级别考试的核心内容。软考程序员考试是中国计算机技术与软件专业技术资格(水平)考试的...
在学习过程中,参考"C#高级程序员培训1.ppt"这份资料,你将能够深入了解这些高级主题,并逐步成为一名熟练的C#高级程序员。同时,由于标签中包含了Java、Ajax和Spring,这表明可能课程中也会提及跨平台开发和Web应用...
**堆**是一种特殊的树形数据结构,其中每个父节点的值都大于或等于(大顶堆)或小于或等于(小顶堆)其子节点的值。例如,关键码序列“10, 20, 30, 40, 50”(_A_)构成一个堆。**堆排序**是一种基于比较的排序算法...
【描述】:本文探讨了技术进阶的路径,分析了软件开发领域的等级体系,并提供了成为更高级别程序员的策略。 【标签】:面试,技术进阶 【正文】: 在软件开发的世界里,每个程序员都有自己的成长轨迹和目标。许多...
初级程序员是IT行业中入门级别的职位,对于初学者或者即将参加程序员资格考试的人来说,熟悉历年初级程序员试题及其答案是至关重要的。这份压缩包文件包含了历年来的考试题目和对应的解答,可以帮助考生更好地理解和...
Transact-SQL(T-SQL)是SQL Server的核心编程语言,它是SQL标准的一种扩展,专为微软的SQL Server设计,提供了一系列功能强大的特性,包括数据定义、数据操作和数据控制。T-SQL不仅支持基本的SQL标准语法,还添加了...
7. 虚拟内存:虚拟内存是现代计算机系统中普遍采用的一种内存管理技术,它提供了一个比实际物理内存更大的地址空间。程序员需要了解虚拟内存的工作原理和实现机制,以及它对程序性能的影响。 8. 输入/输出系统:...
iBatis是另一种流行的Java持久层框架,本书通过实战案例介绍了如何有效地使用iBatis进行数据库操作。 - **《精通Hibernate:Java对象持久化技术详解》** 星级:★★★★☆ 适合对象:初级,中级,高级 ...
CodeSmith 是一种基于模板的代码生成工具,能够生成包括简洁的强类型集合和完整应用程序在内的任何东西。用法 CodeSmith,可以生成包括简洁的强类型集合和完整应用程序在内的任何东西。这款神器附带了很多模板,包括...
15. **抽象类(abstract class)**:抽象类是一种不能被实例化的类,通常包含抽象方法(没有实现的方法),子类必须实现所有抽象方法才能被实例化。 16. **何时声明抽象类**:当类包含抽象方法或未实现父类的抽象...
标题中的“一种融合程序员和神经网络的自动化程序生成方法”揭示了这个压缩包内容的核心——它涉及到了将人工智能,特别是神经网络技术,与传统的编程工作相结合,以实现自动化程序生成。这种技术旨在提高编程效率,...
### JAVA程序员面试问题详解 #### 1. Java与JVM的关系 Java是一种广泛使用的编程语言,而JVM(Java虚拟机)...同时,培养良好的编码习惯、文档撰写能力以及团队合作精神,也是成为一名优秀Java程序员不可或缺的素质。