程序员9年工作经验跳槽,经验和总结
“ 此文阅读群针对有五年以上IT工作经验的同学, 没有工作经验的新人,你找不到任何心灵鸡汤,可能只有几根鸡骨。”
这是我2016年职业生涯中第二次跳槽的总结,时隔三年后,重新总结整理一遍发出来,回想下,其实找工作中很多东西是一成不变的。
01
—
跳槽起因
2012年人生第一次跳槽时, 我的人生目标是:三十多岁时,在公司升职到一个小PM或者带几个人做项目。截止2016年,我的目标早已经成功地实现了一半------
我已经三十多岁了。
当时在2000左右员工的中型工程咨询公司, 职位是9年经验Senior码农。2015年的年中开始有跳槽的念头, 因为公司的项目不咸不淡且切换频繁, 导致技术上止步不前且难以深入。 咨询公司的项目有长有短,长的也许十年,短的可能两三个月,年景不好时,小项目居多。当你不停地切换项目时,技术复用的感觉就会越来越强烈。
工作内容全栈开发,从移动端,前端、后端、数据库连同测试部署一锅端,但2015-16年左右,随着云技术开始发力,各个技术栈的细节划分越来越细,其中各个方向的开发框架也开始井喷。作为一个自认为好学的人,人生中第一次觉得:学新东西脑子开始不够用了。
还有一点,就是无上升渠道,管理层都是45+且热衷健身,按德国雄心勃勃的67岁退休计划,我得等二三十年才有空缺升职。
02
—
跳槽目的
跳槽的目的, 一是Money,二是职业前景, 希望将来在某一领域方向持续深入。
2.1 Money talks
一开始只锁定大公司,发现大公司不一定给你你要的薪酬;小公司别看规模小, 开的价有时会有惊喜。薪酬谈判是我弱项, 所以我每次都会开一个较高的价位, 扔给对方,然后一切随缘。最后的合同工资涨幅 30+%。
2.2 职业前景
开始的时候我并不确定未来的职业领域, 投职位时只要是感兴趣的领域都投, 直到确认offer才最终确定。之前的咨询工作接触领域太多, 涉及的技术层面也太广。最初想往嵌入式开发方向发展,因为德国这类职位需求大,经过几次残酷且悲剧的面试后, 我意识到:真的没必要用自己的短板和别人拼, 脑抽了吗?
不过失败之后我也深刻反思和总结了, 针对一些理论和概念的不足也认真补了课。虽然职业领域没有定, 但在开发语言和技术上大概确定了几个方向, J2EE, .Net, Mobile App, Software Architect。后面找职位也针对这些方向进行筛选, 而不是漫无目的海投。
对于不想再编程但Soft skill 又不够的码农们, Consultant 和 Expert 以及 Software Architect, 在我看来是较好的方向。我最后选择的还是继续做开发职位,一是做的方向是物联网,我感兴趣的方向;二是我觉得作为Architect我自身还需要更多历练。
03
—
大环境
3.1 说IT码农好找工作, 这是真的;IT码农好找高薪工作,这是难的
德国属于汽车机械工业立国的国家,软件行业整体上没有得到类似中美那种高度的礼遇和待遇。不过随着近年各个大厂的数字化转型和战略变化,可能以后会越来越重视软件行业。
下面这张表来自Gehaltsreporter网站,统计了不同工龄的软件从业人员的年薪平均数。注意这表里是平均数,德国很多公司,给的薪酬是这个统计里的平均数上下(废话!)。
关于德国软件行业薪资水平,我会单独另写篇文章细说。
德国软件行业薪酬查询,IT毕业生起薪,请使用小程序直接查询
可以清楚地看到随着工龄增长,会出现一个门槛,德国大部分公司里,普通工程师想越过这个槛,一般需要升职到有人事权或者有项目管理权的职位,或者投身咨询拿项目分红。亦或者,你技术上深挖到了Expert的大牛级别。
而到这一步,已经超出了码农的技术能力范畴, 属于Soft skill。 我非常清楚我自己的长处和短板, 不多说。
问:“不逼自己一把,怎么知道自己做不到呢。”
答:“滚!鸡汤自己去喝!”
3.2 之前公司辞职期是季度末提前三月, 这表面看起来是一个较为尴尬的规定。
意思就是辞职期在3-6个月之间,如果你错过季度末辞职,那么最长会达6个月之久。这个辞职规定很常见,大家注意看自己的工作合同,松一点1至3个月,有的更苛刻,直接规定6个月的辞职期。如果合同上没注明,那就按法规默认是3个月。
刚开始我本着每季度前两月加紧投,最后一月靠天收的信念,但职位放出的时间,面试周期或者对方回复周期往往超出我的计划, 这样会带来很多问题, 后来我开始忽略这个辞职期投简历。因为就算是6个月的辞职期,你还是可以和前东家好好协商,一般都是可以提前离职的。
其实,反过来想,公司如果对你没兴趣,你就算当天能来上班撸码都不会要你。
04
—
面试历程
从2015年7月至2016年4月最终搞定Offer, 历时近一年, 总共投了约45家公司,其中有5家通过猎头引荐, 3家通过朋友和前同事推荐。 累积15次面试,不含额外的N次电面及与猎头会面。 最终拿到3份offer, 其中2个软件开发职位,1个软件构架职位。
技术层面准备要充分,你以为德国程序员面试只是问你几个不痛不痒的理论问题?
有四次开发职位的面试, 是当场编码开发的。
有两次构架职位的面试, 是要白板画构架的。
开发职位:
1. 最挫败的
一家云服务美企大公司, 先是和项目负责人以及团队成员面试,结束后接着给45分钟开发一个寻岛算法:一片海域里计算岛屿的数量。两个人一左一右全程盯着,我一边写代码,一边思考,还要一边解释思路给对方。以前没有这样的经历,当时思路很乱没做出来。越想越不爽,面试回家后花了点时间做出来发给对方经理,还是被拒了。
2016年左右时,周边的朋友和同事并没有听说过,有面试时现场写算法这种做法。以前也没有去Leetcode这类网站刷题,因为一直观察只有硅谷那边的程序猿才有这需求。按美帝的标准,这题15分钟内要完成。不过近两年陆续从同行那得知,部分德国公司面试时,也开始考现场写算法题了。
想想现在的毕业生也不容易,毕竟Leetcode的算法题已经上千了,刷到爆肝。
2. 最无语的
一家医疗设备大公司, 团队的技术负责人给了一张A4纸打印出来的满满的C++代码,不给电脑,不给调试, 让我徒手找出bug。Sorry, 大哥,我真的是来面.Net 职位的好吧?!
这家公司的面试流程挺奇特的,先是和项目负责人和人事几个人面试,然后直接和开发团队组员见面,围成一圈一起喝咖啡,你一句我一句尬聊,他们说这是测试未来同事的气场合不合。哈?
3. 最有成就感的
这是一外包DL小公司, 二十来人,给OEM做外包项目。这是通过猎头介绍的。猎头说老板是个星球大战粉丝,去了一看,果然不假,公司休息室里贴满了星战的电影海报,到处是May the force be with you。
和老板一面后,通知我改天过来Probetag(试工一天)。
当天先签了一堆NDA保密协议,但是因为对方没准备好开发环境,各种状况频发。大半天下来最后剩2个多小时,让我完成现有系统的一个新模块,这本来计划给我留4-5小时做的。这两小时里我脑子飞速运转,读完全陌生的代码,写新模块,再部署到系统里测试。项目经理测试了后说:这是可以发布使用的代码。技术负责人非常开心, 隔天给了Offer。
公司虽小,但给的薪酬却比上面两个大公司高。
4. 最中规中矩的
一家大型供应商的子公司,做物联网。 一面和人事,部门负责人以及项目负责人面试,几天后通知二面。二面现场开发一个算法,并且写系列单元测试, 然后追问很多优化问题。因为有了之前的经验和心理准备,这次就不那么紧张了。预留一小时, 25分钟结束, 当天给offer。
最后决定接了这家的Offer。
构架职位:
1. 某大型OEM子公司
面试时让我白板设计一个Connected Car构架,白板从各个系统模块推演,从数据仓库到移动端推送,嵌入式消息管理,安全性,分布式等,交谈甚欢。负责人说这介绍这个职位不用太多编程,需要前后台到移动端的构架和协调。
被拒。
做了几年云开发后,现在回想起来,当年设计的构架确实太幼稚了,拒的应该!
2. 某大型OEM子公司
工作领域是财务和支付构架,涉及系统整合,安全端口,支付gateway等等。该构架职位基本不需编程,整个项目代码基本外包出去,主要协调各模块合作以及QA。
一面和项目负责人谈,白板设计支付构架。
二面和部门负责人谈。
拿到offer。
假如当年接了这个offer,不知道现在是什么状况,估计八成不在码农第一线了。
05
—
面试相关
1. Hr都不容易对付,面试中一贯的挖坑
但是面试多了,就知道Hr的套路了,网上把德语的Hr常见面试题找出来,预先每个问题心里自问自答一遍,不要有自相矛盾的地方。这些问题无非是:
你为什么来德国?
为什么离开上一个公司?
上一个公司是怎么和同事合作的?
为什么跳槽?
为什么来我们公司?
你的长处和短处是什么?
遇到问题时,你是怎么解决的?
和同事意见不合适,你是怎么解决的?
等等等等
2. 不要忽略猎头,但也要有选择
对于通过猎头找工作,开始我是排斥的,觉得自己找更硬核,而且觉得雇主公司可能会为了省去高额中介费而优先录用直接投简历的。我还是太Naive了。
有个朋友总结的好:
“ 对于公司的Hr,如果猎头招了个合适的人,功劳在Hr;如果招了个不合适的人,那么责任在猎头,不在于Hr;至于中介费,那是公司的钱,不是Hr的钱。”
后来陆续接触的几个同城的猎头,态度和帮你找工作的努力,你是看得见的。而且他们会指点你面试的要点,透露对方的某些选择倾向,这对没有太多面试经验的人,是非常有帮助的。不过如果你在本地找工作的话,还是同城的猎头人脉更为广泛,外地的猎头都是电面,远程交流起来并不顺畅。
06
—
最后
最近又跳了一次槽,本来是打算写篇新的总结,结果翻出了三年前这篇,先温故知新一下吧。
正在写后续的新的一篇。
写给在德国奋斗并苦逼着的码农们:
跳槽只决定了你未来会在哪里编程, 就算跳到你心仪的公司,你还也只是个码农。