一、引言
近乎与生俱来的对某件事物的渴望与向往,真的存在吗?所谓的Inside Identity,真的能在努力帮助下改变命运吗?现在的我,对这两个问题的答案都是毫不犹豫的“是”。
在我成人之前,我已经为了这个目标付出了许多努力。在小学,我试图参加电脑制作比赛,可惜不被父母同意,我的计划只得搁浅。在初中,我曾尝试搭建Minecraft服务器与网站(团队主页:https://abn-team.top/ )。在我的高中——中山纪念中学,一所信息学竞赛强校,我认识了一批OIer和从高中开始就一直做自己项目的人。在一个叫做缤奇(官网:https://www.binkic.com/ )的社团,我初步了解了一些与GitHub、Git版本控制系统,Unity开发等相关的基础知识,对IT行业有了初步的了解与明确的向往。与此同时,为了开设Minecraft服务器与架设自己的网站,我开始接触云计算。从15年开始,我变成为了阿里云的用户,在一封又一封的推送邮件中,我感受着阿里云奇迹般的的成长历程。我深感云计算在提高开发效率,降低运维成本方面的巨大优势,为这其中的技术之美感到震撼。至今,我仍长期使用着阿里的ECS、OSS和CDN等云产品。
在进入大学的第一个学期,我在完成一系列的线下“软工导学”课与线上的“程序猿与攻城狮”MOOC课程所要求的课程内容后,结合在南京大学软件学院学习其他课程的真实体验,我愈发坚信,在南京大学软件学院这个优秀的平台上,我能冲击技术高峰,让自己对程序开发的探索从玩票到专业,在实现个人抱负与技术理想的同时,为兴趣、爱好、工作与理想的统一努力着。
就上学期而言,《高科技产品探究》课程让我第一次从相对专业的角度分析身边高科技产品的兴衰。我虽然没能在教务系统中选择到这门课程,但仍坚持“蹭课”一学期并完成了期末论文。恰巧,这门课程的期末论文主题正是分析云计算相关产品的兴起并以国内几家云计算巨头为例进行案例分析。最终,我们组获得了99分的课程成绩。虽然这并不能记录在我的GPA中,但在课堂上所收获的知识与鼓舞却长久地留在我心中。
现在,作为一名软件工程专业的学生,我确信我想要成为一名真正的专业的后端云计算工程师,在0和1的世界留下自己独一无二的贡献。我希望以我在云计算方面的技术,为开发团队甚至是客户的开发团队的开发、部署与产品上线助力,让云计算的规模集群效应与极强的弹性持续促进IT行业的发展。在上个学期的《软工导学》课程结束后,我关于明确自身职业规划的想法,已有雏形;我也正期望着以这次职业规划大赛为契机,认认真真地给自己做一次职业规划,而且,是那种既可以给别人看,更可以给自己看以鞭策自己、鼓舞自己的职业规划。
长期以来,我一直被人认为是 “说了也不一定做” 的人,而今,我要努力成为”做了也不一定说“的人。与其一味画饼空谈,不如用实际的技术证明自己。”Talk is cheap, show me the code.” 然而这一次,我需要写这份规划书,因为有了规划,心中的模糊的方向才能变得清晰,才能找到努力的方向与意义。
我的兴趣、爱好、工作与理想将会是统一的。
我希望成为一名后端云计算工程师。这是明确的,毋庸置疑的。
二、自我认知与自我探索
从小学及以前朦胧的向往,到初中梦想的开始,再到高中时梦的确立,我对后端工程师这一职业的追求,从纯粹出于追寻创造的快乐转变为明确将其作为我的爱好与工作,完成了观念上从玩票到专业的转变。“人贵有自知之明。”要做出合格的职业规划,我首先必须要对自己有清楚的认识。在此,我要感谢南京大学在职业生涯规划方面的投入与努力。在南京大学的“北森生涯-吉讯系统”,我进行了一系列测试,并得到了许多有益的结果。
1. 职业兴趣评估
图 1 职业兴趣评估结果
该评估显示,我在职业兴趣方面极度偏向于现实型。我喜欢动手,较为擅长使用各类电子设备与维修工具,并视它们为得力的助手。自小,我便对修理与组装有极强的兴趣。在高中,我就常常帮助师长同学解决各类电子设备的疑难问题。此外,我对于建模极感兴趣。我喜欢的游戏,不是那些与人相斗的惊险刺激的游戏,而是建设自己的世界。Minecraft,城市天际线是我的挚爱。在玩这些游戏的时候,我从来不认为这仅仅是一个游戏。在Minecraft建筑中,我甚至买了专业的规划图用纸和方格纸,努力模仿着建筑图的规范构思自己的建筑。当我把精力投入这些活动,诸如操作、手工制作以及运算、理论分析等时,我甚至可以达到一种忘我的境界,不惜一切代价与一切阻碍因素作斗争。 我是一个十分务实的人,脚踏实地,信奉“实践出真知”,“Talk is cheap, show me the code”的信条。我不太喜欢仓促地做决定,而是希望在明确且固定的环境中,通过充分的亲身活动来获取经验后制定完整的计划并执行。
2. 职业价值观测评
图 2 职业价值观测评结果
该测评显示,我是一个期望在工作中能够独立工作、独立决策,而且能够表现出自己的创新,发挥自己的责任感与自主性的人。 自小到大,我总是有自己的一套想法,总是希望力排众议,让自己的想法得以实行。在我的团队中,也是我,主动提出了建设自己的服务器的构想,让团队从一个其他服务器中的Minecraft战队变成了今天的综合性技术团队。我也因此赢得了队友的认可。
3. 职业性格报告
图 3 职业性格测试结果
该测评显示,我是一个认真而严谨的人,做事深思熟虑,对认准的事情有一股韧劲,信守承诺。我对待我所热爱的任务,会倾注大量的精力,并希望别人也是如此。若自己不能做到,我常常感到懊恼与沮丧,若对别人也是一样。对几乎任何事情,我常特别关注它的合理性。对于一切违反基本原则或科学原理的行为,我常感到气恼与不满。
4. 自我认知程度测评
图4 自我认知程度测评结果
在上图中,得分越高,表示在该项中我对自己的认知程度越高。
在对自己期望的职业——后端云计算工程师这方面,我一直保持着十分积极的态度。我也要感谢身边一群优秀的人,是他们作为我的榜样,为我指明了方向。在对自己期望职业的了解方面,系统给我的评分很高。
根据测试结果,我对自己兴趣点、性格倾向、价值追求、技能侧重和学习风格的自知了解情况较高,可以说明的是,我对自己喜欢的职业极为明确,对这些职业投入了努力并进行过探索。我有信心去探索后端云计算工程师这一职业、有勇气找一些职场人去交流、访谈——文末附有对一位JAVA后端工程师的访谈。
在明确职业的方向后,我一贯以积极的态度,采取主动实践、积极行动的方式追求自己的理想。在初中和小学,我无数次想加入软件开发相关比赛的队伍,却总是因为父母的阻挠而告终。在高考后选择专业时,我在选择计算机相关专业时也受到了父母的阻挠。然而,我坚持初心,最终仍然选择了软件工程专业,成为南京大学软件学院的一员。在这个开放的平台里,我随时准备着为自己的职业生涯发展打下坚实的基础,为兴趣、爱好、工作与理想的统一的实现而努力着。
5. 职业技能评估
此前有过搞Minecraft服务器和小网站经验与广泛在知乎拾人牙慧的经验的我,在《软工导学》的课堂上分外活跃,以至于被刘嘉老师戏称为“应该马上退学”的学生。而后,在南京大学软件学院这样优秀的平台,拥有丰富课余时间的我,对许多与本职业相关的工作进行了探索。在上述测试平台中,我对自己的职业技能进行了评估,并得出了如下结果。
擅长的:
操作与控制: 操作与控制设备或系统;
技术设计: 为满足用户的需要而发明或改进设备和技术;
监察: 监督或评估自己、他人或者组织的表现,并提出改进意见或建议;
编程: 根据不同目的和要求编写计算机程序;
故障排除 : 判断误操作的原因,确定解决方式;
弱项
人际敏感 : 人际交往中,关注他人的反应,并从中理解他们的想法;
人际适应 : 根据他人的表现,来调整自己的行为和表现;
说服: 说服他人改变想法或行为
评估分析
回望我的成长经历,我深感上述结论的贴切性。但我也深知,K12阶段那些不涉及复杂数据结构与算法的操作,在云计算业界并没有多少生产力。目前来看,我也只是个博客与文档的搬运工。我要走的路,还很长。
结论
综上所述,我的性格特质与职业兴趣十分适合后端云计算工程师这样更注重数据自身交互过程与数理逻辑,而非考虑使用者感受与体验与共情能力的职业。我的高成就动机也将使我适应于这样的职业。
三、 职业探索与职业认知
在“软工导学”与“程序猿与攻城狮”的课上,我终于对这个行业有了基本的了解。软件工程中的“三驾马车”深入我心。人机交互、软件方法、AI,互联网,创业等一个个主题演讲,让我热血沸腾。在课下,我常主动动手实践,聆听各类讲座,增长自己的见识。在这一过程中,我的后端云计算工程师的图景逐步显现。
1. 社会与职业环境
在这个“大数据”、“云计算”、“人工智能”和“物联网”并驾齐驱的时代,云计算作为其他三者运行的基础,拥有美好的前景。
在信息化与智能化成为潮流的今天,各行各业都在主动提高自身的信息化程度,工信部甚至还印发了《推动企业上云实施指南(2018-2020年)》,鼓励更多企业上云。在国际上看,云计算的市场规模也在不断增大,正处于“技术采纳生命周期模型”中的“主街”阶段,云计算服务的需求仍未饱和。
图5 全球云市场规模及增速
数据来源:中国信息通信研究院.云计算发展白皮书, 2019
在这之中,在国际上,主要面向非IT行业的云计算服务样态SAAS(Software As A Service)的组成占比也愈发趋于多元化。
图6 全球SaaS细分服务市场占比
数据来源:中国信息通信研究院.云计算发展白皮书, 2019
在中国,云计算也已蔚然成风。《中国云计算发展白皮书2019》认为,随着5G、边缘计算、人工智能等新技术和新应用的推动,未来中国云计算产业规模还将继续增长。综合中国信通院、IDC等研究机构的公开数据,预计在2023年,中国云计算产业规模将超过3000亿元人民币,而来自政府和大型企业的上云率将超过60%。由此可见,在中国,云计算行业的市场将无比广阔。
而就后端云计算工程师的待遇而言,在行业内也算得上中高水准。软件工程师行业总体待遇就相当不错。根据《南京大学软件学院2019年毕业生就业质量报告》,南京大学软件学院本科毕业生平均入职年薪约 20 万,研究生毕业生平均入职年薪约 26.5 万。即使放到全行业来看,根据职友集的近1年 567 份样本数据,北京云计算工程师的月薪平均值达到了¥ 21210,其详细分布如下图。
图7 后端云计算工程师薪资分布
相较前端,云计算行业更注重后端的运维与开发(云计算对外展现的前端交互和内部海量的业务逻辑开发与运维管理相比就是冰山一角),后端工程师的人数也相对较多些。与直接面向用户并与人或机器进行实实在在的交互的前端相比,后端相对更靠近数据及算法本身,其内在的逻辑的严密性更高,对规范性、可修改性与可拓展性的要求极高。相比前端要和与具有高度不确定性的人打交道,还要考验设计能力与审美能力相比,我更喜欢感受0和1的脉动,感受电子元器件在离散数学与组合数学的规律下与人的默契配合。我更愿意按接口编程或是编制对外统一的接口或服务,让使用我的接口或服务的人能轻松地通过接口调用获取到所需的信息或是服务,让开发变得更简单,更多传统行业的企业或是个人也能从云计算中受益。我希望我不仅能享受云计算在我的开发与我的生活中带来的便利,还能投身其中,在实现兴趣、爱好、工作与理想的统一的同时,为社会做出卓越的贡献。云计算固然极大地简化了以往的开发流程,但也正因如此,工程师的能力变强了,责任也变大了。后端云计算工程师的知识图谱大致如下:
图8 后端云计算工程师知识图谱
注:此图以亚马逊AWS的公有云相关服务为例。实际应用中,可能选取的并非是基于AWS的方案,但上图中内容仍可有机替换为其他提供商的服务。
就拿阿里云而言,阿里云也已几乎覆盖到了云市场的每一环。
图9 阿里云的云服务产品线, 图片来自https://www.aliyun.com/about/advantage?spm=5176.7920200.709611.2.3d4942909iPuyq
2. 学校环境
南京大学软件学院在业内处于顶尖水平,与计算机专业一同在教育部第四次学科评估(2017)中获得A评级。学校科研成果斐然,产学研结合紧密。无论是校内的学术大咖,还是各类企业导师(微软、华为),都让我对真实的业界有了一定的了解。院内开设有不少与云计算相关的课程(数据科学系统-云计算(2学分),DevOps等)。以上这些,都是我追求我的理想的良好条件。
3. 家庭环境
我的表哥是一名优秀的后端工程师。他的故事,激励着我不断地自学探索。他第一学历不高,在工作中也曾长时间没有进展。而后,他勇敢地辞职闭关修炼,参与了一些培训班,而后技术水平大增,成功加入25万年薪以上群体。用他的话而言,和在实践中学到的东西相比,在大学里学到的知识是微不足道但起到关键作用的。在与他的交流中,我萌生了对这一职业的向往。文后附有对他的访谈。
4. 在实操中的探索
在建设团队的一批网站/平台/应用的过程中,我深深体会到了云计算封装后高可用且廉价的IAAS/PAAS/SAAS赋予新时代开发者们的强大能力。我认为,心中那幅流程图最终变为代码上的实现的过程是十分振奋人心的,而更重要的是,这些项目是我和我的团队一起完成的。我在命令行的界面里感到一种亲切感与自然感,看着屏幕上五颜六色的文字输出,我并不感到畏惧,而是为这些结构化的语言而着迷。我对云计算也因此产生了极为浓厚的兴趣。
而看着云计算平台们精妙复杂的控制后台中精心封装好的各类商品化服务,我为云计算环境配置的统一性与高效性所震撼。曾经,CDN网络的建设需要多级调试,制定繁复的均衡负载/缓存方案。然而今天,我只需要半个小时便可配置支持全链路HTTPS的支持QUIC协议的覆盖全国的CDN(百度云与腾讯云),且带宽费用被压缩到极低,且并没有削弱其可拓展性与可修改性。我也想开发这样的服务,为更多开发者提供便利。在我自己的团队里,看着在玩家/其他成员的长期使用稳定的基于云计算的一整套平台,我感到极为欣慰。我们再也不需要时刻打开家中的设备,便可享受7x24的网络环境优良的算力。这其中,阿里云的OSS的广泛使用,让我们的团队能将爬虫、数据存储与内容分享有机结合,能在合理的支出下基本不再需要其他主流文件传输服务。在本学期,我还用Cloudflare的CDN为《软件工程与计算一》大作业的文档页面提供CDN服务,极大地便利了同学们。助教甚至在作业中放置空白的Readme,文档全部线上化。
我想,这正是后端云计算工程师这一职业的成就感最直接的表现吧。
四、职业决策
在完成对自身与对业界情况的分析后,我对自己的职业规划制定了如下目标。
1. 短期目标
- 努力补上自己在数学方面的短板并保持自己在英语方面的长处;
- 持续广泛涉猎计算机行业相关细分领域,增进对行业的了解,在许可的情况下,讲座尽量多听,体验项目多参加;
2. 中期目标
- 本科阶段(抑或针对本学期而言),保持保研GPA在前40%,为出国所需的语言关/GRE积累一定的经验,以此为升学打下坚实的基础;
- 在大学期间,要掌握一定软件开发生产力,即在业界工作的能力;
- 在大学期间,要将自己的一些想法加以实现(项目驱动),并在GitHub,LinkedIn等平台上打造出一份份漂亮的名片;
3. 长期目标
- 在云计算巨头/自有大型云的公司中从事后端云计算工程师工作,并能留下些前人没有做过的贡献;
- 结合自己的专业知识,开发一款支持云原生的跨平台开源AVG游戏引擎;
五、职业路径
6. 本科阶段
首先,在本科阶段,我想必是要先把基础打好,同时把眼界拓宽。在选择之前,拥有对更多对选项的了解与选择的资本。打铁还需自身硬,任何抉择都不可能是毫无代价的。我在本科对自己的要求是:
我一定要争取保研/拿到世界TOP50高校的offer。这就需要我在GPA上大下功夫,并努力积累项目/科研的经历。
大一大二:奠基阶段
回顾大一上学期,我的《计算系统基础》课程处于中上游水平,英语读写则位列全级第6,但在数学(微积分)方面仍存在短板。虽然总的GPA在保研线内,然而我仍极大地提高了自己的危机意识。求学如逆水行舟,不进则退。我绝不应以任何理由放松对自己的要求。从大二开始,我就应为出国要过的语言关/GRE做准备。大一大二是专业知识/基础知识的奠基阶段,我应力争把知识和持续学习的能力的底子打好。
此时,我的课余时间相对较多,迎来的选择还比较少。此时,我应该深入了解各个选项,多完成些通识课程与体育课程的学习,分析自身情况,增强自身综合素质,为自己大三大四时做出的选择做出准备。与此同时,群团活动也不应被遗漏。软院科协、青协的学生组织活动与南京大学IT侠、微软俱乐部的社团活动让我受益匪浅。在青协,我在做志愿活动的同时探索了南京的许多景色,而在IT侠,则在为同学们排忧解难的过程中收获了许多幸福与快乐。
大三大四:分化阶段
到了大三大四,有了细分的方向之后,我会主动选择与后端相关的《软件可用性》、《计算机网络》、《DevOps+》,《互联网计算》、《数据科学基础》、《数据管理基础》、《软件系统设计》等课程。除了课本之内的学习,在课本之外,我也要在进行积极的探索。我既要积累做出选择的资本,也要增进对选择的了解。
附加内容
必须对自己的一些小想法加以实现的尝试。这一点在职业决策中已经提到。比如,自己的网站(https://www.ydjsir.com.cn/ )要认真地办起来,要能跟着网上的一些开源项目自己做一个猴版,再不济也要能看懂别人写的代码。
7. 研究生阶段
本科结束后,我相信我会继续深造,在相对宽松与自由的校园里继续对技术的自由探索。在这一过程中,我将享受这个过程本身。我也希望把我技术的根基打得更牢固,更扎实。我同样期望着能留洋深造。我希望到计算机学科生根发芽直至枝繁叶茂的地方看看,看看FLAG(Facebook、领英、Amazon,Google)这些世界级的技术巨头,再看看UC Berkeley、MIT、CMU、普林斯顿这样的世界级学府。我相信,我能在开拓眼界的同时,掌握技术以外的视野和终生学习的能力。我相信,交流、接纳、吸收、融合,能在技术,特别是IT这种特别需要合作的行业,跨越国别的合作才能更好地共创明天。此前在一些国外云平台的使用过程中,也深感国外云计算巨头相较国内企业的差异之处。即便不能如愿,我也要选择一批国外CS的精品课程,跟着网课学完内容(PPT 和要求读的课本相关章节看过,理解,如果有课程视频要看视频),做完 Lab。计算机学科的特色,就是资料大多公开共享。作为未来的从业者,我自应利用好这一优势。
在该阶段,进入业界所需的技术积累必须打好。数据库开发,网络(CDN,机房网络),分布式存储,云计算(虚拟化,操作系统),云计算网络(SDN),中间件(消息队列,缓存,分布式服务框架)等技术,都是我应该熟悉并有所专精的。
8. 步入业界
毕业后,我是很希望到企业中去的。特别是像阿里云、腾讯云、天翼云这样的国内云计算头部公司。我想,既作为开发者,又作为用户的体验,将会让我更好地改进我的工作。我希望感受时代的脉搏,追赶技术最新的应用。云计算作为相对基础性的应用,承载着大量的上层与用户应用,对可用性与稳定性要求极高。因而,我应竭力培养自己的专业素养与严谨意识,要保证自己的成果对得起团队其他成员与客户的信任。
我也很希望能在开源社区方面做出自己的贡献。目前,我希望开发一个完全开源的、跨平台的、支持云原生、图形化编程的AVG游戏开发引擎。我希望在我的作品中,把国产AVG引擎的技术水平提升到新的高度。对我而言,云计算技术绝不仅是谋生的手段,更是个人价值实现的方式。我不仅会为了维持生活而开发,更会为了实现兴趣、爱好、工作与理想的统一,奉献社会而争取向开源社区做出贡献。我将既会是云计算的开发者,也会是使用者与受益者。
9. 此后
我的宣言是“为兴趣、爱好、工作与理想的统一努力着”。这也说明,对我而言,这些内容是一体化的。我的爱好当然不止于后端云计算开发一项,我的生活也决不可能只有自己的兴趣、爱好、工作与理想。在赡养父母,找到那个对的她方面,我和其他普通人也许不会有什么大的区别。但是,在程序开发中积累的严谨的思维模式,显然会极大地影响我的生活作风。例如,“Long Term Support”的理念,深入我心。我对于我爱的人,必将把LTS长期维护的理念贯彻始终;“static”、“final”、“public”、“protected” 等理念,也将会被我践行。
终生学习自然是不可缺少的,而开源工作本身也是对自己的历练。这既是出于热爱,也是出于对挑战的渴望。这,就是我心中个人抱负与技术追求的平衡吧,我从事软件开发工作,不只为了从开发中获得收入,更是为了获得成就感。这也与前面的测评结果相照应。
六、评估调整
1. 目标制定
就我自身而言,我将目标进一步细分为以7-30-100天这样的小型目标,分别制定相应的里程碑并定期予以检查。除此以外,还有每日对自己行为的记录与总结。在制定方案的时候,并非不留有丝毫余地,而是会划分出不同的实现等级,以及在不同实现等级之后的安排与自我激励计划。
2. 目标检查
如果没有发自内心的遵守,任何合理计划制定下来也会成为一纸空文。为此,我制定了一系列对自己关于设定目标执行情况的检查。我灵活地采用任务清单、过程评估等方式,对自己的目标实现过程与结果进行全面的评估。
3. 反馈措施
在实现自己的小目标后,我也绝不吝啬对自己的回馈。回馈的等级根据对目标实现程度的不同而有不同。一般而言,是指做我想做的而任务优先级低于当前任务的事情,比如说更新自己的网站,追心爱的番剧,与人进行交流探讨等。
而没有达成目标时,我会迅速制定补救措施并努力弥补自己的过失。在这一过程中,同样执行制定计划并执行的全流程。这个过程,大概可以类比为JAVA中的异常处理机制。一个个try与catch的美妙结合,让异常被提前安排,分层级分等级处理,从而实现整体系统的有序。
七、结语
《礼记·中庸》:“凡事预则立,不预则废。” 经过上面撰写职业规划书的过程,我深刻领悟到脑中空想的规划与写在纸上的规划截然不同。将脑中的想法记录为白纸黑字之后,心中的仪式感油然而生。我确信,我要从现在玩票级别的夸夸其谈者,转变为有一定实力的,热爱生活与工作的实干者。
不得不说,我是十分幸运的。一次又一次,我成为了那个例外。无数次,我没有因为我的所作所为而陷入窘境;无数次,我所担忧的那些没有发生,而许多小幸运却出乎意料地降临在我的身边。然而,这并不能成为我躺在过去中的理由。无论如何,我必须确定我自己的方向。
我也相信,在这份规划书对我自己生效之后,我会严格按照规划书规范自己的行为,为实现兴趣、爱好、工作与理想的统一努力着。虽然,我的执行力与毅力仍有不足,但是,我的心向着远方的星辰大海,前行路上纵有坎坷,我也愿积极应对。
最后,以一句我很喜欢的话结尾。
“仰望星空,脚踏实地。”
附录 职业生涯人物访谈
被访谈者信息
访谈对象:高级JAVA后端工程师;
所在城市:深圳;
毕业院校与院系:广东工业大学计算机学院;
受访方式:发送文件;
一、访谈目的
我希望通过对一名在一线工作后端工程师的职业访谈,了解在一线后端工程师的工作状况,了解该职业所必备的知识与能力,以此对后端工程师这一工作形成更加清晰的认识。
我还将通过整理访谈内容,了解要胜任后端工程师这一工作所应该具备的相关能力。我将通过本次职业人物访谈,了解自己应该怎样认识软件工程师中后端工程师这一职业,从而能够更好地辅助自己规划和调整职业路径。
二、访谈思路
在访谈过程中,我基本遵循由浅入深的访谈方法。我首先全方位了解受访者的职位、职业状况、职业内容与对职业的认识状况等。而后,我将综合这些信息描绘出后端工程师的职业图景。最后,我将通过访谈了解受访者从事这项工作的意愿,简单了解其在工作中体现出的价值。鉴于受访者工作较忙,且不大喜欢口头表达,我专门将本次访谈的问题与提示制成了一份Markdown文档,通过发送文件的方式对受访者进行访谈。
三、问题提纲
1、在后端,您日常工作的主要内容是什么?
2、您平时的主要工作的业务流程是怎么样的?
3、在后端,开发职责与功能的划分主要是怎样的?
4、您认为,在软件项目开发的过程中,后端与其他部分的地位与关系是怎样的呢?
5、您工作中典型的一天是怎样的呢?
6、可以讲下您入职的经历与公司一般的招聘流程吗?
7、可以讲下您在培训班里面的收获吗?
8、想问下您对我生涯规划发展的建议与您自己的规划?
9、您认为后端工程师的价值是什么?
四、访谈内容
1 、在后端,您日常工作的主要内容是什么?
答:既然是作为后端,我平日的工作主要便是编写业务逻辑代码。在项目开发过程中,大多数时候使用的都是基础知识。我建议,JAVA基础需要扎实一点会比较好,项目开发的后端工作最终大部分都是CRUD,中间的业务逻辑根据产品需求来进行开发。有时也会使用一些多线程、设计模式等技术优化自己的代码。
2 、您平时的主要工作的业务流程是怎么样的?
答:首先,拿到需求文档后(有可能没有文档,直接口头传递),先不要急着开发,要先搞清楚这个需求功能的目的是什么,大概要怎么开发(可不可以用一些其他的简单功能也能达到同样的目的),这个功能会不会对项目之前的功能有没有影响,需要注意些什么等。
比如说,开发一个平台登陆的功能,可能给到你的需求就只有:登陆的时候只需要账号密码就可以了,账号是手机号。这个时候你就要想:登陆时账号密码不对要怎样处理;连续登陆失败多少次又要怎么处理;登陆成功后,需要按照什么接口返回什么信息给前端等等。这些都要考虑,不清楚的可以跟出需求的同事、前端同事沟通。
功能开发完后,要先自己测试功能是否正常,测试完后就可以提交代码了。提交代码的时候要细心。提交前要先检查下自己要提交的代码,别把一些测试代码,错误的代码以及无用的缓存与日志文件提交。提交代码不要太频繁,也不要太久(几天都没提交代码),一般开发完一个功能就提交一次;如果是大功能,就把这个功能细分成几个小功能,每完成一个提交一次。提交完代码后,把功能发到测试环境,并告知测试同事进行测试。测试环境一般都是DevOps模式,由程序那边来负责部署维护,但生产环境还是需要运维的同事来部署和维护。毕竟,还是该让专业的人做专业的事。
当代码被发到测试环境后,我便开始编写接口文档的工作。这里的文档指的是与前端的交互文档,其内容主要是:前端同事需要用到我这个功能的时候,应该怎么发送请求,请求参数是哪些,请求成功后会返回哪些参数,请求失败后会怎样返回等等。
测试同事把这阶段的功能需求都测试完成后,那就可以发布生产环境了。这个时候后端把项目打包好后,发给运维的同事,让他们把包在生产环境上部署。
3 、在后端,开发职责与功能的划分主要是怎样的?
答:后端开发一般都是一个功能安排一个后端工程师开发,基本不会出现一个功能多个后端同事一起开发的情况。所以别人的写代码的习惯基本也不会影响到我,只要遵守基本的JAVA开发规范就可以了。
4 、您认为,在软件项目开发的过程中,后端与其他部分的地位与关系是怎样的呢?
在工作上,大家实际上只是负责不同的部分,工种不同罢了。在沟通方面,在跟同事沟通的时候尽量客气一点,就像跟朋友聊天一样,偶尔开个玩笑啊什么的,别太严肃。在中午的时候,可以与同事聊聊共同话题(技术、新闻、游戏等),跟同事混熟点,增加自己的人脉。跟领导也一样,不要刻意维持上下级关系,跟领导混熟了,很多事情你不用问他也会跟你说的。
前端、后端、运维等都只是不同职位的技术人员,地位待遇都是差不多的(这个看能力)。后端的工作可能会相对的多一点,加班也会多一点,但也不要以为这样就说我后端比较重要,地位会高一点,千万别这样想,大家都是一样的。
5 、您工作中典型的一天是怎样的呢?
我的公司9点上班,所以我早上一般提前10到15分钟到打包早餐到公司里吃。吃完早餐后休息下准备早上开早会的内容,一般在9点10分左右开始早会。早会内容一般是:昨天的工作内容,今天准备开发哪些功能,项目进度怎样,是否如期进行还是有滞后,如果滞后了是因为什么原因造成的。开发中遇到什么问题、难题之类的也可以在早会上说出来,大家一起想办法解决。中文吃完饭后休息下,最好是睡一下,不然下午工作时精力会跟不上的。有的公司下午3、4点左右会有下午茶,水果、零食等,吃点水果零食随便休息一下。有的大公司快下班的时候会有代码审查的步骤,就是把今天所有人提交的代码拿出来大家一起来看写的对不对,潜在的BUG等。
赶需求的时候,晚上都会加班的,一般加到晚上9点左右(现在很多公司都默认上到晚上9点)。如果上线前一天还差一点需求没做好,通宵也是有可能的。一般定好上线时间后,都尽量不去更改,如果实在是开发不完才会更改上线时间。不过晚上加班的工作效率一般都比较低。
6 、可以讲下您入职的经历与公司一般的招聘流程吗?
公司招人一般是HR先筛选好简历,选出几个认为还可以得给技术领导看,可以得话就学过来面试。小公司一般都是一轮技术面试,就可以了。技术面完后,HR一般也会跟你聊下生活、薪资等(有点HR可能会打压你得薪资),一般技术面试过就可以了。
面试得时候不用怕,他问什么就答什么就好,答不出来也无所谓,不要慌就好。初级中级面试一般都是问一些JAVA基础知识,基础知识扎实就好;到了中高级后就会问一些原理之类的问题了,比如按MyBatis底层怎么实现的,JVM调优等。当然,面试的内容与工作的内容通常是两回事。工作中并不总要用到做面试时所需要的那些高级知识。
7 、可以讲下您在培训班里面的收获吗?
当初去那个培训班是朋友推荐的,说还不错,就业率也比较高,所以就去了。在培训班里,最大的收获应该是JAVA基础吧。因为JAVA基础讲的比较详细,所以当时培训完找工作比较快,薪资也还可以。在培训班里,技术、学习方法、人脉都会有,这个要看你自己了。不过在大学里还是尽量多学些,你的起点比我高,要好好珍惜。大学里面学的是骨干的知识,在工作中,骨干打的好的话,其他经验和知识自然能够被轻松获取,骨干知识上就能生芽开花。网上的公开的免费的学习资源应被你好好利用。
8 、想问下您对我生涯规划发展的建议与您自己的规划?
如果你真的很喜欢写代码的话,就往架构师方向发展吧,我自己的话后面可能会转行去做自动化测试之类的吧,年纪大了写业务逻辑感觉会有点吃力(自己的感觉,每个人不一样)。你提到过你想往云计算方向发展。就现在而言,云计算的确是时代潮流。我的公司中也大量地采取了云计算的相关技术,特别是在运维与部署方面。然而我也要提醒你,往云计算方向去走的话,对你的数学基本功的要求会很高,对持续学习乃至主动探索的要求会更高。
看看下面这张图,你最终也会选择其中一个方向深耕亦或是作为顶层设计者。就后端而言,云计算只是一个技术选项,是完成任务的手段,所需的业务逻辑仍然是大同小异的。
图8 后端知识图谱(从架构师的视角俯瞰)
9 、您认为后端工程师的价值是什么?
如果从职业上来看,你可以认为这是一种谋生的手段。从更高的层次来看呢,其实你前面写得已经很好了。你是项目中站在幕后的人,你的需求变更速度相较前端要低很多,但对错误的容忍度也会更小。你可以把这个职业认定为“幕后英雄”。毕竟看着前端的同事自如地调用自己的接口建构出繁复精巧的业务系统,也是很有成就感的吧。
访谈总结
“长江后浪推前浪”,访谈者作为前辈的话语给我很大的启发。我想,后端工程师,特别是后端云计算的工程师的价值,大概就是为上层应用的稳定运行提供基础性服务吧。默默地做他人的垫脚石的体验也是挺好的。访谈者特别提到的在云计算方面对数学的要求,也提示我要把离散数学、线性代数、组合数学与概率论等知识学好。微软对新招募的员工有“三好”的要求:英语好、数学好和编程好。我想,我也应该朝着这三好的方向努力。