我曾在 CS 职业论坛/r/cscareerquestions
上
回答了一个问题,该回答描述了我在程序员职业道路早期
必须要涉足的几个领域,并就此引申出我为什么认为高级程序员不必担心自己的技术会过时。
我认为社区中有很多我们不太重视的软技能,这些软技能都有可能成倍地增加我们工作的影响力(作为个人贡献者和技术负责人)。这些软技能包括:
我的这一回答获得了很高的热度,论坛中也有一些读者请求我将其中的内容整理成可永久保存的版本以便于打印出来阅读,因此我决定将该回答总结成文章发到Medium 上。
/r/cscareerquestions
论坛上的原问题:
我喜欢编程,甚至在业余时间都喜欢学习,但是我仍然觉得自己要学的东西太多了,就像在跑步机上一样,永远在被迫追赶,永远学不完。
我脑海里有个唠唠叨叨的声音告诉我,在这样一个瞬息万变的行业中呆着是很糟糕的。因为等我年纪大了,自己使用的工具就旧了、过时了,年轻时候学到的经验就没价值了。而且我还有其他业务上的事要忙活,学习新技术就更困难了。
回到一个老生常谈的问题上:公司有什么理由为我在旧技术方面的经验付钱?他们完全可以聘请更有活力的孩子。年轻人熟悉最新的技术,薪水却只用付我的1/3(并且他们愿意工作到很晚)。
我觉得我可能应该尝试转型当个业务需求分析师、产品经理或者某种商业领域的人,因为这些类型的角色通常不会像程序员那么吃青春饭。
虽然我并不想这样,因为我喜欢写代码,但我觉得自己好像别无选择。毕竟我也只是一个普通的程序员,不是什么天才大牛。
作为一名程序员 ,编码硬实力固然很重要。而题主如果想不明白公司为何在花点小钱就能打发刚入行的新人的情况下,仍然乐于向我们这些“老年人”支付大笔工资,可以拿下面的问题问问自己:
虽然我说的话不能代表所有的初级工程师,但我确实知道自己八年前开始在该领域工作时,在情绪方面的处理是非常糟糕的。
那时的我极度自信,与人沟通很糟糕,不能毫不犹豫地处理建设性批评,为无关的小事与我的老板激烈争论,浪费无数宝贵时间来解决根本不重要的问题,总是觉得自己应该得到大幅度的加薪(却不付出额外的努力来赚钱)并为之苦恼和抱怨,天天花 45 分钟打乒乓球、玩游戏(在慢悠悠吃了一个小时午餐后)……
我为我的老板带来价值了吗?
是有的。
你能把当时的我放心地关 30 分钟,让我在此期间独立工作、不出幺蛾子、不拿头撞墙吗?
绝对不可能。
而高级开发者,就会在工作中解决问题,而非制造问题。
他们减少压力。他们按时完成任务。他们知道如何编写经得起时间考验、可维护的代码。他们值得更高的工资。他们对项目的方向可以有准确的把控。他们可以发现当前流程中的缺陷,并使每个人都接受他们的想法以进行改进。他们可以指导应届毕业生。他们处事冷静,不会在周二与你的最大客户的电话会议上情绪崩溃、破口大骂。
很多人想踏实当个技术人员,并不想一直向上升去当领导当主管,我认为这种想法没什么问题。编程是目前最令人鼓舞的职业之一,许多企业愿意给经验丰富的“老兵”开
很多很多
工资,来保证业务进行顺利。
话虽这么说,总会有少数工程师最终决定有一天挂断 IDE,并开始过渡到
管理
层。
挺恶心的。
太长不看版:反正现在就我来说,转管理层这条路是可选的,但
绝对
不是适合所有人的。
如果你具有扎实的沟通技巧,并且
确实愿意
开会开一整天(这样你可以消除干扰、帮助队友争取更多时间来高效完成工作),那么你进入管理层就是非常有意义的。
如果你由于其他任何原因转行管理层(即使刚读了我的博客文章,也因为受到雇主的压力、较高的薪水、害怕技术技能过时的焦虑等等),那你的日子可能就难过了。
回顾我的旅程,能从初级开发者过渡到高级开发者,归功于我每周(在繁重的编码任务之间)都试着花几个小时专注于以下事件:
上面的列表还可以一直一直往下写,而其中大部分条目不需要用到 Visual Studio。
几年后,许多高级工程师走的路都是类似的。你可能在不知不觉中就变成了小领导,每天有 6 个人向你汇报工作。