技术上哪里有问题,得去找它的原理,在这个层面上,你只要肯花心思,都能够钻研出来。
今天我们采访的嘉宾是 @codecraft。他是一位有着十多年工作经验的后端开发工程师,多年来一直坚定地走在钻研技术的道路上。他写下了 2100 多篇技术博客,用一种工匠精神记录技术学习的点点滴滴。性格因素使然,相比走管理路线,他更喜欢做技术,甚至到退休养老也仍然想继续写代码来消磨时光。本期我们很荣幸地邀请到了他,让我们一起听听他的精彩故事和心路历程吧。
Q:向大家简单的介绍一下自己吧~
大家好,我是一位后端工程师,技术上主要就是 Java 这一块,其他语言像 Go、 Python 也有写一点。目前工作也十几年了,做的方向也比较多,To B to C 的都做过。以前想着往全栈的方向去发展,但是随着工作年限的增加,对技术深度的要求比较高一点,所以就一直钻研后端这一块,比较主流的技术基本上都用过。
我现在在团队里带虚线,但不在管理层面,更多的是在技术层面。之前也尝试过去转管理、带团队,后来发现每天开会协调进度,自己好像没什么进步,就觉得还不如做技术实在一点,技术只要你花心思去学,这个知识点就能够弄懂。
我本身是南方人,在北京读的大学,毕业的时候发现北京的工作机会最多,发展的机会比较好一点,所以就先在北京工作了几年。后来离开了北京,主要是北京的气候相对极端一点,以前偶尔还会有沙尘暴,冬天会冷一点,南方的话可能夏天会特别热,但是冬天也不会太冷。当时在北京也没有户口,有好几个同学都在深圳,所以就过来深圳了。
Q:你是如何进入编程这个行业的?
我大学读的专业是管理信息系统,本身就有 C 语言、Java 这些计算机编程的课程,后面我发现编程这个东西还挺好,有什么想法马上就可以动手去做,然后出问题的话反馈也比较快,不像跟人打交道这种,沟通来沟通去协调半天没个结果比较心累。觉得自己的性格做编程还比较开心,毕业的时候基本上就找这一块的工作了,而且当时互联网的薪资相对比其他行业的起薪要高,就没考虑其他的,所以就进入编程这个行业来。
当时也是有向学姐学长们问了一下,他们会给一些建议,比如说尽量不要去外包公司,可以去外企,那个时候外企还比较受欢迎,还有就是像 BAT 这些公司,其他的就是一些独角兽公司,哈哈,当时因为找工作,所以能问的都尽量去问。
Q:目前主要的工作内容是什么?
现在在做国际化电商这一块。当时也面了几家,有做海外短视频的,也有做海外电商的。目前国内的经济或互联网发展已经相对饱和了,但是像东南亚或者海外这一块市场还是很有空间的,所以就去了一家做海外电商的公司。海外电商从技术上来讲,主要会有一些多语言、时区的处理等,这个和国内电商不一样,然后就是不同的国家的业务以及特性,包括政策也都不一样,如果是一套代码想要同时满足几个国家的要求的话,也有一定的挑战。
目前国际化业务可能还会涉及到一些隐私合规。早期可能都是一套代码,所有数据都是存在一块的,然后像美国或者是欧盟这些有特殊要求的,再用以前类似中台化或者 SaaS 的东西去服务所有国家就不现实了,必须得是单独的一套数据,针对美国或者是欧盟的数据以及服务,都得是独立的,在数据层面就必须隔离开来。这个和国内也稍微不太一样。
Q:如何看待全栈开发?
做开发的话,比较尴尬的一点是,它在整个商业链路上是属于中后端的,不像销售或者其他们岗位离商业化比较近一点,可能从公司的角度来说,开发的价值体现没有那么直观。然后国内的话不像外企,三十七八、四十几岁的开发都能看到,不知道哪个大厂传出来的 35 岁这个槛,这对开发人员的长远发展就不太友好。
从长远的职业生涯来说,刚毕业到三十几岁这个阶段,肯定是往技术的深度上去发展的。但是往后的话,比如说到了 35 岁危机,或者说哪天想自由度更大一点,可能还是做全栈会好一点。比如可以尝试做独立开发者,或者业余时间自己做一些 APP,或者其他的一些东西,可以面向全球市场推广,我觉得独立开发者还是比较有优势的。之前也看过很多独立开发者的采访,他们能直接商业落地把自己的技术变现,还是挺不错的。
所以如果单纯是在职场上打拼,前几年可能会有技术深度上的要求,相当于在众多开发人员当中脱颖而出,然后再加上其他各方面的能力,职场上再往上走。如果抛开职场这块的话,全栈我觉得还是挺好的。比如说有什么想法,就可以自己从前到后把自己的想法给实现了,相当于自己就是一个团队,哈哈哈。特别是像今年或者是最近几年大环境不太好的话,也可以做很多尝试,比如说去做一些国外的市场,我觉得全栈可能有更多的机会,对于个人比较有好处。
Q:为什么喜欢写博客?
一方面从知识体系来讲,觉得工作了这么多年,对于某些技术细节还不太懂好像说不太过去,所以就按某个体系、某些组件挨个地去给它过一遍。另外一个,如果确实是工作当中遇到了一些问题,那就正好追着这个问题再把相关的一些东西给它补一遍。比如说相关的组件的一些用法,或者是它们有什么坑,或者是有些什么参数的调优等,这些都记录下来。有时候知识太多,记也记不住,过一两年或者是过几个月,我发现压根都不记得了,把这些记下来的话,后面可以快速地把它重新拿起来,主要还是这个初衷。我记的流水账多一些,偶尔会有一些总结和记录,主要还是给自己看,或者是自己给自己的一个交代。
内容就主要还是 Java 这一块的后端技术,比如 Java 的版本,JDK 的版本,每年会升两个版本,这一块是新的技术。跟着是 Spring、Spring Boot,这也是一块大的框架体系,每年都有迭代和升级,以及新版本的一些新特性,我会定期更新。
早些年我对写博客这一块追得比较紧,记得比较多,后来发现其实这块花的时间多,但是它不能产生明显地效用,所以后面主要以工作当中遇到的问题为主,比如说工作中用的这个版本,或者是一些问题,再去深挖。早期的话追求新特性多一些,我前几年写的一些东西都比较新,到现在这么几年感觉都还够用,除了一些 API 的升级更新之外,发现还能够用。
Q:你在社区写了 2100 多篇博客,为什么会如此坚持?
自律,有时候写上瘾了,一天不写就比较难受,主要还是自我要求。比如每天把写博客当做第一优先级来做,把时间挤出来,那么每天写一篇,一年 365 天,一年就是 365 篇,写个几年也就 2000 多篇了,哈哈哈。当然我写的大部分流水账多一些,主要还是自己写给自己看的,有些文章别人看了,价值不那么大。
至于为什么这么坚持,一个主要是当作自我的记录,有些东西工作很多年之后发现,如果不记录自己做了些什么,回想起来好像还真没做过什么,像每周写周报,每个季度写总结,主要还是记录给自己看。也有一些好处,比如有些东西以前总结过,后面遇到同样的问题,或者是记不太清,那么只要搜一下就能马上搜出来。以前也考虑过写在私人笔记里头,比如有道笔记、印象笔记这种,后来发现它不能跟人交流,而且每次写在私有笔记里,可能哪一年就换了个格式,导出备份也会比较费劲一点,后来干脆直接在网上公开写,有什么问题直接百度搜或者是站内去搜,很快就能检索出来。最近 GPT 的出现,也尝试把以前写的东西融入到 AI 当中,它回答的答案会更准确一点。另外一个是当做知识管理,方便搜索。
坚持写也有另外一个好处,就是想出书也比较方便,素材积累的比较多,后面出书就是水到渠成的一个事情。
Q:为什么选择走技术路线?做技术和做管理有什么不同?
国内的环境,大家可能普遍认为做上管理什么的才是正道,我以前也这么想。后来发现,从自己的性格来看,我觉得还是做技术更快乐一点,不像做管理每天都会比较焦虑,要焦虑去催进度,去各种协调解决矛盾,确实还挺费劲的,太费心思精力,感觉特别心累,哈哈,后来还是算了,还是走技术专家的这个路线。做技术怎么说呢,它相对简单纯粹一点,相对跟人打交道来讲,它没有那么多弯弯绕绕什么的。技术上哪里有问题,得去找它的原理,在这个层面上,你只要肯花心思,都能够钻研出来。
但是做管理或者说其他的,就不行,不是单纯你一个人就能够把问题解决了,需要协同才能解决。做管理或者是做商业或者是做其他,它的未知性会大一点,它就不是说你努力了就肯定没问题。有时候它还跟人情事故有点关系,在这个公司做技术管理能玩得转,到另外一个公司可能会发现以前的那一套就不管用了,不确定性会稍微大一点。还有个问题,这个也跟其他同事有聊过,前几年经济形势不好裁员,像这种做管理的确实不太好找工作,因为岗位也比较少。
但是一直做技术会有个缺点,一方面是知识折旧会比较快一点,另一方面如果自己不稍加注意的话,比如说工作了好几年都一直在做简单的业务需求,会发现自己就停滞在这里头了,这也是一个陷阱吧,得不断地去研究技术的原理,研究它的参数调优,或者是它的最佳实践。相对于跟人打交道,虽然说技术研究要简单一点,但是它每年都会有新的技术出现,就需要自己跟一跟。早些年像微服务、容器化、K8S 或者 Service Mesh,这些都得去跟一跟,但是也不用追得特别新,其实在工作中够用或者是超前一点,把这个效用发挥到最大也就行了。
技术这一块,怎么说呢,技多不压身,有些人做了管理之后就稍微脱节了,脱节后面再重新想做起来就会比较费劲一点,但是如果能一直保持住,灵活度或者是自由度就会大一些。它跟你的努力是成正比的,其实这跟学生时代有点像,只要你努力了,肯花心思,你的成绩或多或少会有点体现。这个就属于硬通货。在这个公司你能解决这个技术问题,到了那个公司你也能解决。它不像管理,有点玄学,在这个公司文化下面你这样去做能行得通,换一个公司在另外一种文化下可能就行不通了,这种就不是硬通货。
Q:工作至今,你有哪些感悟?
有一些方法论的东西,这些是相对通用一点的,这个得根据自己工作的经验去积累。一些行业方面的,比如说电商领域,或者是风控,或者是算法,或者其他特定的业务领域,这些确实是得根据你所在的公司、业务来积累。纯技术层面的话,确实是更新比较快,折旧就比较快一点,需要自己每隔几年定期地再去更新一下,没有什么是一劳永逸的。除了底层的原理这些,就比如说操作系统、计算机网络这一块,它的折旧速度会相对慢一点。
另外就是确实还是得写作,得积累,回忆起来才知道自己去年或者是前年大概学了哪些技术,有什么沉淀之类的,不然的话好像一年一年过得挺快的,有时候发现自己在原地踏步。但是写东西的话,至少会有记录,可以看到去年学了些什么,遇到哪些问题什么的,逐步帮助自己成长。文章写多了,源码看多了,渐渐地对一些原理或者什么的都会比较了解,对于自己的技术提升还是很有帮助的。之前几年都坚持在写,我觉得对我来讲提升还是比较快的,如果一直做业务需求的话,会发现自己的进步就不那么大。
以前还是有些技术洁癖的,对代码要求比较高,有时候也会对别人的代码要求比较高。后来发现,对于一些中小公司来讲,活下去才是最重要的,解决收入问题是第一优先级,会更偏业务一点,所以就不会特别地去追求技术上面要怎么样,除非技术上的东西已经严重影响了业务的发展,比如说大促系统经常崩掉什么的。可能到了这个程度老板才会比较重视,其他的话只要你能跑就行,哈哈。至于说代码到底写得好不好或者怎么样,其实老板们可能不关心这么多,他们更关心的是怎么活下来,怎么去创造收入、创造利润。这是对技术的另外一个认知。以前觉得代码要写得怎么怎么样才是好的,后来对这一块也看得比较开了,也不会觉得别人为什么代码写得这么差,当业务需求比较紧急也不会那么苛刻了,哈哈哈。
工作多了的话,经历的行业做过的系统也会比较多,那就相对游刃有余一点。
Q:如果可以重新选择,还会选择这个行业吗?
还是会,学技术还是挺打发时间的,感觉挺适合养老的。学技术什么的比较费时间,退休之后有大把的时间,写写代码什么的,挺适合消磨时光的,而且还可以产生一些价值。
Q:2023 有什么收获?对 2024 有什么期待?
今年的收获就是,之前写博客中断了一阵子,后来又重新开始,每天都写,就感觉这一块重新坚持下来了也还挺好的。24 年还是继续把这个习惯坚持下去,其他就没有了。工作上的话,主要还是能够去解决问题,除了技术这一块,更多地去了解业务。其实技术本身不直接产生价值,它需要服务于业务,希望更多的去了解一下业务。
Q:对于刚入行的开发者有哪些建议?
坚持写博客还是挺有好处的。坚持记录问题,总结问题,或者是做一些学习笔记也行,做一些知识管理,积累下来,沉淀下来,不知不觉过了几年,会发现也算是一笔财富。技术是一方面,另外也多了解业务或者是自己,比如说自己去做独立的APP,做全栈,扩充一下自己,增大一些机会。
Q:对社区有哪些意见和建议?
思否的博客比较简洁,比较纯粹,不像其他网站看着比较杂,用起来也挺舒服的,体验什么的都挺好的。其他的话,希望多吸引一下后端的程序员在这里去学东西。
小编有话说
@codecraft 自称是代码的工匠,希望把写代码这件事,做到极致。在技术的道路上,他不断更新知识、磨炼技能、精进技艺。在他的身上,我们看到了一种执着专注的精神,深入钻研技术的一点一滴,并持之以恒,坚持不懈。当我们身处浮躁迷茫中时,不妨向 codecraft 一样,哪怕只是记录下非常微小的一个知识点,用一种工匠精神,为自己的前行之路打下更坚实的基础。
《思否有约》记录你与编程的故事。欢迎小伙伴们加入访谈,共同分享成长之路,扫描二维码报名吧~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。