YDJSIR

该职业规划书荣获南京大学软件学院第十一届职业生涯规划大赛二等奖

引言

我正是因为我的职业生涯规划才来到了南京大学软件学院(下简称南大软院)。

在义务教育阶段,我已确定我的理想职业是软件工程师,并为此付出了一定的努力。在初中,我曾尝试搭建Minecraft(我的世界)服务器与网站(团队主页:https://abn-team.top/ )并因此开始接触云计算。在这一时期,我与我的小伙伴们在社区中参与了部分Minecraft Mod的汉化翻译及其整合包的测试与调优工作,开始了解开源社区的运行模式。2015年,我成为了阿里云的用户。在使用阿里云的云计算产品的过程中,我感受着整个云计算行业的飞速成长。至今,我仍长期使用着阿里云的ECS、OSS和CDN等云计算产品。在我的高中——中山纪念中学,一所信息学竞赛强校,我认识了一批OIer(信息学竞赛生)和高中就已拥有具有一定热度的开源项目的同学。在一个名为缤奇(网站:https://www.binkic.com/ )的社团,我初步了解了一些与GitHub等开源社区、Git版本控制系统,Unity开发相关的基础知识,并对IT行业有了初步的了解与明确的向往。我深感云计算在提高开发效率,降低运维成本方面的巨大优势,为这其中的技术之美感到震撼。从那时起,我便下定决心要走上软件开发的道路,并因此在填报志愿时选择了南大软院。

在南大软院的一年半的系统学习中,特别是在完成一系列的线下 “软工导学” 课与线上的 “程序猿与攻城狮” MOOC 课程以及刘钦老师的《软件工程与计算Ⅰ》课程后,我对软件行业有了初步的了解,并打下了系列计算机基础理论知识的基础。我对云计算的认识,也比以往有了长进,并决定以云计算架构师作为自己的生涯规划目标。我坚信,我能在南大软院这个优秀的平台上,攀登技术高峰,在实现个人抱负与技术理想的同时,为兴趣、爱好、工作与理想的统一努力着。

一、 职业方向及总体目标

我的职业生涯规划的目标职业是云计算架构师。我希望在信息行业中起“承上启下”(承接上层应用,对接基础硬件)的支撑性作用,夯实建立在云计算基础上的现代信息行业的基础。我希望在整个开发团队甚至是客户的产品的全生命周期中持续用云计算为他们赋能,让云计算的规模集群效应与极强的弹性促进IT行业的长期发展。由于新人入职后不可能一开始就坐到架构师的位子上,正如新兵入伍后不可能立即运筹帷幄于帐中,因此我的职业生涯规划覆盖从入职开始从事云计算相关工作到最终成为云计算架构师的全过程。

二、 自我分析

在做出合格的职业规划之前,我首先必须要清楚地认识自己。在此,我要感谢南京大学在职业生涯规划方面的投入与努力。在南京大学的“北森生涯-吉讯系统”,我进行了一系列测试,并将在下文中将今年的结果与去年的结果进行比较分析。

个人简介

我目前就读于南京大学软件学院,前三学期保研GPA排名为年级第50名,位列前24%;综合评价均为优秀;获得人民奖学金二等奖一次;在两个社团内任部门领导,分别是南京大学IT侠互助协会(下简称IT侠)和南京大学微软学生俱乐部;目前任2020级软件学院新生朋辈导师以及所在宿舍的社长。在IT侠,我积极利用我的计算机软硬件知识为同学们排忧解难,在社团内的维修记录已达62次,已认定的志愿时长达91小时(本学期的维修记录尚未被志愿时长系统认定)。在前三个学期,我的GPA持续进步,部分专业相关课程的成绩表现优异,如97分(满分100,下同)的《软件工程与计算Ⅰ》、96分的《数据结构与算法》、91分的《Linux系统基础》与92分的《物联网技术的跨学科应用》等。

与此同时,我广泛地涉猎现南大开甲书院下面的三个院系(计算机科学与技术系、人工智能学院、软件学院)和南大电子科学与工程学院的专业课程与全校系列双创专题课中与电子信息相关的部分课程,以拓展我在信息行业内的知识面广度并加深特定方面的深度。到目前为止,我已选修了《物联网技术的跨学科应用》、《科技向善——3D打印创意产品设计》、《人工智能基础与产业发展》和《高科技产品探究》等课程。我还跨选了南大人工智能学院的《认知科学导论》课程,并计划在以后选修南大计算机系蒋炎岩老师的系列课程。我还积极了解行业动态,如日常关注科技媒体;参与许多行业会议,如中国(南京)软件开发者大会(NJSD)和互联网架构大会(IAS),2020年北京智源大会和华为开发者大会2021(Cloud)南京大学分会场等;参观高科技企业,如微软苏州与华为南研所等。

职业兴趣评估

2020 2021
img image-20210416153445522
表1. 职业兴趣评估结果

和一年前相比,我的职业兴趣有了更明显的分化。我执着于现实方向,而对研究方向的兴趣大为降低。与此同时,我对于企业的向往也更为强烈。我将表现得更坦诚直率,喜欢在讲求实际、需要动手环境中从事明确固定的工作,一步步地制造完成有实际用途的产品,是个彻底的实用主义者。我从对理工科有广泛的兴趣,转变为对工程方面有强烈兴趣。这意味着我将坚定地步入产业界。但在信息行业这个充满了变化与位置的行业,我同样不能放弃对革新的探索和对未知的向往。

职业价值观测评

2020 2021
img img
表2. 职业价值观测评结果

在职业价值观评估方面,和去年相比,我提高了对人际关系的注重程度。在软件工程理论的学习中,我越发体会到团队的重要性。在大二,我已经历或正在经历一批考验团队合作能力的课程项目。我将与团队内的其他同学一起,学习如何高效协同地进行软件开发,为日后进入业界打好基础。

职业性格报告

2020 2021
img img
表3. 职业性格报告结果

和去年相比,测评结果中我在直觉方面的等级显著提高,而判断方面的等级则有所下降。测评报告认为,我属于专家型——追求能力与独立的人。 我更偏向于理智、清晰、简洁地考虑问题,客观的批判一切;对自己的设想会不顾一切地采取行动去实行,即使在面对阻挠时也会义无返顾地去实现目标;对自我和他人要求标准高、工作原则性强。我希望能在工作中不断地追求高标准、高质量,采用新方法,从而提升自身的能力和权威,并得到公平的回报。然而,我也常常说些对他人没有意义、似是而非的话语;顽固地坚持自己观点,乃至沉迷于一些出色的但不重要的想法中;过于理论化而不去考虑实际情况;由于过分自信而惹上麻烦。这些是我需要克服的缺点。这样的性格使得我适合于云计算架构师这样的技术专家型的角色。

得益于父亲的引导,我自小喜欢捣鼓各类机械设备与电子产品,进行各种各样的设计。我特别热衷于计算机硬件,从小到大,就是各种信息系统与设备问题的解决者。在南京大学,我加入了南京大学IT侠互助协会,用自己的知识与技能为同学们排忧解难。在这些场景下,我面对的是信息产品终端的用户。而当我走上云计算工程师的岗位时,我将面向开发者工作,并成为更多终端用户的幕后英雄。别人能因我的工作而从信息产品中获得价值,能让我感到快乐。这是我过去在做的,现在也在做的,将来仍然会做的。

自我认知程度测评

2020 2021
img img
表4. 自我认知程度测评结果

得益于一直以来在生涯规划方面的工作,我在自我认知程度测评方面的得分将近满分。和去年唯一的变化在于,在决策行动方面,我比以往更为坚定与自信。

职业技能评估

我已经学习了系列计算机基础理论与通修的高等数学与思政类的课程,并正在学习一些基础的业界所需的真实技能。我确信,在追逐我的理想生涯的路上,我有一个相对不错的开始,并且始终保持着进取的姿态。与此同时,我有一定的云平台运维和Linux平台经验以及自己搭建纯静态网站的经历。然而,我很清楚,自己离业界期望的水平还有相当大的差距。然而,我拥有不断学习的动力,这便是我自信心的源泉。当然,我也必须承认,在人际敏感与人际适应方面,我还存在弱项。

三、 环境与组织分析结果

云计算产业发展情况

在“大数据”、“云计算”、“人工智能”和“物联网”并驾齐驱引领人类生产力变革的时代,云计算作为其他三者运行的基础,拥有美好的前景。早期,单纯的虚拟化技术(只能看作是云计算的前身,并非现代概念意义上的云计算)就以凭借较高的可用性、灵活性、扩展性等优势广受热捧。然而,直到AWS上线,云计算才进入了高速增长期。云计算不仅继承了原本虚拟化技术的诸多优点,还增添了许多新的技术特色(特别是在云原生出现后),快速占领了市场。近年来,以容器、微服务、DevOps 等为代表的云原生技术, 成为了近年来的技术热点。

在信息化与智能化成为潮流的今天,各行各业都在主动提高自身的信息化程度,工信部印发的《推动企业上云实施指南(2018-2020年)》鼓励更多企业上云。在国际上看,云计算的市场规模也在不断增大,正处于“技术采纳生命周期模型”中的“主街”阶段,云计算服务的需求远远未饱和,云计算的全球市场规模仍在持续增长。云计算已逐步成为企业数字化转型的关键,并已在实践中证明了其出色的能效。

img

图1. 全球云计算市场规模及增速

数据来源:中国信息通信研究院.云计算发展白皮书, 2020

img

图2. 企业使用云计算降低的 IT 成本

数据来源:中国信息通信研究院.云计算发展白皮书, 2020

中国的云计算事业起步虽然较晚,但发展势头极为迅猛。云计算化在中国早已蔚然成风。中国信息通信研究院发布的《中国云计算发展白皮书2020》认为,随着5G、边缘计算、人工智能等新技术和新应用的推动、新基建的推进以及新冠疫情下对信息化能力的巨大需求,中国的云计算产业将迎来下一个黄金十年,进入普惠发展期。综合中国信通院、IDC等研究机构的公开数据,预计在2023年,中国云计算产业规模将接近4000亿元人民币,而来自政府和大型企业的上云率将超过60%。由此可见,在中国,云计算的市场是广阔的,前途是光明的。

img

图3. 中国公有云市场规模及增速

数据来源:中国信息通信研究院.云计算发展白皮书, 2020

img

图4. 中国私有云市场规模及增速

数据来源:中国信息通信研究院.云计算发展白皮书, 2020

云计算工程师职业现状

概述

在GB/T11457-2006《信息技术 软件工程术语》中,软件工程被定义为”应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发、和维护的工程或进行研究的学科”。这意味着,软件工程的从业者即软件工程师们,将要把计算机科学与其他学科的显式知识相结合,在实际应用中找到较优而并非最优的可行的解决方案,以实现信息化赋能。作为软件开发工程师的一种,云计算工程师的工作环境和工作氛围和其他方向的软件工程师是相似但又不完全相同的。相较前端,云计算行业更注重后端的运维与开发(云计算对外展现的前端交互和内部海量的业务逻辑与运维管理相比是冰山一角)。相比前端、产品等岗位要和与具有高度不确定性的人打交道,后端相对更靠近数据及算法本身,其内在的逻辑的严密性更高,对规范性、可修改性与可拓展性的要求极高,故工作氛围中可能更强调严谨、秩序与稳定。我享受按接口开发或是编制对外统一的接口或服务的过程,并希望让使用我的接口或服务的人能轻松地通过接口获取所需信息或服务,让开发变得更简单,让更多传统行业的企业或是个人能从云计算中受益。云计算将软件的相当一部分复杂度从上层开发者转移到云计算开发者手上,也正因如此,云计算工程师们的责任变大了。

互联网上搜集到的资料显示,当前云计算工程师的技术栈大致如下图所示。

img

图5. 云计算工程师知识图谱(以AWS体系为例)

图片来源: https://github.com/TeamStuQ/skill-map

注:实际选取的可能并非是基于 AWS 的方案,上图仅作为相关技术发展样态的参考。

显然,我要在这些这棵巨大的树上,选择一个分支深耕并保留对其他分支的了解以实现“T”型发展。

招聘行情

时下,与云计算相关的开发岗位相当多。姑且不论广义上的云计算开发(因为现在云计算技术已经深深渗透在后端开发中),仅专门的云计算公司便已可提供大量的优质岗位。在阿里巴巴集团招聘官网,在“社会招聘”栏目下以“云计算”为关键词检索,可得到46条结果(数据获取时间:2021年4月16日晚9时,搜索页面中每页显示10条结果,https://talent.alibaba.com/off-campus/?search=%E4%BA%91%E8%AE%A1%E7%AE%97 ,查询结果可能会由于查询时间而变化)。阿里巴巴自身也早已将全部业务迁移到自家的子公司阿里云的云服务上,阿里云之父王坚也因其对云计算技术的进步当选为中国工程院院士。这也体现出国家与社会对于云计算技术的重视与对云计算从业者的高度认可。

img

img

img

图6. 阿里巴巴集团社会招聘页面“云计算”关键词检索结果节选截图

在腾讯社会招聘的页面中,以“云计算”为关键词检索,则可以得到628个结果(数据获取于2021年4月17日晚8时,https://careers.tencent.com/m/zh-cn/search.html?keyword=%E4%BA%91%E8%AE%A1%E7%AE%97 ,查询结果可能会因查询时间而变化)。在字节跳动的社会招聘页面以“云计算”为关键词检索,可得到37个结果(数据获取于2021年4月17日晚8时,https://careers.tencent.com/m/zh-cn/search.html?keyword=%E4%BA%91%E8%AE%A1%E7%AE%97 ,查询结果可能会因查询时间而变化)。由此可见业界对云计算工程师的需求是巨大的。

这几大企业在校招时往往并没有明确区分“云计算”相关岗位,但是在对后端开发相关岗位的应聘者的技术栈的期望中也加入了一些对云计算技术的要求。以腾讯为例,在其2021校招岗位方向“软件开发-后台开发”中,也表达了对云计算相关技术的需求。相关业务部门包括了CSIG云与智慧产业事业群和TEG技术工程事业群。

img

img

图7. 腾讯2021春招(校园招聘)软件开发-后台开发方向招聘要求详情页面截图

字节跳动的情况也是类似的。在后端工程师的职位描述中,往往出现“云”相关词汇,并包含对云计算技能的要求。

img

图8. 字节跳动2021春招(校园招聘)“后端”检索结果截图

然而,也有一些互联网巨头面向大学生提供了与云计算紧密相关的岗位。腾讯的技术类实习生中,便有“软件开发-云计算开发”方向。这与腾讯快速发展的腾讯云有关,也与云计算的加速发展紧密相关。该方向的实习生将服务于CSIG云与智慧产业事业群,其岗位要求与后端开发相似,但多了对云计算知识的直接要求。这一招聘岗位和其他很多岗位一样,特别欢迎有开源项目工作经验的人员。“云”无实体,却有架构的箴言,也给我留下了深刻的印象。

img

图9. 腾讯2021春招(实习生)软件开发-云计算开发方向招聘要求详情页面截图

云计算工程师作为程序开发人员的一种,在全社会上来看待遇相当高,特别是从南京大学这样优秀学校毕业的毕业生。根据《南京大学软件学院2019年毕业生就业质量报告》,南大软院本科毕业生平均入职年薪约 20 万,研究生毕业生平均入职年薪约 26.5 万。根据职友集的数据,2021年初云计算工程师的月收入情况大致如下图所述。而云计算架构师作为整个云计算架构的引领者,其待遇则要更高,但其本身也是云计算工程师的一种。由于这一群体的收入往往要考虑配股、分红与奖金等因素,难以下定论。考虑到就目前而言,架构团队并不是仅有数人,而常常以团队形式存在,而且云计算架构师是一个比较小的细分方向,数据较难获取,故以架构师的工资收入作为一般参考。

云计算工程师 架构师
img img
表9. 云计算工程师与架构师分工作城市待遇情况

数据源于职友集,获取于2021年4月17日晚10时

综上所述,云计算工程师所对应的社会环境、工作环境、工作条件和发展前景都是相对优越的。

四、 角色及其建议

为了解相关工作的具体状况与该职业所必备的知识与能力,并让我的生涯规划更贴近实际情况,我对我所认识的两位已从业多年的高级软件工程师进行了职业生涯访谈。他们对我的职业生涯的规划起到了相当重要的作用,并给了我很多有益的建议。除此以外,许多学长也给了我很多重要的建议,如与我高中的校友“练习小册”(https://lhr.wiki/ )(专精于后端与算法)和“奇趣保罗”(https://paugram.com/ )(专精于前端开发);南大软院的宋定杰、朱晨乾和蓝源泓同学和南大计算机系的谢乃容(拔尖班)和刘添翼同学等。他们是我身边优秀的榜样,不仅给我指引着方向,还给我很多鼓励。此处仅节选他们给我的对我的生涯规划的建议,而访谈中提到的其他问题与受访者的回答将会被放在本文的附录中。我将通过整理访谈内容以更好地规划和调整我的职业发展路径。

访谈对象1:JAVA后端开发高级软件工程师

受访者信息

教育背景

某“211”院校计算机专业,本科毕业

从业时长

10年以上

专精领域

• JAVA后端开发;

• JVM性能调优;

• 自动化测试(目前规划方向)

工作情况

他目前工作于国内某综合性ICT巨头的消费者业务群的客户服务部门,从事后端开发相关工作,且日常工作流中大量涉及云计算相关技术。

生涯规划建议

前端、后端、运维等都只是不同职位的技术人员,地位待遇都是差不多的,关键看能力。后端的工作可能会相对的多一点,但也不要以为这样就说后端比较重要,地位会高一点,千万别这样想,大家都是平等的(笑)。

在工作上,大家实际上只是负责不同的部分,工种不同罢了。在沟通方面,在跟同事沟通的时候要尽量客气一点,就像跟朋友聊天一样,偶尔开个玩笑啊什么的,别太严肃。在中午的时候,可以与同事聊聊共同话题(技术、新闻、游戏等),跟同事混熟点,增加自己的人脉。跟领导也一样,技术行业里一般不需要刻意维持上下级关系。跟领导混熟了,很多事情你不用问他也会跟你说的。很多时候,行业里的人脉就是这样积累下来的。

如果你真的很喜欢写代码的话,就往架构师方向发展吧,我自己的话后面可能会转行去做自动化测试之类的吧,年纪大了写业务逻辑感觉会有点吃力(个人感觉,因人而异)。你说你想往云计算方向发展。就现在而言,云计算的确是时代潮流。我的公司中也大量地采取了云计算的相关技术,特别是在运维与部署方面。然而我也要提醒你,往云计算方向去走的话,对数理基础的要求会很高,对持续学习乃至主动探索的能力的要求会更高。

看看下面这张图,你最终也会选择其中一个方向深耕乃至成为该方向上的顶层设计者。云计算只是一个技术选项,是完成任务的手段,开发还是以需求为中心的。

img

图10. 后端架构师知识图谱

图片来源:https://github.com/TeamStuQ/skill-map

访谈对象2:Linux & Android开发高级软件工程师

受访者信息

教育背景

某“985”院校计算机专业,硕士毕业

从业时长

10年以上

专精领域

• Linux Kernel & Linux Platform Driver

• Android Application & Android HAL

工作情况

他目前工作于一家软件和云端运算的国际科技巨头。该公司的主营业务包括提供服务器、软件及桌面虚拟化、网络连结、以及软件即服务(SaaS)等产品,在全球拥有超过40万名客户。

生涯规划建议

时代发展了,我很羡慕你们没有经过闭门造车的迷茫与无奈。我是老人了,那会还没有那么多这么好玩的玩意,都是看着谭浩强的书学的(笑)。我的母校也是个985高校,但校园网通都是2005年的事了,那时我本科都毕业了。你们现在资源多,玩的也丰富多彩,这很好。我毕业时,那会还是通讯的天下,毕业8年后,4G起来了,然后才是互联网的世界。如果我是你的话,我会选择去互联网。只是当个码农的话,我觉得硕士没有必要读,如果想在算法方面有所发展,还是硕士好一点。开源项目可以去看,但不要引起开源协议相关的问题。我真心期望你们能把这个行业的国产软件做的更好。振兴中华,从我做起——我真不是喊口号!

五、 具体目标描述

在完成对自身与对业界情况的分析后,我对自己的职业规划制定了如下目标。

1. 短期目标

• 争取首考雅思6.5以上(目标分为7);

• 持续广泛涉猎计算机行业相关细分领域,增进对行业的了解;

2. 中期目标

• 本科阶段保持保研 GPA 在前 40%;

• 本科阶段完成一系列个人小项目,包括但不限于如下内容:

– 南京大学物理学院“鲸语者”公益组织网站系统;

– 一个AVG DEMO;

• 保证体测水平;

• 广泛参与一些有意思的小项目并持续整理并发布自已的学习笔记;

• 在 GitHub,LinkedIn 与自己的网站(https://ydjsir.com.cn) 等平台上打造出漂亮的名片;

3. 长期目标

• 研究生时选择云计算 / DevOps 方向,至少保研;

• 在云计算巨头 / 自有大型云的公司中,理想中的规划是(1年内)见习云计算工程师→(2年内)初级云计算工程师→(5年内)云计算高级工程师→(8年内)云计算技术专家→(15年内)云计算架构师。

• 在开源社区做出一定的贡献,可以是在工作中留下的,但我更希望是在我的个人项目中达成的。

六、 差距

开发能力仍较为欠缺

这是我的现状与我的生涯职业规划愿景差距最大的。这是我实现我的理想的基础。我只在各种导论课中了解到那个美好的远方,并走上了正确的道路。要到达技术高峰,我还需不懈努力。我还须特别关注我的数理基础。

资历与阅历仍需大量积累

就目前而言,我仍未获得含金量较高的证明或荣誉。然而,我还有相对充裕的时间与积极进取的心。

语言方面略有优势,但仍需努力

我的英语在南京大学属于一层次。但要达到雅思7,我还需持续努力。

七、 行动方案

大二下学期:奠基阶段

本学期是相当充实且忙碌的,也是在技术积累中起承上启下的阶段。本学期的课程中,我将首次涉及真实的工业界生产所需要的技术与能力(前后端开发技术等),而非像此前的那些计算机理论基础以及通修课。在这个学期,我对自己的要求,就是在实践中掌握自主学习的能力,为此后的生涯发展打下坚实的基础。

大三大四:分化阶段

到了大三大四,我将选择数据科学系统方向,因为这将是系统工程师的摇篮。该方向中包含的《云计算》课程将成为我在云计算方向深耕的开始。如有可能,我还会主动选修其他方向的《服务端开发》和《服务计算和SOA开发》等课程。在课本之外,我也要在进行积极的探索。此时,我应积极探索升学的可能路径,为自己研究生的发展做好铺垫。我将争取进入院内的软件研发效能实验室,了解如何提高软件开发、运维的效率与质量,并努力接触接近业界真实需求的云计算样态。我既要积累做出选择的资本,也要增进对选择的了解。

我也要选择一批国外 CS 的精品课程,跟着网课学完内容。计算机学科的特色,就是相关资料的广泛共享。我应当利用好这一点。

研究生阶段

我相信我会在本科毕业后继续深造,在相对宽松与自由的校园里继续对技术的自由探索。我也希望把我技术的根基打得更牢固,更扎实。我同样期望着能留洋深造。我希望到计算机学科生根发芽并枝繁叶茂的地方看看。我希望在开拓眼界的同时,掌握技术以外的视野和终生学习的能力。

在该阶段,我必须做好进入业界所需的技术积累。数据库开发,网络(CDN,机房网络等),分布式存储,云计算(虚拟化,操作系统等),云计算网络(SDN),中间件(消息队列,缓存,分布式服务框架等)等技术,都是我应该熟悉并有所专精的。在研究生阶段,除了积累工程能力,我更希望能在这几年中体验科研的具体流程,并为以后可能的将学术界成果转为产业界实际生产力打下基础,作为统领技术全局的架构师,需要对技术和业务极为深入的洞察与理解,这要求我要拥有深度思考的能力并积累下一定的理论积淀。

步入业界

毕业后,我是很希望到企业中去的。我的就业目标主要是专门的云计算公司或者大型企业中的云计算相关岗位。我想,既作为开发者,又作为用户的体验,将会让我更好地改进我的工作。云计算作为相对基础性的应用,承载着大量的上层应用,对可用性与稳定性要求极高。从基层开发岗到架构师,有很长的路要走。这样的过程与从士兵到将军的转变是类似的:冲锋陷阵与运筹帷幄所需的技能和思维方式并不是完全相同的。因而,我应竭力培养自己的专业素养与严谨意识,要保证自己的成果对得起其他团队成员与客户的信任。对我而言,终生学习自然是不可缺少的,而参与开源工作本身也是对自己的历练。

八、 评估调整方案

显然,我需要评估和调整我实现我的职业生涯规划时的步伐与节奏。在追梦的过程中,我将有机地结合现实情况,对我的小目标进行局部调整与整体评估,而对于上面提到的短中长期目标,则视其为里程碑,如无必要,尽量不调整。

1. 微小目标的制定

我常将目标进一步细分为以 7-30-100 天这样的微小型目标,分别制定相应的检查点并定期予以检查。除此以外,还有每日对自己行为的记录与总结。在制定方案的时候,我并不会总是不留丝毫余地,而是会划分出不同的实现等级,以及在不同实现等级之后的下一步安排与自我激励计划。

2. 目标检查

如果没有实际的执行,再合理的计划最终也会变为会成为一纸空文。为此我制定了一系列对自己关于设定目标执行情况的检查。我灵活地采用任务清单、过程评估等方式,对自己的目标实现过程与结果进行全面的评估。

3. 反馈措施

在实现自己的小目标后,我也绝不吝啬对自己的奖励。奖励的等级根据对目标实现程度的不同而有不同。

而没有达成目标时,我会迅速制定补救措施并努力弥补自己的过失。在这一过程中,同样执行制定计划并执行的全流程。这个过程,大概可以类比为编程语言中的异常处理机制。一个个 try 与 catch 的美妙结合,让可预测到的异常被提前安排,分层级分等级处理,从而维持整体系统的有序。

总结

这是我对自己职业的规划的第二个大版本。与一年前相比,我的专业知识有了很大的进步,对行业的了解也更为深入。在阅读去年的规划书的过程中,我发现了很多不妥之处。在本新版本中,我对我的职业生涯规划做了很多改进。

我的宣言是 “为兴趣、爱好、工作与理想的统一努力着”。这既是出于热爱,也是挑战自我与探索未知的欲望。这大概就是我心中个人抱负与技术追求的平衡吧:我从事软件开发工作,不只为了获得收入,更是出于对自我人生价值实现的渴望。

路漫漫其修远兮,吾将上下而求索。

仰望星空,脚踏实地。

附录:生涯访谈中其他的问答

访谈思路

在访谈过程中,我基本遵循由浅入深的访谈方法。我首先全方位了解受访者的职位、职业状况、职业内容与对职业的认识状况等。而后,我将综合这些信息描绘出相关从业者的职业图景。最后,我将通过访谈了解受访者从事这项工作的意愿,简单了解其在工作中体现出的价值。鉴于两位受访者均不愿出镜,故他们均以文字交流的方式接受了我的访谈。根据受访对象的要求,下面的内容中将不涉及任何受访者及其工作单位的具体信息,亦不涉及任何商业与国家秘密。

访谈对象1:JAVA后端开发高级软件工程师

1、您工作中典型的一天是怎样的呢?

答:我的公司上午9 点上班,但我一般提前 10 到 15 分钟到公司。我习惯于打包早餐到公司里吃。吃完早餐后,我会先休息下,并准备早上开早会的内容。早会一般在 9 点 10 分左右开始。早会内容一般是:昨天的工作内容;今天准备开发哪些功能,项目进度怎样,是否如期进行还是有滞后;如有滞后,因为什么原因造成的;开发中遇到什么难题等。早会过后,我将开始早上的工作。

中午吃完饭后大家一般都会休息下。我建议,你最好睡一下,要不然下午工作时精力会跟不上。有的公司下午 3、4 点左右会有下午茶,水果、零食等。大的公司快下班的时候会有代码审查的步骤,就是把今天所有人提交的代码拿出来让大家一起来看写的对不对,是否有潜在的 BUG 等。

赶需求的时候,晚上加班是常态,一般加到晚上 9 点左右(现在很多公司都默认上到晚上 9 点)。如果上线前一天还差一点没做好,开发团队甚至可能通宵。一般定好上线时间后,都尽可能去达成这个目标。如果实在是开发不完才会更改上线时间。不过显然晚上加班的工作效率都比较低,哈哈(笑)。

2、在后端,您日常工作的主要内容是什么?

答:后端的工作主要是编写业务逻辑代码。在项目开发过程中,大多数时候使用的都是基础知识。我建议,编程语言基础要学扎实一点。后端工作最终大部分都是CRUD(Create, Read, Update and Delete,增删查改),并根据产品需求来进行具体的业务逻辑开发。

3、您平时的主要工作的业务流程是怎么样的?

答:首先,拿到需求文档后,先不要急着开发,要先搞清楚以下内容:这个需求功能的目的是什么;大概要怎么开发(可不可以用一些其他的简单功能达到同样的目的);这个功能会不会对项目之前的功能有没有影响等。比如,若要开发一个平台登陆的功能,可能给到你的需求只有:登陆的时候只需要账号密码,且账号是手机号。此时你要想:登陆时账号密码不对时要怎样处理;连续登陆失败多少次后又要怎么处理;登陆成功后,需要按照什么接口返回什么信息给前端等等。这些都要考虑清楚,如有疏漏之处时一定要和出提出需求的同事以及前端同事沟通。

功能开发完后,要先自己测试功能是否正常,测试通过后就可以提交代码了。提交代码的时候要细心。提交前要先检查版本控制软件的配置,别把一些测试代码,错误的代码以及无用的缓存与日志文件提交到代码库中。提交代码不要太频繁,也不要太久(几天都没提交代码),一般开发完一个功能就提交一次;如果是大功能,就把这个功能细分成几个小功能,每完成一个提交一次。提交完代码后,要把带有新功能的分支发到测试环境,并告知测试同事进行测试。测试环境一般都是DevOps模式,由开发那边来负责部署维护,但生产环境还是由运维的同事来部署和维护。毕竟,还是该让专业的人做专业的事,对吧(笑)。

当代码被发到测试环境后,我便开始编写接口文档的工作。这里的文档指的是与前端的交互文档,其内容主要是:前端需要用到我这个功能的时候,应该怎么发送请求,请求参数是哪些,请求成功后会返回哪些参数,请求失败后会怎样返回等,这是协作开发所必需的。在测试部门测试完成后,后端便可以把项目打包好后,交给运维的同事,让他们把程序包在生产环境上部署。以上的模式不断循环,便是我日常的业务流程。DevOps真的是个好东西,哈哈(笑)。

4、可以讲下您入职的经历与公司一般的招聘流程吗?

公司招人一般是 HR 先筛选好简历,选出几个认为还可以得给技术领导看,他们觉得可以的话就会让你面试,当然更多的情况下是前面会多加一轮笔试(一般而言就是OJ,多刷题,多练习)。这方面的情况因企业而异,内推的机会要好好利用(当然你也不能辜负人家内推你时对你的期望)。技术面完后,HR 一般也会跟你聊下生活、薪资等(部分HR 可能会打压你的薪资水平,但你自己的期望显然也不能太高)。办理相关入职手续的时候要多点心眼。

面试的时候不用怕,面试官问什么就答什么就好,答不出来也无所谓,不要慌就好,尽量不要不懂装懂,以免被对面抓住把柄狂问相关细节,然后你只好继续不懂装懂,那就尴尬了(笑)。初级中级面试一般都是问一些 JAVA 基础知识,基础知识扎实就好;到了中高级后就会问一些原理之类的问题了,比如按 MyBatis 底层怎么实现的,JVM 调优等。当然,面试的内容与工作的内容通常是两回事。工作中并不总要用到做面试时所需要的那些高级知识。但你也要确信,这些高级知识可能是你日后解决重大难题或者升职的资本。

访谈对象2:Linux & Android开发高级软件工程师

1、您工作中典型的一天是怎样的呢?

早上来到公司,我会先看来自各处的,包括国内外以及测试方面同事的邮件以检查昨天合的code是否存在缺陷或公司有无重大事项等。一般而言,算上各种群发邮件,一早的邮件能有十多封。我需要快速过滤需要我action的邮件。在此基础上我会梳理下今天的工作计划,如今天要完成哪些进度等。

上午,作为开发岗,我会给测试人员邮件,约好时间一起讨论测试中发现的问题等。我会和其他同事(包括开发岗与测试岗)约时间(需要考虑国内外时差)一起sync issues。由于各种因素,交流很可能存在误差,所以我们一般选择面对面的交流方式以尽可能地保证信息的对称。

处理完以上事项后,一般而言,我会继续新feature的开发或调试此前的工作。在开发过程中,如果对框架的设计有异议,我可能会与框架工程师一起讨论原来的需求是否合理,框架设计是否合理,是否有必要推翻原来的需求与理论等问题。框架工程师也可以选择性采纳我的意见。这是一个相互促进,协力合作的过程。

在下午下班前,我会把把新feature的代码与同事一起进行code review。如果没有异议,新的代码将会在讨论后合入版本机。最后,我们会用邮件告知测试经理和项目经理今日变更内容。

2、您工作的主要流程随着职级的提升,分别是什么样的呢?

答:

\1. Junior(初级)研发只需要关注分给自己的feature开发,与此同时积累知识与经验。

\2. Senior(高级)及以上要带新人,在新人转正前要关注他的code和邮件(他一般都抄送给你)。组里难啃的骨头也会丢给你。你还可能参与功能的框架设计,帮助架构师细化设计架构,并给初级人员分配任务等。

\3. 再往高走的话,一般是做一个module的leader。你将要review module内部成员的code,schedule 定期的meeting 来sync最近出现的issues。提前预知风险,如有需要,及时involve更多的资源来handle。

3、您的工作相当偏向于系统底层,这意味着对您的工作对计算机体系结构相关知识的要求相当高。您是将它们与工业界的实际需求结合起来的呢?

答:这个没有这么夸张了,做driver说白了是configurations。我倒是觉得做framework的工作更大,因为要兼顾上层和下层。这两种开发我都做过,以上是我的亲身感受(笑)。

4、您的工作在整套信息系统中的角色类似于大厦的地基。这意味着您的任何失误都可能造成极为严重的后果,且您的工作中潜在的问题往往难于复现与定位。您是怎么应对这些情况的呢?

答:压力一般来自客户现场的issues。在此情况下,我们要多和客户沟通争取复现问题。如果有可能,把客户的环境要过来,和他同步复现。兵来将挡水来土掩,难以复现的问题一般不会有太大的压力。因为这种隐藏的bug一般难以从trace中发现,客户和项目经理也不会太苛责。

5、在这样的一个国际性大企业中,您的日常工作中是怎样使用英语的呢?

答:我公司在国内的分部里的同事都是中国人,因此在日常交流中汉语与英文混杂使用,大概就是那种实词都是英文的感觉吧。国外英美的口语可以理解,印度人的听不懂,澳洲的也难受(笑)。口语就怕电话场景,因为看不到对方,也不能及时打断确认一下一些不懂的词语,很容易造成信息的遗漏或误解。视频通话时要好点,很多图示和肢体动作可以辅助沟通。英文阅读读多了就好了,常用的词语是固定的。我觉得熟练掌握邮件英语的过程,比过六级要简单。为确保万无一失,我们一般在会后再通过邮件的方式书面确认一下。这样的流程在实践中已被证明是可行的。