无意中搜到的书,本身就在做前端的我,看到了Web 栈工程师和作者是腾讯大佬的关键字眼,啪的一下就点进去了。看完之后也确实学到了一些东西,尤其是未来——中短期——的职业规划方面的。
作者相关
作者,余果,的博客地址:https://yuguo.us/,不过最后更新的时间已经是一年前(2020-02-06)了,并且在下面特别标注之后都会转移到公众号上继续发表:
我写字的地方迁移到公众号啦~欢迎关注我的公众号:余果专栏
可能博客已经被放置了。
目前了解的是,作者 2010 年毕业于,2010-2019 在腾讯 ISUX,负责过 QQ 音乐、QQ 空间、腾讯微云的产品设计。2019 年后加入「房极客」,担任产品设计总监,再后面就没有了。
本书写于 2015 年,即作者升职为 UI 开发组 leader 后一年,个人感觉对处于 1-5 年期间的初中级开发都有不小的启发。
内容简介
这是一本比较偏向杂谈类的工具书,前半部分更偏向杂谈类,如全栈工程师简述,个人发展方向,自身定位目标等。后半段更偏向工具书,浅谈了如 HTTP、缓存、版本控制、管理包之类的技术上的点。具体内容难以一笔代之,不妨去看一下这本书的目录,以此获得更加明确的定义,又或是可以搜索一下 ”Web 全栈工程师的自我修养“ 加上 “笔记” 作为关键字,也有很多的内容提要和浓缩。我想更多地将内容放在自己的感悟方面,故此书的细节在此就不一一赘述。
感悟
在谈及感悟之前,我先简单的提一下自己现在的背景:
- 本科计算机科学
- 最初的一年在一家小公司搬了一年砖,做了 CRUD,也写了 H5,感觉都写了一些,也么都没学好。
- 跳到了现在的公司,到目前为止可以说是专写 React 了,第一个项目已经上线交给了维护,目前在做第二个项目。
在看最近招前端的要求上,除了基础的 HTML, CSS, JavaScript, 三大框架之一外,或多或少的都会带上会一门后端语言,比较多的有列 Python, Java,其他的 Ruby 和 Node 也经常会看到。所以觉得自己未来的职业发展,如果还在技术上走,应该还是会往全栈方面发展。
如何成为全栈工程师
书中提到的坑,我正好踩过了,就比如 初学者贪图大而全,反而样样都不精。最初的的一年工作经验就是如此,因为规模较小,前端后端都有在做,但是为了完成业务需求,后端大多都是 CV 前辈写好的模块,对于控制器、注解都没有深入的了解,遇到问题或是百度或是 Stack Overflow,最后解决不了,再去找前辈。很多时候连知其然都没有做到,就更别说知其所以然了。
前端方面也基本以写 HTML 为主,嵌套一些 JSP 函数。做了一段不算短的时间后,发现每天重复劳动太多,自己没有获得足够的成长,再加上公司运营不是非常好,最终选择了跳槽。
目前也是处在书中说道的一专多长 的阶段。以前端 React 为主,最基础的功能方面,如 React-Router, Redux 是一个必须要用的,目前还处在知其然的状态;对于模块组件化,因为踩过坑摔得非常惨,目前也是有了比较强的意识,处在一个知其所以然的过程阶段上。目前的计划就是快速的过一遍基础:H5C3JS,再将 Node 上手,从而完成向全栈工程师开发的转变。
在这个大前提之下,也要进行思维的转变。
这也是书中提到的解决问题的方面。
目前与我最为相关的三个点是:
关注商业目标
这一点应当说非常简单明了了,之前都是以完成项目为目的,至于为什么做这个项目,这个项目的意义是什么,大多都不甚了解。如果想要完成从搬砖到画蓝图的转变,更多地了解”Why”是不可避免的。
关注用户体验
反思自己,之前也因为觉得某些功能看起来非常的酷炫,所以就加到了 UI 库中。至于用户具体需要不需要,新加入的功能和项目其他的组件嵌入的是不是和谐,甚至是跨端的效果都没有进行细致的了解。
我自己都不是我开发的产品的用户,我怎么会知道用户体验感如何呢?
项目工程化
这个还是要从节能提效上思考,也节省自己的时间,也节省项目开发的时间。
这一点也是还要继续了解的方面,最基础的
eslint
是已经被大佬设置好了,至于更加抽象方面的,例如说流程,如:Agile
目前项目走的是
Agile
,但是总觉得哪里不对,或许是我还没有更加彻底的了解它。代码规范
并没有这种东西,我自己刚开始的时候使用了
prettier
插件,但是后面发现别人的代码没有什么风格规范,每一次ctrl+alt+f
都会改动几乎整个文件导致对方直接 revoke 了 pull request,搞得我现在也不太敢用了。举个例子,以下的组件看起来我就很想
ctrl+alt+f
:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15render() {
return(
<div className="test">
<SomeComponent abc="abc",
efg="efg"
>
{variable ? <div className="test2">
{someList.map((var, index) => {
// logics here
})}
</div>
}
</div>
)
}这种缩进本身就造成了非常大的困扰,光看
efg
下面的>
,很难第一时间就判断出来这属于哪个标签。其次,return
函数里面充满了各种各样的三元表达,也没有备注,也没有正确的缩进,这对理解整个return
的逻辑也造成非常大的干扰。设立统一的代码规范,并且所有组员都去遵守这个代码规范,对长期的开发、维护都是大有助力的一件事情。
版本控制,虽然用了
git
,我觉得我们没有用对git
。Code Review
,聊胜于无,项目里面几乎没有,这也导致我在看别人代码的时候非常吃力,毕竟没有遵从什么规范。UAT 环境,有的,但是我对部署更新完全插不上手,这个我 TL 都捏在手里,也是我一定要补足的地方。
技术方面的提升
更多的关注更高层面的目标,并不代表着技术方面就能丢了。毕竟这个行业更新换代太快了,我前年刚开始使用React
的时候,当时还是以class based component
为主,去年就已经开始替换成hooks
,仿佛不会hooks
就不会React
。去年十月份v17
也终于推了出来,万幸的是v17
并没有什么主要更新,这也让我喘了一口气。
只是,技术方面的追求不能盲目,换言之,还是需要先做到一专多长 ,再触类旁通。
不过有两个比较急于提上日程的方面还是要记一下的:
- webpack
- babel
一个是打包器,一个是转译器,这两个不会的话,永远只能CRA
,而没有办法对打包后的东西进行优化。