我是如何年薪五十万的
以下是我的真实经历,希望对广大程序员同行有点启发。
我姓方,码农一枚,14 年硕士毕业于某 211 学校,哎,这里就不提母校了。人到中年,还没混出什么名堂,就不给学校丢脸了。经常很多人问我现在的收入多少,这个嘛,男人的收入就和女人的身高一样是个秘密。不过,今天姑且聊一聊这个话题。
我的第一家公司做 Windows C/C++ 开发,第二家公司做 Linux C++ 开发,第三家公司是某大型互联网公司,以 C++ 技术专家的加入,同时从事 C++ 和 Java 开发。我大学学的非计算机专业,非科班出身的劣势就是参加大厂的校招时,筛选简历那一关直接给你 pass 掉了,这也是我毕业时未通过校招去大厂的原因之一。之所以走到今天靠的是自己的兴趣加上一些运气,当然也离不开很多人的帮助。大学时早年自学 Web ,熟悉 html 5 标准前的各类前端开发技术和 PS 等软件,后痴迷 Flash 编程,做过很多 Flash 动画自娱自乐,2011 年大学毕业时先后在上海一家开发 Flash 整站和一家做网页游戏公司任 Flash 程序员,第一家公司实习工资 1500,第二家公司正式员工月薪 3000。许多年后,我和第二家公司的 Flash 主程再聚首时,他告诉我其实我当时作为一名应届生 3000 的工资并不低,当时他作为项目负责人工资也才 8000。当然,据他说,经过这么多年后,在经历了几次创业失败后也他回归于平淡,在张江一家做游戏的公司安安心心地上班。
我的大学后半段时间,真的非常痴迷于 Flash,那个时候觉得 Flash 就是整个人生的意义,并为此写过很多轻狂的话,像什么“你 flash一下子,我爱你一辈子,真像个傻子”、“让我们高举 Flash 伟大旗帜,紧密地团结在以 Adobe 为核心的富媒体公司周围,紧随乔纳森.盖伊的脚步,不舍昼夜的编程,把我国的 RIA 事业全面推向现代化!” 那个时候,坐五个小时的火车来上海,就为去上海书城买一本全英文版的《Flash 编程精髓》,甚至为了一份 flash 开发的工作差点儿放弃读研究生。时过境迁,八年后的今天,浏览器原生支持很多以前仅能通过 flash 实现的技术和效果,Adobe 公司宣布不再更新 flash,各个浏览器逐步禁用乃至不再支持 flash。真是让人唏嘘不已啊。
大四正式离校的前一天晚上在逛蓝色理想站点时,发现有人在一篇帖子上推荐《Windows 程序设计》(第五版)这本书,看了下目录,果断购买,听说过这本书的读者应该知道,这本书一百多块钱,老厚了。这本书可谓是改变我整个人生轨迹的一本书吧,这本书介绍了 Windows 操作系统上程序运行的原理,直接利用操作系统提供的 API 进行编程。愈看这本书,我愈喜欢,它介绍了很多操作系统层面的原理,从前很多在 flash 平台不明白的东西一下子变得清晰起来,从前很多 flash 平台提供的类库不知道该如何使用一下子明白了为什么要那么设计了,后面又陆陆续续地看了《Windows 核心编程》等书。整个人更意识到对底层原理和计算机基础科学的掌握的重要性。于是等到硕士毕业时,我可以去一些公家单位从事地质相关的工作,去互联网业务做前端开发(也包括 flash 开发),但是我还是很倔强啊,薪资高低和工作地点并不是我考虑的因为,我就要做 Windows C++ 开发。当年非 flash 不嫁,如今却非要嫁给另外一个人。哎,人这辈子啊,真的可能会爱上很多人,工作、兴趣亦如是。
让我们来复盘一下这段经历,整个学生生涯,大学期间学的是 web 开发和 flash 编程,硕士期间学的是 Windows C++,并针对性地补充很多计算机科学的基础知识,也看了不少“闲杂知识”,如汇编、逆向、安全工程等等,当然都是自学。人的经历是有限的,自学的太多其他东西,很可能让你的专业课就变得一塌糊涂。我也是这样,所以,我特别理解 CSDN 上那位叫 moreWindows 的前辈在读研期间的痛苦,好几次想辍学去做开发。但是,作为过来人,我也想劝来者:如果你有机会读研一定去读个研究生,哪怕是自费或者非全日制的,你现在不明白,会有明白的一天,我们大多数人都不是命运的幸运儿,所以有时候学历还是有点用的。
前期学习 Web 开发技术,让我对 html、javascript、CSS 等非常熟悉,而且我读了非常多的 web 方面的经典书籍,也熟悉 web 标准,那个时候讲究的是三层分离(即表现层、样式层和行为层要分离),加上后来又学习了 web 后端开发技术(主要是 php),我的水平具备开发一个商业的 web 整站的水平。这段经历,让我熟悉了很多计算机和软件开发的一些基础理论和设计原则,如 URL、相对路径等概念。
后来,深入系统地学习了 Flash ActionScript 编程。这门语言的语法和类库,我现在已逐渐忘记了。但是这门语言让我深刻地理解了什么是面向对象编程,让我在后来学习 C++ 和 MFC 轻松了许多。读研期间,我也读了不少经典的计算机书籍,如《代码大全》、《整洁代码之道》、《程序员的自我修养》等等。这些书,与其说是从技术上影响了我,不如说从思想上影响了我,在我学生时代,让我对自己的编码无论是从效率还是从风格都严格要求自己。因此,它们带给我的正向效应也体现在我的第一份工作中。
由于我硕士毕业时,第一份工作非 Windows C++ 不做,但是很多公司要求有工作经验,挑来挑去,最后在上海(我是不愿意去二三线城市的)闵行的一家公司安定下来。离职的人千万不要说自己之前的公司多么不好,就和席慕蓉说年轻时被迫和爱过的一个人分开不要心存怨恨一样,那样只会显得自己多么差劲和眼瞎。这家公司做的是炒股软件,男怕入错行,女怕嫁错郎,刚毕业的男孩子们一定要做好职业规划,选好自己的职业和方向,从那以后,我虽然也在短暂时间内离开互联网金融行业几次,但是我从真正离开过。尽管这家公司存在很多问题,老板也不是很 nice,但是这家公司老板和两个 leader 都是做技术的,并且非常乐于传到授业解惑,定期的给各位新同事讲解开发知识;几年以后,成为技术 leader 的我,对于那些勤奋好学的组员,我也是原意多给他们讲讲技术的。可惜职场中真正知道自己想要什么,明白自己为谁而干活的人太少,大多数都是重复着一圈又一圈的年轮,重复着冗杂业务代码的开发,工作做的不好也不坏,渐渐地变成了职场老油条或转行,留下来的老油条然后告诉新来的人,啊,程序员到了四十岁有职业危机啊。我一个硕士学历进入这家公司的薪资只有 5200 元,2014 年一个名牌大学的硕士从事 IT 行业拿这样的薪水还是有点低的,五千多出来的两百还是我和人事讨价还价要来的上下班公交费呢。那个时候为了省一点房租,我住的很远,可就是这样我仍旧每天加班到很晚,周末也会去公司。之前在书中看到的各种技术理论,慢慢地在项目代码中找到了应用,而这些代码就向对我打开的天堂之门。我如饥似渴地学习着。由于表现的好,加上公司人事调动,我很快成了整个客户端项目的负责人,并且为了更好地开发,老板也给我开了服务器代码权限。二个月后薪资涨到 7200,去北京出差回来,涨到 8000, 2015 年 10 月份,向老板提加薪 4000,老板也答应了。公司整体环境加上自己的努力和一点点运气,我熟悉了从 Windows 客户端到 Windows 服务器开发的一整套流程和常用技术。这里不得不提醒一下各位即将从事这个行业的读者,看懂别人的代码是一回事,自己会写会设计是另外一回事。我也是,举个例子,我们老板一直告诫我们 Windows 的完成端口模型一定要自己多练习几遍才能掌握,为此我练习了五遍,并且在后来的新项目中顶着项目进度的压力将底层网络通信框架重构了三个版本。在北京出差的那段日子里,我经常周日孤零零地坐在甲方的办公楼里写代码、调试代码到深夜。
由于这家公司使用的是 Windows C++ 技术栈,后来公司与某个证券公司合作要开发一个新的项目,后台使用 Linux C++ 开发,为此招了两名 Linux C++ 开发,同时招了两名手机开发人员(安卓和 IOS 各一名),PC 端由我带领另外一名同事一起开发,我同时兼任整个项目的负责人。现在想想,当时真是初生牛犊不怕虎,那个时候谁都敢喷,作为一名客户端开发人员,竟然有时候会喷站在更高角度的后端开发人员。不过,回过头来想想,那时候这个项目的后端开发设计的协议确实不方便使用。
在之后,2015 年年底快过年了,发生了一件因为年终奖被克扣 80% 的问题,让我对老板很失望,在做完项目并交付后,我离职了。此时,我的月薪是 12 k。由于在第一家公司磨练出一身技术,加上扎实的基本功,经历三天的面试,锁定了两家单位,一家是上海张江的某家网络公司(为了叙述方便,以下称 A 公司),另外一家是东方财富网,前者给月薪 14 k,后者给月薪 18 k,由于学生时代感受到 A 公司插件的”厉害之处“,向往其犀利的技术,再加上东方财富国企式的面试风格和办事效率让我没有好感,在经过短暂几天纠结之后,选择去了 A 公司。这次是拒绝了东财的客户端职位,一年后又再次拒绝了东财的 23k 的后端开发职位,真是对不住那个可爱的人事小姐姐,两次都是同一个人事。
但是干了一段时间后,A 公司让我觉得特别不舒服,这种不舒服不是在于 A 公司的待遇不好。平心而论,A 公司的工作没什么压力,负责的项目已经很稳定,而且是多个人负责一个项目甚至一个模块,每天可以准点下班,且每天下午都有较长时间的下午茶时间,每天每人一袋水果,常见的水果都有。每天晚上超过八点,可以享用公司的加班餐,加班餐很丰富,20 元一份的水果拼盘可以让两人吃到撑。年终奖是保底 14 薪,平均下来是 16 薪。真是个适合养生的好去处啊。
我之所以觉得不舒服,是因为开发模式,第一,整个项目的框架由 A 公司的基础架构部给你开发好,另外 A 公司有个巨大的 RCFL 库,这个库封装了几乎所有常用的工具类,上层开发直接调用这个库里面的类。问题是,我们看不到这个库的代码。我并不想在这里养老,而且我也讨厌日复一日的业务开发且还看不到底层框架代码,并且那个时候,受在第一家公司 Linux 服务器开发的同事的影响,我有点不想继续做客户端开发了,我想去试试 Linux C++ 开发。于是,任性的我,这次决定离职了,虽然同事和部门 leader 意外的眼神让我觉得很对不住他们。但是,Linux 操作系统我并不熟悉,而且 Linux 的很多编程原理我也不清楚,于是我在 A 公司偷偷摸摸地学习了三个月 Linux 开发。三个月后人事告诉我可以转正了,我却告诉他她不想转正,我要离职了。那是 2016 年 5 月份的事情了。那个时候,上海的已经有点热了。社会人士求职要求的更多的是工作经验,所以我求职 Linux 开发的经历还是比较坎坷的。当时,女朋友还调侃我说,我要失业了。在寻找了好几个星期之后,我终于在另外一家公司以 16 k 入职。
这段工作经历,让我熟悉了 Linux C++ 后台开发的流程,加上自己爱研究,很快就对服务器后端的框架举一反三了。先后在这家公司做了两个项目,可惜好景不长,由于当时我们做的是现货业务,一年后由于国家政策收缩,公司业务被砍,大批量裁员。但是我呢,由于既可以做后端开发又可以做 pc 和 web 开发,被留下来了。当时另外一家公司正在高薪招技术好的全栈开发,这家公司工作压力确实很大,我最终以 26k * 15 被挖过去。我在这家公司做直播的后端开发,同时负责各个平台(pc、mac、安卓、ios等多操作系统多语言(主要是 C++ 和 Java 的开发))的 sdk 的维护。这家公司的技术我是从心底里佩服,全公司 90% 都是技术人员,同事要么毕业于各种名牌大学要么就是各个领域的技术专家。一家百人不到的公司,可以做到年盈利 3 亿。
但是我很快从这家公司离职了,离职的原因是我和我的 leader 总是吵架,leader 也是一个性情中人,总是不分场合的骂人,导致项目组同事陆续离职,最后项目被合并。离职还有另外一个原因,就是我认为我理解了 C++,我想去把 Java 好好学一下。于是这次,我要找 Java 方面的职位,哪怕降薪也可以,于是我后来去了很多公司,把大大小小的互联网公司都撸了一遍。其中月薪最高的是一家 37 k 的创业公司技术主管,但是这不符合我的职业规划,我要学 Java,我要去大厂镀金。我没有去这家公司,但是我推荐给我另外一位朋友去了这家公司。我之所以没去是当时想:如果我如果去了,我是能在几年内赚点快钱,小公司的业务量和技术难度能让我在技术上提高多少?若干年后,我又该何去何从?而推荐给一个朋友去的原因是他的年龄比我大不少,他当时已经不想去什么大公司了,赚钱对他来说是第一要务。
最终,我以 C++ 技术专家的身份去了某大型互联网基础框架部,主要工作任务是维护一套 C 系统,同时参与各种新项目开发(以 Java 语言为主),既能立足于我从前的基础,也满足了我深入实践下 Java 的愿望。薪水是 33 k * 15 = 49.5,算上股票,年薪 50 W +。此时,我工作了四年。当然,由于我的技术比较好,面试官很满意,我也提了两点入职要求:1. 我要能看到我负责项目的全部源码;2. 所在的项目一定至少是有百万级业务量的,我需要挑战更高的技术难度。这家公司的体量和规模加上面试官的 level 都能满足我。
把时间放长的话,例如工作八年到十年,对于做技术开发来说,年薪五十万并不难。但是,难点是如何毕业的前四五年内年薪 50 W。当然,年薪 50 W 的人到处都是,而且这个群体,多数人生活并不轻松。
现在的生活,平静如水,我也继续积累和沉淀着。现在对自己的期许是做好当下事,莫问前程。
今年是 2019 年,算起来一共工作五年了,总结一下我的一些经验和感悟:
- 要喜爱技术,兴趣在任何时候都是最好的动力,作为一名开发人员,一定要把技术学好,它是你吃饭的家伙,提高你的技能,能让你在职场上和收入上有立竿见影的效果;提高自己实质性的东西,在职场中成为某些职位无可替代者;踏踏实实做技术,不要附庸风雅地整各种技术名词,弄懂技术背后的原理;精益求精反复总结,你需要定期总结和提炼你的技术知识。
- 职业规划要趁早,明确自己想要什么,成为什么样的人;有脱离自己舒适区的毅力,不要为了一点蝇头小利去一个地方选择一份工作,为自己的技能提高做投资。职业生涯的早些年,决定你去选择一份工作一定是因为有利于你成长,而不是工资高。 我的几份工作都是为了习得某一种技术栈而做的选择,当然这种选择会有痛苦,但是只要你最终能达到目标,所有的痛苦都会成为你宝贵的人生经历。因此,悠闲舒适的地方我不去,看不到大多数源码让我觉得无法提高的地方我不去。 经常玩知乎的人应该知道,知乎上各种”技术大神“动辄月薪三五万,还有学生群体讨论某某同学、师兄拿到 sp,年薪四五十万,这是典型的臆断妄想症,当然不排除少数天才和各种研究性人才。试想,年薪四五十万平均到每个月是多少钱?换位思考一下,在 IT 行业从原来的高级脑力活动变成工厂式的制作流程,干同样的活,一个几千或稍高工资就能招来的人干的活,如果你是老板,你会花高价招干同样活的人吗? 人人都渴望高薪,但多数人都停留在嘴上和或者想法中,凤毛麟角的人付诸于行动。
- 不要停止学习基础知识,不要盲目去跟风时下流行的技术,注重内功培养,肯为自己的提高投入时间和金钱;在学习上对自己抠门的人,时间久了,必将泯然众人矣。正因为很多职场新人分不清楚哪是内功,哪是流行技术,我不建议一开始工作就去从事像 python、go 这样的语种的开发。
- 做技术要有产品思维,技术本身不会给你带来财富,相应的业务可以,一般某一行技术好的人很多,但是既熟悉业务又懂技术的人就难能可贵了。
另外,给大家推荐一个高质量关于后台开发的学习公众号【高性能服务器开发】,非常 nice,从前我是一个服务器开发小白,我认真地把他写的每篇技术文章都看了一下(当然也有一些广告文,我直接忽略,哈哈),能感受到作者细腻的技术和厚实的基本功,特别赞同他说学习技术的准则:推崇基础学习与原理理解,不谈大而空的架构与技术术语,分享接地气的服务器开发实战技巧与项目经验,实实在在分享可用于实际编码的编程知识。作者承诺是凡是第一个发现他公众号中所有原创文章中的技术错误,可以获得他送的书。
他有个很大的 QQ 群,群里面除了不定期技术分享外,讨论话题只能是技术或者职业规划相关的话题,禁止任何形式的灌水,同时为了鼓励群友学习,他会在每逢过节时给群友赠书(当然,只有他认为勤奋好学的群友才有机会获得赠书),书都是被赠者自己选的,群号是 578019391,有兴趣的知友也可以加一下。
我和公众号作者在上海有过一面之缘,是个其貌不扬的憨憨的“大叔”(与我相比),我在找工作的过程中得到了他的很多帮助,不过他有时候脾气也很暴躁,他不解决别人的伸手党问题,只会给你说思路和解决问题的方法,完了还得自己动手。哎,真是奇怪又奇妙的人。T_T 虽然我不赞同他的很多观点和做法,但是人与人本来就是不同的,大家共同的目标是为了提高技术,增加收入,求同存异嘛。
以上是自己真实的经历,文中观点难免一家之言,欢迎温和地提出意见和建议。
最后,用冰心的话和大家一起共勉:成功的花儿,人们只惊羡她现时的明艳,然而当初她的芽儿,浸透了奋斗的泪泉,洒遍了牺牲的血雨。祝所有可爱的程序员同行们都能成功。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。