惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
有赞技术团队
有赞技术团队
www.infosecurity-magazine.com
www.infosecurity-magazine.com
大猫的无限游戏
大猫的无限游戏
爱范儿
爱范儿
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threatpost
V
Visual Studio Blog
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
人人都是产品经理
人人都是产品经理
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Cloudflare Blog
N
News and Events Feed by Topic
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
AWS News Blog
AWS News Blog
S
SegmentFault 最新的问题
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Spread Privacy
Spread Privacy
J
Java Code Geeks
博客园 - 聂微东
T
Tor Project blog
宝玉的分享
宝玉的分享
博客园 - 叶小钗
Webroot Blog
Webroot Blog
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Heimdal Security Blog
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
I
InfoQ
Security Latest
Security Latest
Martin Fowler
Martin Fowler
Hacker News: Ask HN
Hacker News: Ask HN
P
Privacy International News Feed
C
CERT Recently Published Vulnerability Notes
Latest news
Latest news
雷峰网
雷峰网
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cisco Blogs
H
Help Net Security
L
LINUX DO - 最新话题
L
LINUX DO - 热门话题

卡瓦邦噶!

服务器高性能网络调优 | 卡瓦邦噶! 为何写作 | 卡瓦邦噶! 读《金阁寺》 | 卡瓦邦噶! 雨季又来 | 卡瓦邦噶! MTU Probe 引起的初始延迟 | 卡瓦邦噶! 3.5 秒的固定延迟问题 | 卡瓦邦噶! 学习网络的一点经验 | 卡瓦邦噶! ARP 问题诊断 | 卡瓦邦噶! 网络断断续续…… | 卡瓦邦噶! Piccolo P2P 镜像分发 | 卡瓦邦噶! 一起看电影 | 卡瓦邦噶! 《征服C指针》 | 卡瓦邦噶! 我的姥姥 | 卡瓦邦噶! WordPress网站迁移方案 Python的哲学 Python 3.5的新特性 学校不教的计算机课 垃圾回收(GC)的三种基本方式 在编程中体验纯粹的快乐 从《美丽新世界》谈自由 在快钱实习 迷人的嗓音和迷人的故事——《Sleepyhead》 Python 的十个自然语言处理工具 记一个愚蠢的bug 一年炉石传说的游戏体验 《以撒的结合:重生》网页版图鉴 分清 C++的指针、引用和数组 笑话三则 自由比皇帝更伟大——《悲惨世界》笔记 Git 10 周年访谈:Linus 讲述背后故事 用 0x3f3f3f3f 设定最大int值的优点 Joel给计算机系学生的建议 一个词法分析器的简单实现 怎样才算健康的生活方式 MacVim 配置攻略 学习培训课程的视频效果好吗? 语言的控制 可悲的大多数 CSS样式思维导图 2014年终总结 奥巴马成为首位写程序的美国总统 青岛老城区的下水道好在哪里? 做优秀 UI 的七个建议(第二部分) 选择爱情的骑士 Git简明教程 Java集合总览 读 《1984》 java问答:终极父类(六)——等待/唤醒和接口 Java 问答:终极父类(五)——toString() Hyperlapse快速视频背后的技术细节 平庸之恶 Java程序员须知的七个日志管理工具 苏州 逛书摊随想 关于考试作弊 你的工作不仅仅是编程 推荐在线学习Java的英文资源 关注女性命运——《千禧年三部曲》 用好你的幻灯片——《演说之禅》 使用ReentrantLock和Lambda表达式让同步更纯净 新手学编程,从哪里开始? 程序员都是工程师吗? 不要学习代码,要学会思考 Java 问答:终极父类(四)——hashCode() Java 问答:终极父类(三)——finalize()和 getClass() 我是一名摄影家 写给何小树的城市指南 为什么一些语言会比别的快? Java的常见误区与细节 跟朋友在一起玩游戏 死神永生——读《三体》 五种类型的程序员 创业圣经——读《黑客与画家》 纪念加西亚·马尔克斯 Junit中处理异常的另一种方式:catch-exception Java8采用Martin Fowler的方法创建内部DSL Linux HotSopt虚拟机GC线程的CPU占用率 J2EE概念介绍 如何成为一名黑客 Java 问答:终极父类(二)——equals()方法 为什么我喜欢Java Java 问答:终极父类(一)——clone()方法 七个改变世界的Java项目 java中默认类型转换的小问题 传统与创新 欢迎来到互联网 莫言和马尔克斯——读《生死疲劳》 位运算的妙用 读《人为什么活着》 写博客教会我的事情 中国特色操作系统 2013年总结 《永不妥协》影评 恨不相逢未嫁时——《廊桥遗梦》影评 如何优雅地使用PPT 给明年依然年轻的我们 天才与柱子 黑客守则和黑客精神 Looking for Freedom——《被解救的姜戈》 简洁之道
程序员职业之路的选择
laixintao · 2014-05-17 · via 卡瓦邦噶!

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

Screen-Shot-2014-05-12-at-2.48.42-PM

TechCrunch 发布了一篇文章「硅谷黑幕:技术人员年龄歧视(译文链接)」,文中引用的研究发现:对一个程序员来说,能从事高效的开发的年龄段是有限的。这个问题确实存在,而且非常严峻。

程序员的未来是什么样的?

程序员的职业之路是什么样的?

对于这些路应有什么样的选择和期望?

人人都知道程序员可以向经理或团队领导发展。但很多程序员不明白经理这个职位的期望和工作要求。当然,我们都有经理,但怎样才能成为经理呢?要具备什么素质?中层管理者和一个高级程序员之间有什么区别?

在这篇文章中,我会拉开帷幕,介绍从一个从初级程序员到顶级CTO的潜在职业之路。

注意:很多伟大的职业生涯停留在了不同的职位上,直到退休。一些职业生涯却连连升级。但是管理和领导角色并不适合每一个人,几年以后你可能会发现你在管理上的兴趣改变了。二十几岁的时候你可能不喜欢做经理,但是四十岁时你可能不再喜欢写代码了。未来什么样,谁都很难说。然而,多了解一下你的选择和情况总是好的。

下面一张图表示的是程序员的各个职位的平均工资。注意在垂直水平上,一些人可能拿着两倍或者三倍于别人的工资(像是银行,贸易等行业)。所以这些数字仅代表了一个平均水平,并不全面。

8370_140522103934_1

初级程序员

  • 0-3年工作经验(一般是刚从大学毕业)
  • 会写简单的脚本
  • 初步了解整个应用程序的生命周期
  • 初步了解数据库和应用程序的服务(队列,缓存等)
  • 不需了解复杂的应用中的每一个部分

当你刚刚踏入程序员的行列中来的时候,可能会感到畏缩和烦恼。会时常感觉到自己资历尚浅,惊讶为什么会有人写出这么大而复杂的程序。不久之后,你就会想为什么自己还没有升级到高级程序员。看看其他的高级程序员,你觉得自己做着跟他们相同的工作。

但是区别就在于初级程序员缺乏经验。即使是学习最快、最聪明的初级程序员,也没有接触到足够多的代码和边界情况,以胜任高级程序员的工作。在软件开发方面,软件设计模式也是一种智慧。虽然在这方面可以阅读相关的书籍,但还是需要写足够多的代码,将错误尽可能地暴漏出来,真正理解软件设计模式的价值。

相关链接:

高级程序员

  • 至少四年工作经验
  • 能写较复杂的程序
  • 深入理解整个应用程序的生命周期
  • 掌握数据库和应用服务(队列,缓存等)
  • 要了解应用程序的每一个方面

称职的高级程序员非常擅长构建大型程序。担任高级程序员占了程序员生涯的大部分。事实上,如果你不喜欢管理的工作而仅仅喜欢写代码,可以一直做一个高级程序员,我就雇佣了一些终生做程序员的人,但是,当老了以后,这项工作也会变得困难。

这个职位也可以作为一个过渡。一旦你掌握了足够的技术,那么很可能就有能力担任一家技术创业公司的创始人或者CTO了。作为一个创始人或者CTO,写代码的就会就少了,更多的是需要处理事务的技巧。但是深入理解技术非常有必要,是做好这份工作必不可少的部分。

团队领导或架构师

  • 七年以上开发经验
  • 掌握高级程序员必备的技术
  • 团队领导:向架构师过渡
  • 架构师:没有更高的技术方面的职位

做了七年程序员之后,如果你觉得不喜欢管理方面的工作,那么可以考虑一下做架构师,这是技术方面最顶峰的职位。架构师有时候也写代码,但大多数时间他们在设计复杂的系统,然后交给由初级和高级程序员们组成团队来实现。架构师的工作就是,利用他技术方面的智慧以及多年的经验(学习程序的模式和反模式),来为软件项目创建合适的架构。有新的需求的时候,软件架构师需要对项目选择正确的方向,并估算应用程序的规模。

首席开发人员的工作是给其他初级的和高级的程序员指导和方向。虽然首席开发者通常不会做雇佣、解雇程序员的事情,但是他们的许多工作和经理无异。他们需做开发方面的协调,并在写代码的时候做出实现方面的决定。

中层领导

  • 通常包含经理和负责人等职位(开发经理,项目经理,产品经理)
  • 做发人员的老板(例如人事工作)
  • 向高级主管汇报工作

管理人员通常向工程师发展。他们的方向很多:如果你喜欢接触开发团队,并对细节感兴趣,那么可以选择产品经理,做你的伙伴们的盟友;如果你对产品特性和增强其性能着迷,那么做一个产品经理是最好的选择。

然而大多数人的选择是开发经理。这是个经理中经典的职位,要求平衡项目经理和产品经理的需求和开发团队的性格之间的矛盾。这个职位对人事处理和化解矛盾的技能要求较高,要经常做出退让。开发经理的工作不仅仅是雇佣新人,在必要时也要解聘一些人。这就意味着很难和他们成为朋友。因为一旦和他们成了朋友,就处在了一个尴尬的位置。如果你认识的一个人从开发人员的职位升到了开发经理,你会发现这个人几乎在一夜之间变了。这就是为什么,这通常是一份费力不讨好的工作。

但如果领导一个团队胜利了,也是非常有收获的。如果你想提高领导才能,准备做一个管理角色,可以读读 Phil Jackson 的书 《Eleven Rings: The Soul of Success》 

高层领导

  • VP,CTO 或CEO
  • 是中层领导的老板(例如 负责人事)
  • 向另一个高层领导或者董事会报告

和中层领导显而易见的不同是,高层领导负责管理中层领导。然而经理通常是不需要管理的,他们需要的是指导。中层领导需要知道高层领导的方向并跟进,不会得到非常具体的指示。

高层领导的工作是,做重要的决定,并激励工作人员紧跟决策,增加对工作目标的信心。

你在这条路上走得越远,写代码的机会就越少。到达顶峰的时候,做的都是人事方面的工作了。中层领导依然能在核心技术方方面体验到乐趣,但是对于高层领导,就必须把所有的时间花在人事上:激励员工,领导,指定策略。如果你写代码,也只能是不重要的项目(除非你是比尔盖茨,但大多数人不是比尔,他是个极端的特例)。Phil Jackson 的书要求,在这个职位上必须经常阅读,不能安于现状。

高层领导的工作要求确保公司的每一个人都朝着相同的方向努力,确保方向的正确,确保每一个人知道他们朝这个方向努力的原因。这个工作难度非常大,而且充满着危险,心酸和陷阱。如果你想要一个高层领导,读一读Ben Horowitz的《The Hard Thing About Hard Things》.

高层领导从来都不是天生的,而是经过不断地努力达到的。Ben Horowitz的博客里有有关成为CEO的例子。

结论

今天,程序员的选择是丰富多彩的。而且对于程序员的职业要求比历史上任何时候都要高。对程序猿来说这是一个好的时代。但是任何时候规划你的职业都不算晚。希望本文能排得上用场,给你一些指导和精神食粮。

本文由赖信涛翻译自CenturyLinkLabs