大家好,我是TianTian。
今天推荐一位来自腾讯前端程序媛的「大厂炼成记」的故事。
每个优秀的人都有一段沉默的时光。
能与这么优秀的人一起共事,一起探讨前端,一定很有意思~
不如投一份简历,来团队试一试吧。
王贝珊,腾讯高级工程师,腾讯 AlloyTeam 成员,现腾讯文档网络层技术负责人。毕业于中山大学。工作 6 年,业务领域包括人脸识别追踪、电竞直播、支付缴费、在线协同应用等,在小程序、前端框架、方案设计和项目实践等方面有着丰富的经验。
热爱前端技术,在 GitHub 写作个人技术博客已有 5 年,记载了前端相关的技术学习笔记和总结,并著有开源书《深入理解Vue.js实战》、电子书《前端的进击》、纸质书《小程序开发原理与实战》。喜欢猫猫,热爱写文章、分享和开源。
我是非科班的程序员。大学学的是光信息,毕业后进了华为,岗位是数通工程师,做的是交换机、路由器、防火墙等技术支持方面的工作。不管是培训还是实践,工作成绩都非常不错。但是在工作半年之后,我却发现自身对做的事情实在提不起兴趣,于是就辞职了。后来开始考虑自己真正喜欢什么,想起大学时跟过一位 Web 物理引擎开发教授做研究,他给我看了研究室做的汽车透视结构,当时觉得特别酷。后来便开始自学前端,然后从一家小公司加入了前端开发的行业。
自学前端,并不是一件容易的事。既要进行前端知识的学习,又要进行代码的编写。而最难的部分则是如何将从书本上、网上学到的一些前端知识,在项目开发过程中理解和使用。因为许多知识在初步学习之后,只能停留在 Hello World 阶段,要深入理解和掌握某个技术,就需要在业务和实际项目中结合使用。这就需要多思考,不断地探索和尝试,慢慢地掌握要怎么将理论和实践进行结合。
从华为出来后,我加入了一个外包小公司做前端。那是一段比较艰苦的日子,但那段时间,每天都能学到特别多的知识,后台的几位大哥也给了我很多的指导,例如要掌握哪些工具、可以去哪些网站学。即使是下班后,也依然躲在上铺开着台灯,一直学到半夜。
小公司的问题很多,没有社保,没有福利,也不提供住宿和三餐,老板是暴发户类型的。因为工资实在少得可怜,转正的时候我提出需要涨点工资,然后被老板一顿“不知好歹、不懂感恩”批斗,最后不了了之。我知道这样下去也不是办法,于是请教了后台几位大哥,他们也支持我出去看看。我找好了一个工资稍微好些的工作,然后跟老板提离职。刚开始老板温和地劝说,后来发现我很坚决,他立马翻脸了,一边骂我狼心狗肺,一边威胁我说:“深圳就这么大,你以为你可以去哪?”说实话,那时候的我工作经验也不多,真的有被吓到。我跟下个公司的负责人说起这件事,他安慰我说不用管,都是吓唬小朋友的,对方还拍着胸脯说有事他来解决。在犹豫一段时间后,我还是离开了。新的公司是一个实体到互联网转型中的公司,可是刚去不久,身体却熬不住了,开始不间断地肚子疼、发烧、发冷。由于是刚换的工作,而且需要赶项目进度,也不好请假,就那样熬了两三周。直到有一天,连走路都成为了困扰,我才打车去医院检查。因为疼得厉害,我躺在医院过道边上的一个床上,吐得脑袋都不大清醒,来来往往的人都看着我,脸上各种疑惑、犹豫、欲言又止的表情,没有一个人问问我。然后,我收到了入院通知。至今我还清楚地记得那天,我跟公司的负责人说了这事,需要请几天假。对方在回了我一句“女生就是矫情”之后,不到十分钟,我就被移除出所有相关的微信群,然后被辞退了,甚至这几周工作的工资一丁点都没有给我。后面的一两个月,基本上都是各种打针吃药。烧终于退下来之后,医生给我安排了手术。那段时间身上全是针口,到后面护士都找不到可以扎针的地方了。手术后因为并发症,住了好几天的 ICU,我也深刻地记得当时为了降温,医生在我身边放满了冰块,我跟医生说好冷,医生让我忍忍。后来出院回家,体重竟然回到了初中的时候,瘦到睡觉的时候都会被自己的骨头磕着,然后开始了长达半年的恢复。
期间买了特别多的技术书,在家除了休息、低强度的锻炼,状态好点的时候就看书、写代码。身体恢复之后,我又回来了深圳。
要努力坚持自己的原则
工作常常不如意,但也请不要放弃。职场里竞争激烈,以前只出现在小说里、电视上的事情,都可能会出现在你身边,甚至发生在你身上。很多时候,可能并没有对错之分,大多数人都是为了混口饭吃。因此,你要有这样的心理准备,在碰到一些奇奇怪怪的事情的时候,不要陷入自我怀疑,不要丢失前进的勇气。即使再难,也不要轻言放弃。要努力提升自己的能力,才可以选择自己喜欢的工作。我遇到过一些合不来的领导,包括事情做完不让早下班的、下班后依然 24 小时不间断打扰的、不允许提出自己的想法的,等等。曾经非常地迷茫。在这种情况下,只能不断地提升自己,让自己有足够的竞争力,才可以有更多选择的机会。工作是双向选择的过程,我们不用觉得自己是弱势的一方,也不必觉得委屈求全。养成良好的工作习惯。首先,工作中的沉淀和思考是非常重要的。一定不要满足于仅仅把问题解决了,要更多地进行思考,尝试去把事情做得更好。同时,还需要把一些经验和想法沉淀下来,这些内容很多时候可以帮助到其他人以及未来的自己。其次,要做好时间管理。1.合理分配时间,比如将连续的时间段给到需要专注的任务(比如写代码),零碎的时间则可以处理一些对连续性要求不高的任务(比如测试、复盘、思考等)。
2.把业余时间利用起来,培养一些习惯爱好,或是做一些小的学习任务。
3.合理使用 Todo List,可以用优先级对需要做的事情进行备忘,每隔一段时间进行整理和调整。
4.优化自己的工作方式,比如解决重复性的工作、避免问题的再次出现,等等。
身体健康比任何事情都重要。如今的互联网行业里,加班熬夜甚至通宵的现象特别严重。很多人没日没夜地通宵熬夜、吃饭不定时、基本不运动。因为内卷太严重了,大家没有更多的精力去考虑健康这件事。有句老话叫“不见棺材不落泪”,互联网职场中猝死的案例频繁发生,有些甚至就在身边。或许我们会被触动一段时间,也注意饮食和运动了几次,最终还是恢复原本的生活节奏。很多人都心存侥幸地认为这些事情发生在自己身上的概率太低,因此也不怎么重视。毕竟我们的身体是 1,所有的财富、荣耀、名声都是后面的 0,只有 1 在的时候,这些 0 才会有意义。有意思的是,对于程序员来说,1 和 0 可以组成任意的内容、代表着整个世界。但如果说生命是 1,而其他事物是 0 的话,很多时候我们在做选择的时候总会忽视了已有的 1。自从经历了那次住院手术,生命和健康真正成为了我最重视的一道线。努力可以,奋斗也可以,但长期的加班熬夜通宵、无节制地消耗身体这样的行为则超越了我的底线。血的教训让我狠狠地体会了一把,什么事情对于我来说才是最重要的。
大公司还是小公司,应该如何抉择?
在互联网行业,大公司和小公司其实有着各自的优势和弊端。在小公司里,很多时候由于项目规模的限制,我们容易在一些技术深度方面到达瓶颈。但小公司也同样可以学到很多,相比于深度,倾向于技术广度,比如全栈开发等。除此之外,小公司有更多的机会管理团队,也有更多从零开始参与和设计项目的机会。在大公司里,我们可以接触到更多有技术深度的业务场景,也可以向很多牛人学习。不过,大公司里大家分工明确,很多时候开发仅仅能接触到自己负责的那部分功能,整体提升比较局限。除此之外,大公司里团队很多,每个团队的风格、氛围、工作内容都不一样,未必都能获得自己想要的东西。所以,在加入一个团队前,我们要尽可能多地去了解它,思考团队节奏、技术氛围、工作方式和内容等等,是否和自己的预期一样,是否真正适合自己。对于我自己而言,在做职业规划和重大抉择的时候,一般会考虑下面三个因素:
工作中是否有足够的技术挑战,可以让我学习到更多的东西。
团队氛围是否开放,可以接受大家发表和探讨不同的建议和想法。
- 此外,还会考虑工作强度,是否会经常加班甚至通宵(毕竟现在的环境下,健康地活着才是胜利)。
我很爱写文字,也很爱将自己的想法记录下来,这对我来说是一件很有趣的事情。而当我写得多了,慢慢地,我发现它给我带来了很多的好处,比如,提升了工作效率,弥补了记性差的短板,思考过程给我带来了很多收获,等等。我从 2016 年开始写作技术博客,到现在已经 5 年多了。后来我开源了《深入理解Vue.js实战》这本书,写作了一本《前端的进击》,并与另外两位小伙伴一起写作了《小程序开发原理与实战》这本书。对于程序员来说,开源的意义深远,这也是我当初开源《深入理解Vue.js实战》这本书的初衷;《前端的进击》这本书则是将我的一些工作经验和方法进行了分享,希望能帮助到一些职场上的小伙伴。在《小程序开发原理与实战》这本书中,我分享了很多小程序的原理和最佳实践,提供了很多避坑指南,希望开发者可以在开发的时候避开这些问题,也能在遇到问题的时候快速地定位问题。对我来说,写作带来的最大的收获大概是自身的知识沉淀,以及我与其他人分享的时候收到他们的反馈,我也同样能从其他人身上学到很多东西,这更加坚定了我坚持写作的想法。
给前端开发者的学习建议
如今前端领域的技术发展非常快,已经产生了各种分支,编写一个前端应用很多时候要涉及:代码编译和打包工具、前端框架、前端路由、组件设计、组件通信、状态管理等。从项目管理和工程化角度来说,还会涉及代码规范、开发流程、持续集成和持续部署等,涉及从开发到提交、合并、部署、发布、灰度、监控等各个流程。对于这些前端技术分支的相关知识点,很多时候我们通过学习可能只能停留在 HelloWorld 级别,要想更好地扩展自己的技术领域,实践是理解和收获知识最快捷的方式。一方面,我们可以围绕工作中涉及的技术进行深度的加强,工作其实是很有效的学习过程。另一方面,对于工作中涉及不到的内容,我们可以找到感兴趣的项目去进行研究,来拓展自己的广度,也可以参与到开源项目中学习和实践。作为前端开发,我们要提升自己的能力,就需要思考项目中存在的问题,是否可以更好地进行优化,比如:如何在发布过程及时发现并解决问题、页面的打开和加载速度是否可以优化、开发效率是否可以提升,等等。尽量多一些思考,多去借鉴一下业界比较成熟的解决方案。至于小程序开发,它也是前端开发的一部分。在掌握了小程序开发这个工具或者说生态之后,剩余的和其他的前端开发工作其实没有太大的差异。
我和另外两个小伙伴写的《小程序开发原理与实战》这本书,包括了从快速入门、到原理分析和最佳实践、再到上云较完整的内容,既适合初学者入门,也适合有一定经验的开发者阅读。开发者只要有前端开发的基础知识(比如HTML、CSS、JavaScript等)储备,便可以读懂和上手。
对于小程序初学者来说,可以跟着第一部分入门的讲解和实战案例,配合小程序的官方文档一起学习和实现;对于想搭建有后端和数据库能力的小伙伴,可以跟着第三部分小程序云开发来学习;对于常常需要开发和维护小程序的同学,可以重点阅读第二部分原理分析和最佳实践部分。相信大家都会收获满满!对于前端开发来说,红宝书《JavaScript高级程序设计》是肯定少不了刷很多遍的,每次阅读都能有新的收获。如果说红宝书是教科书,那么《JavaScript忍者秘籍》这本书可能就是练习册,它介绍了很多比较实用的 JavaScript 开发的最佳实践。《ES6标准入门》这本书也非常全面和详细地介绍了 ECMAScript6 新引入的语法特性,对于 ES6 语法的使用有很大的帮助。另外,我们在日常开发中还会涉及代码的设计,推荐《JavaScript设计模式与开发实践》,这本书介绍了基于 JavaScript 语言的常用设计模式,简单易懂又非常实用。