Mentor:“你不是一个前端”。
我:”???”。
Mentor:“你不要老想着自己是一个前端,你不是一个前端”。
我:“可是把我招来不就是写前端的吗??”
Mentor:“你可以写前端,但是你不要限制自己只作为一个前端,不要把自己的眼光局限在前端。你应该从整个项目、从工程的角度 blablablabla…”
我:(打断)“不,我就是一名前端,我特别喜欢前端,特别喜欢 JS”。
Mentor:“我靠,你不要老说……你说你自己是一名前端,作为你们 Mentor,我就感觉很丢人”。
——以上对话发生于我前往百度实习的第二个周,我与我的 Mentor 之间。
大四拿到了百度 Offer 后不久,便开始了在百度的实习。
热爱前端,热爱 JS,有自己偏执的审美,认为整个宇宙其实是一个用 JS 编写的程序——这当然是不可能的。不过热爱 JS 确实是这样。
随着前后端分离,前端变得可以只需要关注接口而不用管那该死的后台——鬼才想知道你数据表是怎么存的,我只想要我的 JSON 数据,然后完成酷炫的前端功能,让用户惊叹,让自己惊叹,然后让世界惊叹!
这就是我,一个华丽丽的前端~~
华丽丽的我接到了我的第一个 Task——为页面开发导入功能,我负责前端,我的 Mentor 负责后端。
前端改动比较小的,我三下五除二写完了界面与交互逻辑,一切非常顺利~~ 除了一开始想要把后台程序跑在我本地电脑上,用一个奇奇怪怪的 Docker Compose 时遇到了点麻烦。
不过无所谓,我并不想知道那东西是什么,也不想知道为什么想跑 Docker Compose 需要改那么多的参数。
总之,Docker Compose 现在愉快的跑在我的电脑上了,除了吃掉我一半内存,导致我的 WebStorm 有些卡外,没什么不好的。只要能拿到约定好的数据,我就可以让前端界面就正常工作。
前后端分离万岁~!
然后 Mentor 告诉我说接口请求要用 RESTful,这是什么?好像以前听说过。查了下资料——不就是用 HTTP 状态码来返回结果,顺便语义下请求的方法(GET、POST、PATCH、PUT、DELETE…)嘛,前端改下 Ajax 请求就好了。
然后 Mentor 说,我们要用 RESTful:
第一次创建数据要 POST,以后要用 PUT。OK
检测 HTTP 状态码来确定请求结果。OK
把 Token 写在 HTTP Header 里。OK
毕竟是工作嘛,只要项目要求,让我把数据放 Header 里我也没意见。
但是 Mentor 向我解释了这些,告诉我后端的实现逻辑和一些细节,为什么这样更好,为什么会有这些行为。我觉得好麻烦,难道我不是只做好前端工作就好了吗?
于是我向 Mentor 表示:
我不想了解那么多的后端实现,你说这种接口调用方式会很大的影响后端性能,我改成你期望的格式就好。
我不想了解那么多的项目配置,我只要按住流程走下去,最终跑起来一个可以提供数据的服务器就好了。
我只想知道,你期望什么格式的数据,又返回什么格式的数据。
我只是一个前端。
然后 Mentor 非常生气,说出了“你不是一个前端”这句令我十分震惊的话。
我不是一个前端?
为什么我不是一个前端?我明明是一个前端!我就是凭着对前端的一腔热血支撑着我一路走到了这里,我热爱前端,热爱互联网,热爱 JS。
或许在别人眼里前端很 Low,P 技术含量没有。
但是作为热爱前端的我知道,前端有多么深邃、多么灵活、多么优雅、有多么多的可能。每一种“外人看来毫无作用的新技术”解决了前端多么痛的问题,每一代“频繁升级的 ECMAScript”更新带来了多么棒的特性。
“你说你自己是一名前端,作为你们 Mentor,我就感觉很丢人”。
我感觉这句话简直否定了我对前端倾注的所有感情,被彻底瞧不起了,我要是一名负责火箭发射的工程师对方绝不会这么说。
于是我很生气,觉得对方不可理喻。
我就是一名前端,我还打算将来加入 TC39 为我心爱的 JS 添砖加瓦呢。
完成的导入的 Task 后,随着时间的推移,我又陆续接到其他的 Task。
在一个新开坑的项目中,我和负责后台开发的 DG 同学 在接口设计上发生了一些分歧。我主张在“返回应用的会话列表的接口”中,返回 会话数据 的同时返回 应用信息,而他表示这样不好。双方僵持了一段时间,于是我和 DG 决定去找隔壁的两位高 T(我的 Mentor 是其中之一)裁决下。
我阐述了下为什么我希望会话列表接口里面带着应用的信息:
在查看调试会话列表接口时更方便
这样前端少请求了一个接口,展现数据会更快
分开接口的意义不大,应用信息非常少,没必要再加一个接口,直接附带在会话列表接口中就好了
虽然分开后 2 个接口各司其职,但是前端要分开处理,很麻烦
听了我的解释,Mentor 和我说:
你发现了吗?你的所有出发点都是为了前端更方便。
确实,你是一名前端,所以你肯定希望前端用的爽。但是,正是因为你只是一名前端,你不了解后台的实现、构架,不知道怎样的设计对于后台是合适的。也不了解这个项目本身,所以也没办法站在一个工程的角度考虑这个问题。
这就是所谓的屁股决定脑袋,因为你只是一名前端,而不是一名工程师。
我突然愣住了。
我确实不知道后台的实现,后台用的什么 ES 完全不知道是什么。我也不知道自己做的这个项目是干什么的,只知道从 UI 那里拿到了一份设计稿,然后将它还原了出来。
我突然想到了学校中,老师反复强调过“一辈子的码农”和“工程师”的区别,那时的我听了不以为然。
而现在,我真真切切的感受到了二者的区别!!!
意识到错误的我感觉超级尴尬,比较刚刚还神气十足头头是道来着。小声承认了下自己的错误,然后赶紧转过头去假装写代码。
内心 OS:啊啊啊啊~~ 好尴尬!!!不过很感谢,但是好尴尬!!或许应该好好谢下 Mentor,但是好尴尬啊啊啊!!
表情复杂的盯着屏幕上的 function 声明语句好长时间,嗯,橘红色的高亮挺好看。然后去找到了刚刚的 DG 同学讨论了下后台实现和构架,并对他的方案表示了肯定。
现在,我终于明白了,“你不是一个前端”的含义。
“教做人”的日常还在继续,前进的脚步也不会停止。