我的灿烂前端人生

39,157 阅读11分钟

「时光不负,创作不停,本文正在参加2022年中总结征文大赛

本人是95前端菜鸟一枚,目前在广州打工混口饭吃。刚好换了工作,感觉生活节奏变得慢了下来,打了这么多年工总觉得想纪录些什么,怕以后自己老了忘记自己还有这么一些风流往事。书接上回。

公司太子

北京时间18点50分,离下班时间还有十分钟,本该是令人愉悦的时刻,我心里的雾霾又浓郁了一分。因为我在公司当太子当了大半年了。

能力出众

遥想今年年初,领着上家公司大礼包四处求职碰壁,踏破铁鞋寻寻觅觅,靠着投机取巧的八股文背诵,终于求得广州一家高大上小企业公司的岗位。入职不到一周立刻加入新的项目团队,做一个抽奖小程序,技术栈是typescript+taro,我之前没有深入开发过,十分的开心,又可以边工作边学习了。花费三个多月,与团队之间不断擦枪走火,这个项目也是勉强完成,开发完成之余,我有空也加入了测试大军,生怕自己第一个项目上线后因为自己的bug造成毁灭的影响毕竟以前经常发生。万万没想到,这个项目最终没有落地,老板总结就是我们做的打不过别人竞品,没啥创新,让团队去搞商城小程序去了。我万分失落惊喜,心里想着这样岂不是等于我做了三个月的项目稳定在线上运行,没有bug,不会被用户投诉,也不会被影响绩效,安稳白嫖三个月薪资?美滋滋!。

度过三个月的试用期,因为项目线上无bug,能力出众,我也如愿以偿拿下转正。

虚空需求

完成了上一任务,接下来leader给我分配了一个大project,重构以前管理后台的权限。这波重构任务,是leader直接文字需求下达指令了,我有点头皮发麻,好几年没遇到这种需求了,真的是梦回S1赛季,本来和我合作的小伙伴说他要做个原型出来,结果因为分配任务我负责管理后台前端,他负责管理后台nodejs的代码,他也就没有做出来,让原型图随风而去,跟我说了句一把梭。我也想一把梭,但我发现leader的需求十分灵性,加之我对之前的业务也不熟悉,想着还是花点时间加班把原型图做一下吧。

我战战兢兢的把原型图发到群里,leader已读并回了没啥问题了,可以开工。我悬着的心放了下来,撸起袖子大胆干。说实话,我心里其实很慌的,首先对React+Typescript不熟悉,且这套管理后台十分深奥,用的是自研的核心框架,各种typescript abstract抽象类,复杂的类型泛型,对我这个半吊子前端还是比较吃力的。但好在我是拷贝忍者,写业务代码先找下之前代码是怎么写的,CCCV,改个英文单词,就是我的杰作

TX leader真的很严格

我的leader是腾讯大厂出来的,我也是打心底里对他有一丝敬畏,毕竟大厂大佬恐怖如斯,技术水平肯定不是我这种切图仔比拟的。

任务花费了三周多一点,包含联调自测,自测完后就提个MQ上去了,信心十足。万万没想到,leaderCode Review对着我的杰作一顿输出,大概有二十几个修改建议,我都有仔细去看,发现很多都是代码规范,代码优化,leader都给了一定的建议。说实话,一开始我的心里多多少少有些芥蒂,但是谁让别人是领导呢?开个玩笑。但是leader指出来的问题的确是不容忽视的,程序员就是要有更好的追求,其实有人把问题指出来,才是对我最大的帮助,我也是花了不少时间去更改这些问题。下面就放一些bad code出来献丑。

  • !与!!! 01gt.png

因为当时习惯取真值使用!!,取真值的反值便不假思索地使用了!!!,百度了一下,好像!!!!作用的确是一样的,有点画蛇添足味道。

  • 起名问题 02goon.png

leader真的很注重起名,起名一定要优雅,这里我原逻辑是判断树是否有子节点继续递归,后面我将goon改为hasChildren了。

  • 复制代码导致问题 03async.png

这个的确是CCCV导致的错误,本来是同步的setState改变弹窗状态控制显示隐藏的函数,用async变成异步函数了。CCCV一不留神真的很容易造成代码的不规范或者bug但是我下次还敢

  • 函数分组问题 04together.png

因为我经常将控制弹窗的两个函数隔开了好几个函数,leader觉得这样实在不优雅,提了这点建议,我觉得确实如此,改完后代码阅读舒服很多,且关联函数在附近的确能够在排查问题时候更快定位问题。

  • 魔法数字 05magic.png

魔法数字。说实话有点难受,在三年前写代码的我使用特殊数字时,还会认认真真在头部定义变量写好注释,但是经过了两年多无拘无束的放任和马不停蹄的迭代,就算这次项目给的时间十分充足,这种良好的代码规范早已在心中抹去,认为代码和人只有一个能跑就行。没有那种强力的自我约束,对优秀代码的追求,这也恰恰证明我的确上不去更好的舞台。

  • 编码习惯 06undefined.png

太习惯与三元运算符了,发现自己编程习惯只在传参中使用||运算多一点。

设计权限组件

leader要求: 前端定义一个组件,如<PageAction action='OrderList/Delete' type={Show}>{<MyButton />}</PageAction > 这里<MyButton />是正常业务组件,这里理想状态是如果用户没有'OrderList/Delete'的权限<MyButton />最不会显示,还可以再加一个Click,没权限也会显示,但无法点击或点击后提示无权限

// 例子主要针对点击处理,有点击权限则可以点击,无点击权限则点击弹出无权限提示

// before
return permission ? children : <div class='mask' onClick={() => message.error('无权限'); }>{children}</div>;

之前一直想不明白,传进来的组件是在children里面,我如何去改变组件的点击函数,想来想去想不懂,脑门一热直接在组件上加一层蒙层,通过蒙层阻碍组件点击,当时设计完出来我还挺高兴,leader也直呼天才,送了我两个字————重做

因为我技术能力确实平庸,只能请教我的良师百度,不断去寻找children是否有什么方法或钩子处理事件,功夫不负有心人,果真被我找到了。下面就是修改后的方法

// after
return permission ? children : React.Children.map(children, child => React.cloneElement(child as React.ReactElement, { onClick: () => { message.error('无权限'); } }));

ps:leader也勉为其难的接受这个方法,可能他不知道有什么更好的方法。如果观众大佬们知道,可以提下意见,不胜感激。

设计组织架构图

07rebuild.png

先让大伙看看原来的功能图吧,之后我们开了一个会议,这里要重做。

08oldtree.png

我心想我发原型图出来的时候,大佬您可是没有半个不字,怎么codereview直接改了一个方向了啊?

不过,毕竟他是我的leader,我的生死全由他掌控,我也不敢多言,上网找了一个npm库react-organizational-chart。react的社区就是强~下面是更改后的视图

09new.png

不得不说,的确是更饱满更清晰直观了一些,leader还是很有远见的怕他也上掘金,吹了再说

这个项目陆陆续续做了三个月了,因为leader平时也很忙,两个城市飞,导致这个项目的进度也进展缓慢,而我就在空闲时间上上掘金学习技术,刷刷leetcode。

来了大半年,我深刻明白我对公司的建设为0,所做项目为公司带来0收入,就是我的价值完全没有体现,公司把我当太子养了大半年,我非常感谢公司。然后每天都会浏览boss直聘,深怕下午就被拉进小黑屋,在这个大环境下,我也时刻准备着,毕竟也有前车之鉴,我明白我只是个平庸的程序员,只能尽力做好自己的本分,随时做好最坏的打算,当真正的打击来临之时,我也不会手忙脚乱。

灿烂?摆烂!

最近IT的HRBP要我一个新入职的去做一场技术分享,我在这里呆了大半年,没有等来其他前端大佬的分享,竟然是要我亲自上阵,小丑竟是我自己

空虚寂寞冷

回想了一下这六个月,其实自己的水平真的没有半点进步,我想不到有什么可以拿来分享的。而且从入职以来,我在这个公司说的话可能没有超过100句,其实有时我也纳闷,我印象中自己不是一个这么闷的一个人,在上家公司我吹*技术游走于天地之间,能很好的融入团队,并能展开身心为其奋斗前期战神,后期老油条。但是来了新公司之后,我只会干完手头上的活,也没有跟其他同事聊聊天,不过我附近的同事也极少聊天,感觉稍微有点死气沉沉。

以前年轻的时候,看到一些新入职的同事,闷葫芦一个,找他搭话或者说骚话,他都没啥兴趣,现在的我,好像成为了自己以前眼中的怪人。我苦思久已,只能得出几个结论,第一点可能是我以前投入太多,经历过分离,不想再投入更多的感情,投入的越深,离开时就越痛1000-7=? 痛,太痛了。第二点是因为现在的大环境,让我精神焦虑,我深怕我和某位同事今天刚去饭堂吃个饭,明天人就没了。想看我之前为啥被裁,可以看我往期文章

不过,我觉得出来工作,重点是挣钱,以这个为核心,其他一切都是空谈。而且,解决我的聊天需求还有一大神器,不是陌陌,而是网易狼人杀APP。自从入职新公司以来,每天下班回到家根本不想学习,不想运动,只想躺着,然后冲进大师场厮杀,里面个个都是人才,说话又好听,我喜欢这个游戏,因为它能锻炼提高我的骗人能力当然是表达能力啦!而且它还夹杂着些许人性的味道,人性的魅力也让我欲罢不能。网易打钱。所以要我分享,我真不知道分享什么,难道分享如何悍跳吃警徽,狼查杀狼打板子做高狼同伴身份?

保持平常心

最终leader让我去分享一下这个重构项目,我想了一下也可以,其实它不是一次分享,可以把它当做一次项目复盘,把自己的问题抛出来给到大家欣赏,虽然有点丢人,但是赚钱嘛,不寒碜。而且自己的技术也拉胯,可以让自己加深这些问题的印象,对自己成长的路也是有极大帮助的。

不止是大环境,最近社会也出现了许多光怪陆离的事情,心态也有些许变化,我不再绞尽脑汁去想着如何跳槽获得高薪,我只想取悦自己,做自己认为让自己开心而正确的事情,心累了就去外面走走,馋了就去吃点美食,觉得知识匮乏了就化身小厂做题家刷刷leetcode,看看别人的源码见解虽然多数都看不懂。偶尔什么都想学,什么都学不进去的时候,也会焦虑,解决焦虑的办法,我常常是......奖励自己

当下所面临的的困难、焦虑,都会被时间而抚平,我作为一个平庸程序员,面对每天新开始的人生,我只能对自己说一句,啊,又是新的一天

pinmin.png