“九层之台,起于垒土”,正是各行各业的开发者们,通过他们的努力和贡献,用一行行代码,推动着技术的发展与应用,为我们创造了更加先进、便捷和美好的生活。2023 年,「思否有约」专访了 12 位社区开发者,他们在不同的城市工作生活,默默描写着自己的编程之路。在访谈中,他们分享了自己在学习工作上的经验感悟,倾听他们的故事之余,也给我们带来了启发和鼓舞,受益匪浅。转眼 2023 即将落下帷幕,辞旧迎新之际,让我们再次重温,回顾这 12 位可爱的开发者。
一些业余爱好
过去我会经常出去看电影,让自己沉浸到剧情当中短暂的忽略掉各种压力。
兴趣爱好有文玩,编程、摄影、骑摩托、做饭、哲学。
工作以前有挺多的爱好,会打乒乓球,或者画画,上班以后好像都没什么了。现在的话,周末可能会一天的时间都在家里写文章或什么的,或者就在附近的公园走一下这样。
爱好嘛,大概就是动漫(宅男标配)、旅游(世界这么大我想去看看)和摄影(世界这么美我想多拍拍)。
喜欢研究古诗词,偶尔也会看看小说、动漫、电视剧或者打打游戏之类的。目前业余在写一部小说,已经写了一百万字了,我计划要写五百万字以上。
平常爱好就是看小说、追动漫、敲代码,通过视频平台 B 站、抖音等渠道学习。
有的时候我觉得我的生活其实挺枯燥的,下班之后基本上还是搞这些东西(写技术博客),也没有其他爱好,就周末可能出去玩一下。
学习的经验方法
光自己学还不够,还要跟别人分享才能进一步巩固。为什么老师上课越来越熟练,就是因为他每天都在给别人讲,讲了以后学生又再问他问题,他就又去解答。一开始我弄了一个 QQ 群,帮大家解答问题,后来加入思否社区之后,我又在社区上去帮别人回答问题。在回答问题的过程中,我也可以学到很多东西,扩宽我的知识广度。举个例子,比如说我在社区发现了一个比较好奇比较喜欢的问题,我就去搜一遍,然后再验证一下,我发现刚好也是对的,然后我再去回答这个问题。这样提问者得到了答案,而我也学会了一点我喜欢的那部分知识,就是这样的一个过程。
我之前给我的同事们分享过一种编程的方式,叫“小黄鸭调试法” —— 在调试代码的时候对着一只小黄鸭,详细地解释每行代码的作用和思路。具体的出处和原理这里就不展开了,因为这个方法也不是我独创的,在网上是可以查到的。简而言之,在一个人表达自己想法的过程中,这种方式会帮助他去整理思路,重新考虑问题。编程毕竟还是比较考验逻辑思维的,很多时候一个人想出来的东西很可能其实是钻了牛角尖,这个时候再顺着错误的思路去想,只能越想越偏。我遇到过很多人在一个问题上会卡住很久,我说你给讲讲吧,往往讲了几句他自己就发现问题所在了。
多看一些技术文章、博客或书籍,增进对 JS 的了解,查缺补漏。我刚入行那会是学习欲望最强的时候,什么都不懂,看什么都觉得很厉害,这个阶段的我会去慕课上看视频,书籍的话因为存在滞后性,而且相对也比较枯燥,故而更倾向于视频。书籍更建议入门后再去挑一些不错的来深入,我就是先看视频入门,等到视频没得看了才想着去买些书籍来看,虽然有些知识过时了,但是还是有不少经典的书籍仍然值得一看。然后就是多看一些大佬的博客,去吸取大佬的精华。有时间的话也多刷刷知乎、掘金和思否等一些社区或论坛,少刷短视频。
我学习技术的方式很简单,就是通过各种开源项目以及基础文档来学习,然后通过写文档总结或者是 Demo 来消化自己学习的东西。有时候看一些官方文档,比如 Vue 的文档,可能当时理解了,但在实际开发中不一定写得出来。这个时候就可以通过写 Demo 来加强巩固知识点,这样更能深入学习理解一些细节。本质上还是在于扎实自己的基础。
记笔记是我的一个习惯,已经陪伴了我 5 年多了,只要是我想到的好的点子,或者什么什么东西,我都会记。有一些源码,比较难,我学着比较费劲,这个源码可能有 1000 句,那我会每一句都有注释,确保我只要看到这一段,我都知道他在干什么,我会从头到尾梳理它。比如我发现了一个好用的插件,那么这个插件的使用方式,就是一篇笔记。它的使用方式,它的各种用法,我会尝试,这个参数只能传 0 到 1,那我传个 3 试试看会怎么样。这是普通用法,我再来个高级用法,再来个脑洞用法。我会很奇怪它能用到什么程度,然后再对它进行源码解析,我学会它的原理之后我能做出什么?再一步步扩展。
你要学会去抄代码,但是不能直接拿过来抄,你要会改,你要能看得懂,要知道它的逻辑。它的流程,第一步、第二步、第三步,然后到第 n 步,可能第一步里面它又分为三小步,这三小步里面又分为几个方向,每一步它是怎样走的。你看到人家的一些写法,往往有很多规则语法API,你可能没见过,或者说你见过,但你不知道原来可以这样用,真的是开了眼界了。所以首先要去抄代码,抄的时候要能看得懂,抄过来要会改。我们抄的不是表面的代码,而是代码中的一个思想,一个解决问题的方案,一种思路(包括看源码也是看其中的代码思路),这是我的理解,仅供参考。我觉得写代码最主要的还是一种思路,有了思路,其他东西都好说,就怕没有思路,想不到。
确实还是得写作,得积累,回忆起来才知道自己去年或者是前年大概学了哪些技术,有什么沉淀之类的,不然的话好像一年一年过得挺快的,有时候发现自己在原地踏步。但是写东西的话,至少会有记录,可以看到去年学了些什么,遇到哪些问题什么的,逐步帮助自己成长。文章写多了,源码看多了,渐渐地对一些原理或者什么的都会比较了解,对于自己的技术提升还是很有帮助的。之前几年都坚持在写,我觉得对我来讲提升还是比较快的,如果一直做业务需求的话,会发现自己的进步就不那么大。
关于工作
现在做全栈,所以前后端都会用到一些,前端主流的就是 JavaScript、CSS 还有 HTML,框架主要就是 Vue 和 React,后端的话就是 Spring Boot,跟常规的一些东西。日常工作中其实没有固定用的技术,一般是项目里需要什么新的东西,就去学什么。目前主要使用的还是前端三大框架,Vue、React 还有 Angular。目前主要就是 JavaScript 还有 Java 这两种技术。
其实现在 Coding 的工作占比不是特别多了,日常主要还是一些技术管理、业务沟通之类的工作。但我也还是会“强迫”自己去多接触些新东西,未必是真的新,但起码对我来说是新的。比如前些年 K8s 很火的时候,就尝试自学了相关内容,最后在公司里推动了整条业务线 K8s 化改造,还是挺有成就感的。
在工作中我利用了很多的技术工具,能够大大提高自己的工作效率和工作乐趣,比如我自己在终端利用各种工具的组合构建了一个属于自己的 SSH 免密登录的工具,利用一个多终端工具能够同时控制多台机器输入相同的命令,利用一些脚本和工具帮我构建自己的效率系统等等。当我有一些文件或者是文本需要处理时,我的第一反应往往都是自己写个脚本处理,很少去花时间找工具,比如我昨天想看一下自己拍的照片格式信息,也没带电脑回来,于是我在 iPad 的虚拟机上找了一个命令行工具,把文件拷贝到虚拟机里面,顺利查到了信息。
我现在的工作其实没太大变化,有些人可能做着做着就走管理去了,我其实就是一直在做最底层的工作。从工作到现在,前端的区别主要就是用到的一些技术不太一样了。以前我们那个时候都是 jQuery 什么的,后来就慢慢地变成了现在的 Vue、React。对于这些工具和框架,我现在已经没有过于去追求了,我可能还没有大部分人那么熟悉,因为我现在大部分时间都在做更基础、更底层一些的工作。比如 CSS 框架,我以前可能会有什么框架就赶紧拿来用,用市面上的一些框架,但是现在的话,我基本上不用这些框架了,都是自己手写框架。因为用别的框架会有一些学习成本,再就是如果框架自身不满足需求的话,还要去看那个框架是怎么实现的。所以有时候综合下来还不如说我自己写吧,其实写起来也不比用那些框架慢,真的。
关于未来的规划,我应该是会一直做技术的。我领导之前问过我是做技术还是做管理,我说我应该还是会继续做技术。
工作带给我的变化和成长还是蛮多的,工作不像是在学校里面,不是单纯地按照老师布置的作业去完成就行了,工作更多的是和人打交道,就比如沟通清楚一些需求,比如和设计 UI 沟通哪些模块可以不用太复杂的效果等等。尤其是前端,我觉得前端要沟通的地方太多了,和设计、测试还有后端都要进行沟通,要大量的沟通才能保证很好地完成工作任务。我目前所在的公司很注重个人解决问题的能力,工作上很多东西,包括业务都是自己和业务方去沟通交流,遇到问题就自己拉一个 On-Call 去问。硬实力肯定是重要的,但是软实力也一样重要。对我来说,每一份工作经历都是一种转折,因为每一份经历或多或少都给我带来了成长。
感悟和未来
我觉得相比于技术层面上的提升,更宝贵的其实是业务层面上的积累。因为除了特别偏门,或者需要非常特殊的场景才能实施的技术,你总归是能自己去提升的。无论是自学还是问别人,或者是行业交流,除非是你不想学,否则总能找到办法的。但业务上的东西,如果你不在这个行业或者领域里,就很难窥其门径。互联网行业里大家经常提到说“技术人要有产品思维”,你要从各个维度去理解需求、理解产品、理解用户甚至理解市场,非互联网行业这点要更甚,那你怎么去“理解”?无非最后都还是要落地到业务上来。求职的时候,在岗位要求里我们也经常能看到会有一条“具有某某行业经验者优先”,这就是业务上的积累。所以我觉得我的成长都来自于这方面。
曾经跟一个证券行业的朋友聊过,他提到了一件很有意思的事情,他们内部有某些系统,其中主持开发工作的,有很多不是那些学计算机这种科班出身的专业人士,反倒是一些学数学、精算、金融出身而又半路出家转行做了程序员的一些人,因为这些人更了解证券这个行业里的各种概念,更能迅速理解并充分评估需求。这个例子里的这些人他们掌握着过硬的技术素养,同时,他们又掌握了普通开发者所不具备的业务能力。换而言之,如果大家的技术水平都差不多,你能凭借什么更胜一筹呢?那么你就要不断地精进,既要成为技术专家,更要成为业务专家。
估计也有人跟我一样,刚开始其实对编程这件事并不是那么笃定,不确定自己是否合适,反正先学着看看。我觉得年轻人可以大胆尝试,但是千万不要三分钟热度,也不要太受挫。刚入行什么都不懂是很正常的,多付出时间和精力,这时候的你应该是有比较多时间和精力的,不要把太多时间用在诸如短视频这样的消遣上。我自己在刚入行那会是真的求知欲旺盛,越不懂越想了解,了解的越多发现不懂的更多,下班回到房间也是一直在看各种教学视频,即使是上班期间,只要手头上没有工作就会去看教程或者文章。
刚入行的时候由于经验、知识各方面积累不足,经常会遇到不明白的问题,这时候一定要善于利用搜索引擎,当然,如果身边有前辈或同事的话多去请教他们吧。我当时入行的时候是在亲戚的小公司,就我一个前端,身边也没有做这行的,真的是所有问题都得靠自己,而且我自己也是比较内向社恐的人,所以加群问人什么的几乎没有过,都是自己解决。其实对于刚入行的人来说,解决问题最快的办法还是问有经验的人,有可能的话还是建议多去认识一些同行。
一开始我的规划是最终往技术方面发展,现在我的规划有点变化,往 Team Leader 的方向去发展了。其实对我来说我觉得这两个都可以。转方向的原因主要有两点吧,第一点是现在确实也不太需要太多的开发岗位了,现在招聘也不再去招初级的开发工程师,我们现在招聘都是高级起步,所以开发的岗位其实是越来越少的。其次就是,当时公司对人员晋升有一些培养计划,有意向的人可以尝试一下,然后我就选择尝试一下。这样的话,如果要当团队管理的话,需要掌握前后端的一些相关知识,得懂一点才能去指导别人,刚好我也都会一些,就想尝试一下。目前来看,总体上还可以,各方面都能把握得住,转型初期还是比较顺利的。
我对未来好像没有过规划,一步一个脚印,踏踏实实做好自己当下该做的事,人生自然会进入到下一个阶段。
长远的目标的话,我个人还是希望专研技术,更深入某一领域,在某一领域有所建树。也希望有一天我能出版一本技术书,有一个厉害的开源项目,服务开发者。我从毕业以来就一直是这个目标,一直是这个规划。
我目标还算比较明确,我做很多事的时候,不管同事家人还是有关的人,几乎就没有得到过人的理解,因为我总是奔着 5 年后、 10 年后什么的去搞,所以他们经常不理解。就像我从每个公司离职,大家都会感觉很奇怪,你怎么干得好好的,刚给你涨完工资你就走。几乎每个工作都会给我涨工资,但是我感觉我得现在就怎么做 10 年后才能有个好的结果,所以就离职吧。比如我 17 年来到上海的时候给自己定的一个目标,就是三年之内我要进大厂,五年之后我要在业界有影响力。我要求这五年里头,必须要纯学技术,我要沉下心来做一件事,看看到底能不能把这事做好。五年之后我要求自己绝对不能沉浸在技术里,我一定要学其他东西,比如说现在就是创业什么的。就一定要散,之前要聚,现在一定要散。
我对页面这些东西,包括所谓的美学也没什么追求,但是我觉得写算法去做数据处理其实是一件比较有意思的事情。后端肯定比前端有意思,特别是处理 CSS、做布局这些东西,我觉得还是挺讨厌的。Java 还在学,本来已经学得差不多了,基本的都快学完了,后来项目重构就一直落下来了。以后也想往后端去转,也不是说完全不做前端,就看看有没有机会,然后渐渐地偏向后端一些。
要有一些目标,给自己制定一个计划,学一些东西。不说十年五年,计划个一两年就行。计划太长远的话还是会赶不上变化。时代老是在变嘛。计划要学习哪些知识点,学习哪些技能,假如将来计算机这碗饭吃不住了,那我手里还有别的技能,至少能混口饭吃。焦虑是没有用的,焦虑可以稍微 EMO 一下,但要控制一下时间,别一整天都在难过中度过。就是你先去想,想完了之后再去尝试,然后制定计划要做什么,然后去完成就行了。大多数人制定的宏伟计划都很难完成,也不是说我们要做出什么惊天动地,铭记于历史的大事。就把小事做好,开心地度过每一天也挺好的。
在一个比较浮躁的环境中,要沉下心来做自己的事情,最终就会有所收获。2017 年底的时候,其实也是有好多公司倒闭,好多公司业务困难,身边也有不少裁员,或者一些大的互联网公司在收缩业务的,我记得当时也有不少小伙伴被裁掉,也是有一种互联网寒冬的感觉。我因为刚好留下来善后,反而就没那么着急,每天就一门心思扑在我这个项目上面。我上下班都骑自行车,骑着车我就在想,诶,今天写的这个功能哪里还可以再完善一下?明天我写一个什么样的功能,让它更有特色一些?那段时间其实过得特别充实,比上班还充实,完全沉浸在自己的兴趣里边,每天就想着这个项目要怎么完善。等到 2018 年,慢慢这个项目有这么多人关注,还带来很多收获,甚至一些物质上的奖励等等,这在 2017 年做这个项目的时候肯定是想不到的。应了一句“鸡汤”就是,但行好事,莫问前程。
技术这一块,怎么说呢,技多不压身,有些人做了管理之后就稍微脱节了,脱节后面再重新想做起来就会比较费劲一点,但是如果能一直保持住,灵活度或者是自由度就会大一些。它跟你的努力是成正比的,其实这跟学生时代有点像,只要你努力了,肯花心思,你的成绩或多或少会有点体现。这个就属于硬通货。在这个公司你能解决这个技术问题,到了那个公司你也能解决。
共勉
最后,谨以在今年的思否有约中, 12 位开发者的一句话和大家共勉,让我们共同期待新一年的到来, 2024,要继续加油鸭~
多记笔记,不要害怕出糗。只有在别人指出自己的错误时,才能纠正自己的错误理解。
公司里的每个人都是你的资源,都可以利用起来。
既然当初我没有选择其他的路,那么我也就不会再去想如果当初选择了另一条路会怎样怎样 —— 那对我现在已经选择的这条路毫无帮助。
可能我这个人比较轴,做什么就尽力去把它做好,放弃从来都不在我的选项里。
基础应该要从平时工作的每一点每一滴开始做。
可惜过去不能重来,未来不可预料,还是享受当下吧。
危机来了,你焦虑也没用,对不对?你得想办法去渡过危机。
@lulu_up:从煤矿工人到大厂高级前端,我的 5 年逆袭之路
我的人生不需要任何人认可。
工作当然也挺重要,但是家庭更重要。
人的路都是探索出来的。
无论什么时候,坚持做自己认为对的事情,不浪费时间,特别像今年这样的就业环境,更应该沉下心来这样去做。
技术上哪里有问题,得去找它的原理,在这个层面上,你只要肯花心思,都能够钻研出来。
《思否有约》记录你与编程的故事。欢迎小伙伴们加入访谈,共同分享成长之路,扫描二维码报名吧~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。