Junedayday Blog

六月天天的个人博客

0%

【每周小结】2023-Week17

Go技巧 - 缺少项目经验的开发者该如何面试?

最近,我面试了几个应届生,他们的综合水平都挺不错的,但或多或少非常在意自己的项目经历,有的甚至会编造出一些内容,深入追问后很容易发现破绽。

今天,我就从一个面试者的视角出发提出三个建议,希望对广大应届生或者想转型做Go语言的读者有所帮助。

掌握业界的主流解决方案

缺少项目经验,这个问题本身影响还是很有限的,但如果你什么背景都不了解,就大大缩小了和面试官交流的范围。从高性价比来说,我建议各位根据自己的求职方向,掌握3个复杂系统的主流方案。

比如,你希望从事云原生方向,那就可以了解Kubernetes、OAM交付模型、阿里云公开的架构资料;如果你要做后台开发,那可以去看看较为通用的订单系统、用户系统、支付系统的架构。

相关资料在网上都可以找到,尽量根据发布时间、社区质量、受关注度等综合因素,挑选相对高质量、详略得当的文章仔细研读,一般花几个时间就可以入门一套系统。学习时,主要关注以下3点:

  1. 了解系统中的高频术语,不要在面试时发生听不懂的情况
  2. 了解系统下各子模块与中间件的分工
  3. 了解系统的基本流程,如一个pod是怎么创建的、一个订单是怎么生成的

如果时间充裕,可以针对性地深入。

重视问题的思考过程

我们或多或少都有一些小项目经验,哪怕只是自己开发的一个demo,也会是面试官的重要考量项。尽管这个项目本身难度低、也没有什么大价值,但优秀面试官看重的是思考过程,你要从思考过程中展示出自己的能力。

捎带一句,如果面试官只看重项目本身的价值,那就意味着公司需要的是资深人员,你与岗位不太匹配。

我建议坦诚地说明这点,并向他展示经验以外的能力。

如何从思考过程体现能力,我推荐3个思路:

  1. 技术深度 - 技术问题的有条理排查:如HTTP的异常排查,涉及到Go框架、HTTP协议、tcpdump等技术细节
  2. 用户思维 - 从用户维度的功能设计:能描述清楚一个功能的从设计到开发的思路,从使用者的角度考虑问题
  3. 技术广度 - 开源方案的横向对比:将自己的项目与开源方案进行对比

其中,技术广度中开源方案的内容可以与 掌握业界的主流解决方案 结合,但千万要注意重点:小项目往往很难超越开源方案,我们可以适当描述在设计时的取舍思路,而不要过于强调开源方案的不足。所谓的“不足”很可能暴露出你的认知不足。

重视所呈现的个性品质

面试官在对面试过程总结时,需要总结出几个关键词,也就是给面试者打上“标签”。这些标签一定程度上是可控的,也就是可以由面试者主动呈现出来 - 无论是通过简历,还是面试过程。这里,我强调几个我比较看重品质:

  • 严谨:如简历中出现大量数字指标,并在面试过程中一一回答清楚
  • 思路清晰:对一个问题的排查思路,过程十分清晰自然,结果水到渠成
  • 善于沟通:在开发过程中,能频繁地与资深人员(公司leader或学校mentor)交流,调整方向

呈现出的“标签”因人而异,在秉承着真实的前提下,也需要考虑贴合对应的公司、部门的特点。

小结

项目经验是一个资深开发者的核心价值所在。当行业缺口大时,可能存在跨方向转岗的情况;而当下整个就业环境较差,这种情况已经非常少见了,这就要求转岗的朋友适当降低预期。

而对于应届生或者找实习的同学,如果想要获得满意的offer,可以从上述3个维度切入,整理自己的简历、准备面试,可以提升不少的竞争力。有想要改进简历的朋友,可以直接联系本人,不定期回复。

编程思考 - 普通工程师如何在组织中推进系统重构

作为一名普通工程师,在公司内部推动重构类工作是很困难的,常见的问题有:

  • 短期价值不高:重构类工作短期很难拿到足够大的收益
  • 推动途径难:往往需要自下而上、跨部门的协作

我整理了近几年相关的工作经历,总结如下:

  • 重构方案是核心 :重构的技术方案是核心,它决定了最终的成败
  • 自下而上地介绍价值,自上而下地推动工作:项目的价值点必须得到上层认可,再由上层推进工作
  • 从各团队的视角地看问题:自上而下地推动工作可以把控整体节奏,但如果想要有序、可控地推动,很需要你带入他人的视角,用共情的思维来看待具体问题
  • 时间是最大的变量:无论是价值还是投入,时间总是最大的变量,耐心才是最重要的品质

总的来说,重构类工作是一个综合考验技术、沟通以及耐心的过程。关于重构方案,我后续会补充一个示例。

工作生活 - 快速修复小问题

生活中有很多不尽如人意的小事情、小情绪。其中,影响我最大的是 沉没成本 这个因素。

比如我的钥匙丢了,如果一直批判自己是怎么丢的、以后要采取哪些手段来避免等等,这种情绪就容易演变成更大的问题;而如果我快速地采取行动去补钥匙,在路上回想一下丢失钥匙的过程,既解决了问题,又有了反思。

对一些小问题、小情绪,我习惯于快速着手去解决,规避后续产生更多的损耗。

Github: https://github.com/Junedayday/code_reading

Blog: http://junes.tech/

Bilibili: https://space.bilibili.com/293775192

公众号: golangcoding

二维码