我花了多长时间熟悉了项目?
我是3y,一年CRUD
经验用十年的markdown
程序员👨🏻💻常年被誉为职业八股文选手
今天来跟想聊下大家很关注的一个问题:「搞完Austin消息推送平台要花多长时间?」
这个问题我被很多股东问过,大多数都是想要将Austin消息推送平台写进简历上,想要知道在秋招前能不能给整明白,整出来。
我在Austin的群也看过有个小伙连续好几天在群里问,想知道搞完要多久,这个系统难不难,适不适合在校的。
说白了,就是想要在心里有个底。这种问题很正常,我在正式工作前也想知道要达到实习/工作需要什么技能。
不过,我给不了具体的时间,这对我来说挺难的。因为每个人的学习时间、所掌握的基础是不同的。像我在大学的时候,我早上8点去图书馆,晚上9点从图书馆回宿舍,我也不知道你是不是跟我一样的。
还有就是可能你就刚刚整完SpringBoot
,还没有做过任何项目,对很多技术都还没理解好。这样即便我文档很全了,但对于这部分同学来说,门槛还是相对较高。
而如果你已经有过Redis/Kafka
这种基础了,只是Flink
/xxl-job
这种中间件没怎么用过,可能知道它们是干啥的,但不知道原理。那在这种条件下,上手项目的门槛又相对较低点。
也有在滴滴的、腾讯的工作几年了,把README
文档刷一遍,就能直接去看代码的整个流程了。虽然会对细节有很多疏漏,但毕竟架构的见识和工作经验摆在那,上手会快很多。
它适不适合在校生?肯定是适合的。它不像商城系统要熟悉业务细节,有各种的商品信息。它不像广告系统要了解各种的专业名词才能看懂业务,广告系统有各种专业名词CPT
/CPS
/CPC
/CPM
/ROI
/CVR
...
Austin消息推送平台核心功能是很好理解的,就是推送各种渠道的消息。而推送消息为什么能是一个平台,只是我们围绕着核心功能的基础上加多了很多基础建设,它的存在不再是一个小功能,所以它就是一个消息推送平台。
每个公司几乎都会有发送消息的需求,也几乎都会有类似的封装。Austin消息推送平台的架构和解决方案是通用的,跟别的公司相比只在于这个推送系统它的规模以及所提供的平台能力差异性。
「搞完Austin消息推送平台要花多长时间?」
以我为例吧,我当时接手消息推送平台到熟悉它大概花了两个多月时间,一方面我当时刚实习,技术确实也就那样,在生产环境没用过JSON
,没用过MQ
,没用过Redis
。另一方面,文档确实没有像我现在的那么齐全,生产环境下的代码经过了几代同事的迭代,代码风格差异也挺大的。
不过这两个多月不意味着我对这个系统就了如指掌了,我只是掌握了整个推送消息的流程,很多发送渠道的细节还是不懂的。
比如以前的小程序消息推送需要有下发凭证(formId
)才能对消息下发,这是我后来对小程序消息迭代的时候才知道的。比如对于push通知栏消息它的链路十分长,我们做了一整套打点体系,但由于迭代和交接的问题,这个链路也是后面才慢慢摸索出来哪些是关键的位置...比如对于短信计费原来是要把发送凭证+手机号才能产生唯一的key,不然统计就会乱掉了...
话又说回来,如果把消息推送平台写在简历上去面试。以我的经验,面试官并不在意某个渠道的消息下发细节(除非他也是搞消息推送的),更多的关注是系统的架构和整体的流程,就没遇到过需要针对某个消息渠道做过多解释的。
经过我的迭代,现在Austin消息推送强依赖MySQL
/Redis
和Kafka
。对于MySQL
和Redis
来说,差不多是每个项目的标配了,而Kafka
后续我可能会考虑抽象出来由你们自己适配对应的MQ实现,MQ在这个场景下还是有必要的。
在面试前更多的是准备MySQL
/Redis
和MQ
这几块技术栈,理论上中间件在公司都有专门的人负责,但这几个确实我们在日常开发中用得非常多,建议多去看看原理和源码。
像分布式配置中心、分布式定时任务、分布式计算引擎、分布式日志框架、监控告警框架这种你们要是对哪个熟悉的,就写上自己熟悉的框架。如果不熟悉的,面试的时候简单提一嘴流程就好了(建议去看看这些框架的设计思想)。
最后不负责下个结论吧:
1、如果你曾经做过些小的项目,了解MySQL
/Redis
和MQ
的使用,大概三周到1个月+时间能对项目有所了解
2、如果你没做过小项目,只是刚学完SpringBoot
,起码2个月+时间能对项目有所了解
3、如果你已经了解过各种的中间件(分布式配置中心、分布式计算引擎),在工作中也并不完全是后台的CRUD。相信我,你那时候就不会问要多久才能搞完这个消息推送平台
很多时候我们做一件事之前都是充满着未知,但如果未知的成本不高的话,建议先行动起来!一直犹豫不行动,相当于什么都没做。
(想学习要先买书,而挑书的过程可能就花了几天。这几天用来看书可多香啊!)
阅读原文可跳转至消息推送平台仓库