别转管理,十年程序员老鸟给新手的几条忠告

在2006年,我开始了编程工作。当意识到来到了十年这个重要的时间关口时,我觉得有必要回顾一下这十年间所犯下的错误,做一做经验总结,并且给正在这个职业上奋斗的人们提出我的一些忠告。开发行业变化得很快,我无法肯定在未来十年里这些建议一直有效,但我的话对你们是肯定有帮助的,不管是刚开始工作的新人还是老手。

要坚持使用一个开发平台,构架或语言

在过去十年间,我所犯的最大错误是:几乎每次我换工作时也转换了开发平台。

我的经历从Java企业开发开始,到嵌入式C编程,到用VB、C# 和 C++开发Windows桌面应用程序,然后用Objective-C写iOS应用程序,到用NDK编写Android库,最后到写Android应用。

这个职业经历听起来令人敬畏,但实际上雇主并不关心。雇主们并不会重点关注你拥有10年各式各样的开发经验,但如果他们看到你没有足够的Android应用开发经验,你就不可能获得一个 Android开发的工作。

转换平台会对你的简历产生巨大的负面影响。对于一个雇主来说,实际上他没办法通过简历来验证你是不是某一特定开发领域的专家,为你付出大量资金是否合理。

大多数公司都不关心你的过去,技术面试会更加重要。这就是为什么很多经历尚浅但专业对路的开发者可以找到工作的原因。

那么我们如何适应市场的变化呢?只要你不停的敲代码,你就能自然而然的适应市场,但你也需要投入一些时间在新技能上,应在空闲时抽出时间来学习新技能,而且你也要降低期望薪水。你需要后退一步,才能前进两步。

一旦你找到一个让你觉得舒服的平台,框架或语言,就应该坚持下去。从长期看,你期望的薪水和你的工作能力都会比频繁跳槽来的更高。找到最需要你的专属技能的那些最好的公司,然后踏实的在那里工作。我知道这听起来很简单,但我花了很多年才认识到。

不要为高工资追求管理角色

以前我总是以为那些穿着西装,作行政决策的管理者拿的薪水高的令人神往。虽然在一些情况下这没错,但这只占一个非常小的百分比,经验丰富的开发者的薪金一般会比中等管理者更好。

在我早期的职业生涯中,我一直想进入项目管理。我自修了管理硕士,在那里我学到了很多有趣的东西。最后,我在一家西班牙公司作了一阵开发经理,然而我意识到这不并适合我。

在做开发者的时候,我总是感到公司缺乏企业文化,尤其是缺少技术因素的企业文化。然而在做了管理者之后,不仅编程水平无法提高,而且在企业文化的孤独感甚至更加强烈。最终当我离开这个岗位重归技术开发时,我终于开始重新欣赏我的开发工作.

如果你对敲代码感到厌烦了,那么转成管理岗并不是解决方案,更好的办法是横向移动,换一个部门,换一家公司,或者是旅行,甚至在国外工作来放开你的思想,在全世界有许多技术中心,那里对开发者的要求很高,这能帮助你打开眼界。

休息一段时间

我从来没有“失业”,直到去年。在十年后,我感到需要休息一下来“重构”我的职业生涯,事实证明这是我所作出的最好的决定之一。

我休息了5个月,辞掉工作,是自愿失业。我能感觉到身边的每个人都在担心我的职业生涯即将结束,但所发生的一切恰恰相反。

经过十年不停的跳槽和匆匆忙忙的完成各种带薪年假,我终于体会到“失业”是如此“幸福”。事实上,在我们的职业生涯中,“幸福感”确实是最应该追求的东西。

从我的情况来说,这四年来,我一直想坐下来学习德语,但从来没有时间去做。而在这5个月中,我参加了德语强化班,一天3小时,让我的德语水平从A2升到B2。

重新找回工作是很容易的,比预期的要容易得多。所以,如果你觉得自己需要的话,不要害怕一个长时间的休假。简历中的一段空白对于开发者来说不会被人认为有错。

当然,如果你读了这篇文章后,无论你是否准备来个长期休假,请一定要遵循我下面的这条忠告:

ABC: 总是编码(Always be coding)

即使是休息也不要停止编程,在我5个月的休息期间,我做了一个个人项目,一个使用discogs.com API的Android应用。这是一个方便的个人应用,帮我从数据表中添加和删除记录,而且我也想借此总结和更新一下我的开发技巧。

多亏了这个小项目,让我能够自信地应对工作面试。我尝试了许多新的流行类库和开发模式,这些正在我今天的工作中成功有效的使用中。

我真希望早点开始做这件事。我们的开发工作往往是重复的,时间越长,积累的编程习惯越难以更改,也让我们自我提高的空间越来越少。

从长远来看,拥有个人项目、阅读、写博客和参加访谈都会有助于你成为一个更好的开发人员。只要你觉得有意思,就把你的代码推到GitHub,并把你的经验与社区分享。

成为开发者社区的一部分

当我还在大学的时候,我总是懒得参加各种社团和俱乐部活动。当我找到我的第一份开发工作时,最不乐意做的也是和其他开发者们闲聊闲逛。

但是我错了。

同行聚会和进入开发群是很有趣的事情,是结识开发者伙伴的好地方。如果你想在这个行业里做到最好,就尽量不要消极被动。提供你的帮助,分享你的经验,与坐在你旁边的人交谈。每个人都喜欢谈论自己的经历,更不用说你会遇到很多潜在的雇主。

在那里你会碰到许多需要教练的初学者团体,你可以指导新手,给他们提供练手的机会,甚至赞助活动。

当然,要学习别人的开发技巧并且勇于实践,要热情的欢迎不同意见的人讲话,勇敢的听取他们的意见。

不要在招聘网站上求职

这是我最后的“智慧结晶”:不要申请那些在网站上张贴的工作职位。

招聘网站的背后是复杂的人力资源流程、候选人跟踪系统、滥发个人简历和混乱的沟通,这也是许多公司找不到人才而要依靠猎头公司的几个重要原因。

优秀的人才应该跳过这些。网络是寻找人才之路,更多的关注当地的社区消息,当有人离开一个重要的职位,当一个有意思的公司得到了融资,或者某个企业人事变动正在招聘人时,你都会获得最新的第一手消息。

你也能通过网络社交得知哪些公司的福利比较好,各公司的大多数开发者都会真诚对待你,他们会告诉你这些公司的架构是否老旧,经理是不是人品够好,甚至工资待遇怎么样。

如果你看到一个有意向的工作机会,首先看看你的社交网,看看你的用户组或LinkedIn朋友圈,是否有人已经在那里工作了,或者问他们是否认识某些人。然后直接与他们联系,与那个公司的CTO、招聘经理或其他开发人员直接交谈。

猎头是好的,但不要依赖他们。他们的任务只是帮助企业填上一个职位的空缺,因为他们并不为你工作。如果他们推荐的职位的确非常适合你所寻找的工作,那么你就去做,如果觉得不适合,那么就告诉他们:谢谢,我不去。

本文来自开源中国社区 [http://www.oschina.net]

时间: 2025-01-19 08:53:18

别转管理,十年程序员老鸟给新手的几条忠告的相关文章

所有程序员都应该遵守的 11 条规则

  所有程序员都应该遵守的11 条规则   ************************************************************************** 英文原文:11 Rules All Programmers Should Live By 参与翻译(5人):北风其凉, pseudo, nzchris, 霍啸林, 无若 转载出处:http://www.oschina.net/translate/11-rules-all-programmers?from=

致程序员们:来自一个前辈的忠告

致诸位程序员:来自Chuck Jazdzewski慈父般的忠告  转自:http://www.ituring.com.cn/article/18838    记住这几句话,学无止境.(Never stop learning.)沟通至关重要.(Communication is critical.)履行承诺,胜过交付.(Under promise, over deliver.)"我错了."("I was wrong.")要是代码未经测试,那它就无法正常运行.(If it

有哪些老鸟程序员知道而新手不知道的小技巧?自我感受

最近在朋友圈看到别人分享的一篇知乎回答:https://www.zhihu.com/question/36426051/answer/76031743 我觉得写得挺有道理的,作为一个写了10多年C#代码的老程序员来说,很多地方我能感同身受,所以也谈谈我的自我感受. 1.重构是程序员的主力技能. 是的,我之前经常也提到一点,就是好多设计模式不是提前就设计出来的,而是重构出来的.很多情况是我们在做设计的时候考虑不到的,是写代码时也考虑不到的,只有在项目上线后,客户使用过程中才会反应出来,这个时候就需

编码20年的老程序员分享所积累的20条编程经验

       从11岁时,我就一直在编程,并且一直都很喜欢技术和编程.这些年来,我积累了一些艰难又容易的经验.作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友.        我会持续更新这些经验,我可能还会有更多的感想,但就我这20年来看,我想下面这个列表中基本不需要增添额外的东西了.下面就是我至今最难忘的经验. 1. 估算解决问题所需要的时间.不要怕,承认吧!我曾见过一些程序员为了解决一个特殊问题而坐在显示器前面8小时.为自己定一个时间限制吧,1小时.30分钟或甚

.net程序员使用Oracle新手上路指南

虽然oracle,sqlserver都是关系型数据库,sql语句大部分也差不多,但是从sqlserver换到oracle还是有很多不适应的地方,本文旨在帮助广大初次接触oracle的.net程序员快速上手. 一.安装oracle 11g 服务端(可选) 1.1 为什么要安装服务端? 理论上讲,本机只需要安装oracle客户端即可,但是很多时候本机有一个服务端学习起来会更方便.比如:数据库的导入/导出,数据库的创建等,均需要服务端. 注:oracle的server真的很占内存,如果您的爱姬内存在2

IT程序员35岁之后的三条活路_IT 业界

高薪的IT行业是众多年轻人的职业梦想,然而,一旦身入其中却发觉没有想像中那么美好.被称为IT蓝领的编程员,工作强度大,像个编码"机器";技术更新换代快,饭碗不稳定.随着年龄的增长,IT编程员该何去何从.  程序员的困惑:我该何去何从  32岁的Smith(化名)已算是IT行业的元老了. www.it130.cn 大学时代的他,有2/3的时间是在校园微机房里度过的,当时,他疯狂地迷上了电脑.大学毕业后,Smith早早地被一家IT业著名的跨国公司录用,担任程序员.  刚进IT行业时,Smi

《高效能程序员的修炼》一第一条法则:永远都是你的错

第一条法则:永远都是你的错 高效能程序员的修炼作者在Twitter上发的一条短讯: "在怨天尤人之前,我们应该先自我反省.努力把自身的问题解决了." 12:22 PM – 2012-5-30 你应该知道那种感觉.我们所有人都曾碰到过这样的事情:已经盯着代码看了无数遍,但还是没有发现任何问题.然而,有个故障或者错误始终挥之不去.于是你开始怀疑,可能是你开发程序所用的那台机器出了问题,也可能是操作系统的问题,或者是你使用的工具和库出了问题.肯定是它们的原因! 然而,无论你多么绝望,都不要往

十大程序员开发用到的基本算法

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤: 1 从数列中挑出一个元素,称为 "

《程序出错后,程序员给测试人员的20条高频回复》

20. "That's weird-"很奇怪-- 19. "It's never done that before." 以前没这样过的. 18. "It worked yesterday."昨天还好好的. 17. "How is that possible?"那怎么可能?(怎么会出问题?) 16. "It must be a hardware problem."这一定是硬件问题. 15. "Wha