首页 > 编程语言 > 你不是一个前端
2018
06-06

你不是一个前端

Mentor:“你不是一个前端”

我:"???"

Mentor:“你不要老想着自己是一个前端,你不是一个前端”

我:“可是把我招来不就是写前端的吗??”

Mentor:“你可以写前端,但是你不要限制自己只作为一个前端,不要把自己的眼光局限在前端。你应该从整个项目、从工程的角度blablablabla...”

我:(打断)“不,我就是一名前端,我特别喜欢前端,特别喜欢JS”

Mentor:“我靠,你不要老说......你说你自己是一名前端,作为你们Mentor,我就感觉很丢人”

  ——以上对话发生于我前往百度实习的第二个周,我与我的Mentor之间

PS: 新人入职百度后,通常会有一位Menter(导师)来帮助新人

  大四拿到了百度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表示:

  1. 我不想了解那么多的后端实现,你说这种接口调用方式会很大的影响后端性能,我改成你期望的格式就好
  2. 我不想了解那么多的项目配置,我只要按住流程走下去,最终跑起来一个可以提供数据的服务器就好了
  3. 我只想知道,你期望什么格式的数据,又返回什么格式的数据
  4. 我只是一个前端

  然后Mentor非常生气,说出了“你不是一个前端”这句令我十分震惊的话。

  我不是一个前端?

  为什么我不是一个前端?我明明是一个前端!我就是凭着对前端的一腔热血支撑着我一路走到了这里,我热爱前端,热爱互联网,热爱JS。

  或许在别人眼里前端很Low,P技术含量没有。

  但是作为热爱前端的我知道,前端有多么深邃、多么灵活、多么优雅、有多么多的可能。每一种“外人看来毫无作用的新技术”解决了前端多么痛的问题,每一代“频繁升级的ECMAScript”更新带来了多么棒的特性。

  “你说你自己是一名前端,作为你们Mentor,我就感觉很丢人”。

  我感觉这句话简直否定了我对前端倾注的所有感情,被彻底瞧不起了,我要是一名负责火箭发射的工程师对方绝不会这么说。

  于是我很生气,觉得对方不可理喻。

  我就是一名前端,我还打算将来加入TC39为我心爱的JS添砖加瓦呢。


  完成的导入的Task后,随着时间的推移,我又陆续接到其他的Task。

  在一个新开坑的项目中,我和负责后台开发的 DG同学 在接口设计上发生了一些分歧。我主张在“返回应用的会话列表的接口”中,返回 会话数据 的同时返回 应用信息,而他表示这样不好。双方僵持了一段时间,于是我和DG决定去找隔壁的两位高T(我的Mentor是其中之一)裁决下。

  我阐述了下为什么我希望会话列表接口里面带着应用的信息:

  • 在查看调试会话列表接口时更方便
  • 这样前端少请求了一个接口,展现数据会更快
  • 分开接口的意义不大,应用信息非常少,没必要再加一个接口,直接附带在会话列表接口中就好了
  • 虽然分开后2个接口各司其职,但是前端要分开处理,很麻烦

  听了的我解释和,Mentor和我说:

你发现了吗?你的所有出发点都是为了前端更方便。

确实,你是一名前端,所以你肯定希望前端用的爽。但是,正是因为你只是一名前端,你不了解后台的实现、构架,不知道怎样的设计对于后台是合适的。也不了解这个项目本身,所以也没办法站在一个工程的角度考虑这个问题。

这就是所谓的屁股决定脑袋,因为你只是一名前端,而不是一名工程师。

  我突然愣住了。

  我确实不知道后台的实现,后台用的什么ES完全不知道是什么。我也不知道自己做的这个项目是干什么的,只知道从UI那里拿到了一份设计稿,然后将它还原了出来。

  我突然想到了学校中,老师反复强调过“一辈子的码农”和“工程师”的区别,那时的我听了不以为然。

  而现在,我真真切切的感受到了二者的区别!!!

  意识到错误的我感觉超级尴尬,比较刚刚还神气十足头头是道来着。。。

  。。。小声承认了下自己的错误,然后赶紧转过头去假装写代码。

  内心OS:啊啊啊啊!~!! 好尴尬!!!不过很感谢,但是好尴尬!!或许应该好好谢下Mentor,但是好尴尬啊啊啊!!

  表情复杂的盯着屏幕上的 function 声明语句好长时间,嗯,橘红色的高亮挺好看。然后去找到了刚刚的DG同学讨论了下后台实现和构架,并对他的方案表示了肯定。。。


  现在,我终于明白了,“你不是一个前端”的含义。


  “教做人”的日常还在继续,前进的脚步也不会停止。

编程技巧