许多编程的职位都会到达最高峰,并开始衰落——这是很多程序员不想面对的,但却是一个不争的事实。这之后再找一份程序员的工作会变得越来越难,很多人发现这个事实时束手无策。本文会提供一些重要的职业信息,值得思考一下,以便有所准备。

TechCrunch 发布了一篇文章「硅谷黑幕:技术人员年龄歧视(译文链接)」,文中引用的研究发现:对一个程序员来说,能从事高效的开发的年龄段是有限的。这个问题确实存在,而且非常严峻。
程序员的未来是什么样的?
程序员的职业之路是什么样的?
对于这些路应有什么样的选择和期望?
人人都知道程序员可以向经理或团队领导发展。但很多程序员不明白经理这个职位的期望和工作要求。当然,我们都有经理,但怎样才能成为经理呢?要具备什么素质?中层管理者和一个高级程序员之间有什么区别?
在这篇文章中,我会拉开帷幕,介绍从一个从初级程序员到顶级CTO的潜在职业之路。
注意:很多伟大的职业生涯停留在了不同的职位上,直到退休。一些职业生涯却连连升级。但是管理和领导角色并不适合每一个人,几年以后你可能会发现你在管理上的兴趣改变了。二十几岁的时候你可能不喜欢做经理,但是四十岁时你可能不再喜欢写代码了。未来什么样,谁都很难说。然而,多了解一下你的选择和情况总是好的。
下面一张图表示的是程序员的各个职位的平均工资。注意在垂直水平上,一些人可能拿着两倍或者三倍于别人的工资(像是银行,贸易等行业)。所以这些数字仅代表了一个平均水平,并不全面。

初级程序员
0-3年工作经验(一般是刚从大学毕业)
会写简单的脚本
初步了解整个应用程序的生命周期
初步了解数据库和应用程序的服务(队列,缓存等)
不需了解复杂的应用中的每一个部分
当你刚刚踏入程序员的行列中来的时候,可能会感到畏缩和烦恼。会时常感觉到自己资历尚浅,惊讶为什么会有人写出这么大而复杂的程序。不久之后,你就会想为什么自己还没有升级到高级程序员。看看其他的高级程序员,你觉得自己做着跟他们相同的工作。
但是区别就在于初级程序员缺乏经验。即使是学习最快、最聪明的初级程序员,也没有接触到足够多的代码和边界情况,以胜任高级程序员的工作。在软件开发方面,软件设计模式也是一种智慧。虽然在这方面可以阅读相关的书籍,但还是需要写足够多的代码,将错误尽可能地暴漏出来,真正理解软件设计模式的价值。
高级程序员
至少四年工作经验
能写较复杂的程序
深入理解整个应用程序的生命周期
掌握数据库和应用服务(队列,缓存等)
要了解应用程序的每一个方面
称职的高级程序员非常擅长构建大型程序。担任高级程序员占了程序员生涯的大部分。事实上,如果你不喜欢管理的工作而仅仅喜欢写代码,可以一直做一个高级程序员,我就雇佣了一些终生做程序员的人,但是,当老了以后,这项工作也会变得困难。
这个职位也可以作为一个过渡。一旦你掌握了足够的技术,那么很可能就有能力担任一家技术创业公司的创始人或者CTO了。作为一个创始人或者CTO,写代码的就会就少了,更多的是需要处理事务的技巧。但是深入理解技术非常有必要,是做好这份工作必不可少的部分。
团队领导或架构师
七年以上开发经验
掌握高级程序员必备的技术
团队领导:向架构师过渡
架构师:没有更高的技术方面的职位
做了七年程序员之后,如果你觉得不喜欢管理方面的工作,那么可以考虑一下做架构师,这是技术方面最顶峰的职位。