在你的编程职业生涯中制定策略
让我们来了解现实生活中的策略如何影响你的编程职业生涯。
游戏中的策略
大多数人更熟悉策略游戏,而不是真正的策略。它们表面上都要求提前规划,但本质区别至关重要。
我将借用詹姆斯·P·卡尔斯(James P. Carse)《有限游戏与无限游戏》中的语言:有限游戏是为了赢得胜利而玩,无限游戏则是为了持续进行游戏。
“游戏中的策略,让你能够无限次地重复一场有限游戏,在其中你几乎拥有完全的信息,且规则不会改变。”
生活中的策略
生活中的策略只给你一次无限游戏的机会,在其中信息远少于错误信息,规则始终处于变动之中。
现实生活中的策略如何影响你的编程职业生涯?
专注于正确的问题
解决正确问题,远比执行速度更重要。所谓“十倍工程师”是一个流行概念,但已被广泛质疑。工程师之间确实存在巨大影响力差异,然而若观察代码指标,高影响力工程师并不以代码行数或提交次数著称。
对于在谷歌内部工作的人来说,值得花时间研究杰夫·迪恩(Google Brain负责人)和桑贾伊·格马瓦特(MapReduce共同创造者)的提交历史与代码审查仪表板。他们写代码的数量,并不比一个熟悉代码库的普通中级软件工程师多太多。他们之所以被称为明星,是因为他们能将这种生产力用在真正重要的事情上。他们擅长识别问题中真正关键的部分,并集中精力攻克,最终成果远超普通工程师的产出。
工程领导者
工程领导者可能做出灾难性的决策。这在理论上显而易见,但在职场中,人们常常毫无批判地接受“最高薪者的意见”(HIPPO)。这对你的职业发展有直接影响——你希望参与成功的项目。
想象一下,在谷歌+项目中听命于维克·冈多特拉;或是在Digg v4重写时,面对谷歌算法更新后的混乱局面;又或是科技行业中成千上万未被公开讨论的失败案例。你需要理解自己编码工作的更大背景,在适当时候提出异议(巧妙的反对是极佳的职业技能),并在被推向注定失败的项目时主动申请调岗。
主动权
当你开始关注周围环境并掌控自己的工作内容时,你就真正拥有了对自己职业生涯的主动权。主动权 = 资源运用能力 + 主动性。过去,一名合格程序员可以在IBM工作三十年,只要坚持足够久,公司就会负责其职业发展。那个时代早已结束。
如今的工作呈现两极分化:你要么告诉机器该做什么(你位于API之上),要么机器告诉你该做什么(你位于API之下)。你可以选择掌控,也可以被控制。主动行动,或被动承受。优秀的管理者会成为你成长路上的盟友,而糟糕的管理者只会把你当作实现目标的工具。即便面对优秀的管理者,你仍需为自己的职业生涯负最终责任。永远不要把责任推给他人。