前端开发程序员如何分配公司工作和个人技能的提升

🌙
手机阅读
本文目录结构
axihe

重点:前端开发程序员如何分配公司工作和个人技能的提升

3个问题

下面是根据几个小伙伴给我发的一些问题,整理归类的;

  1. 公司的工作大部分都是处理业务逻辑,怎么提升代码能力
  2. 很多公司就三四个前端,甚至有的就1个前端,也没有比你更高级的同行帮你review代码,如何提升代码
  3. 忙的时候,公司崔进度,只能赶时间完成;空闲的时候,想去重构一些项目的时候,但是又不敢做!我们有哪些机会提高呢?
    • 1是没有精力做,2个线上项目历史原因不能改;
    • 改的好,没有功劳,万一改不好,又要被骂;

上面3个问题,我认为主要是表现;

真正的核心点是:如果在工作中解决问题并提升技能

https://www.zhihu.com/question/26961831

痛点一:平时都是写业务代码,如何提升代码能力

关于这个痛点,网上有很多人的观点是:无论工作多忙,每天都要抽2个小时出来看书,看技术文章,用来学习,这样每天都坚持2小时学习肯定会技术变好;

首先这个观点我不认为有什么错误,但是我认为:这个观点非常的不接地气,不能适合大多数人,可能很多实际工作中并不能2小时学习,如果一个建议,大多数人都用不了,可能就不是一个好办法;

比如今天项目比较忙,或者学习一半被打断;注意这种没有目的的学习,很容易分散精力,而且没有目标,学习的效率也很低!

下面是结合我自己的实际情况,一些认为有用的提升办法;可以参考参考!可以让你一边工作一边提升!

1.做之前先想好思路,然后再动手

不要着急写代码,拿到一个需求,先想想怎么去做;

如果需求有问题,或者需求有不明确的地方,找产品经理沟通下;

等你需求整理好了,实现的思路也想好了,然后再打开你的编辑器;

注意这时候打开编辑器,并不要立刻开始写代码,先按照刚才想的思路,把每一步的TODO都写好;

// 登录业务逻辑演示

// TODO 初始化
function init () {},

// TODO 用户输入过程中的处理逻辑
function userTyping () {},

// TODO 用户提交表单
function submitHandler () {},

// TODO 表单验证
function formValida () {},

// TODO 调取API发送给后台
function login () {},

// TODO 登录成功的逻辑
function loginSuccess () {}

然后再根据自己的写的TODO去填充;这样写出来的业务代码,因为是自己仔细考虑的情况下写的,不容易出BUG,而且方便后期维护;

一定不要上来就启动编辑器开始写代码,你一顿操作猛如虎,没有经过思考,可能写出来的代码并不是很好;

2.坚持重构自己每天写的代码

等业务代码写完以后,不要就去摸鱼了,如果你写完代码就摸鱼了,或者跑出去浪了,可能就没办法继续提升了;

做一个程序员,应该坚持重构自己每天写的代码;

(注意:如果是一个大项目,不是自己从最开始慢慢循序渐进写出来的,尽量不要去整体重构;而是从自己每天写的代码开始着手,慢慢的只重构自己写的代码;)

通过重构自己每天写的代码,会使你的项目更容易维护,这种重构无论开展业务还是提高自己都是很好的。

如果你自己不坚持重构,以后产品频繁迭代,你的代码越来越臃肿;可能有一天,产品经理增加的需求,你自己都抱着破罐子破摔的心理写代码了;那时候你的心态可能是”又不是不能用”,那就悲剧啦!!!这种就是恶性循环;

而且同事们又会感觉『你这个家伙怎么写的代码这么多BUG』,这时候你升职加薪的机会都渺茫了;

如果前期没有养成每天重构自己代码的习惯,后期很容易导致你自己都不敢重构自己代码了;

所以重构是一个循序渐进的过程,强者越来越强,弱者越来越弱!

如果你坚持重构,你写的项目会越来越稳健,你的技术思路和角度也会越来成熟;反之你很容易越来越完蛋,在一家公司坐的感觉产品经理是傻X,老改需求,做不下去就频繁跳槽;

我们静下心来想想:不经过频繁迭代出来的互联网产品能是一款好的产品么?所有产品迭代是很正常,所有公司都会遇到!而且互联网产品的优点就是可以快速迭代!

包括最典型的,等完全开发完再发布的windows系统,他发布后也是要不断优化和打补丁的;

如果你们公司的产品,写完以后就不管了,可能是赚快钱的套路,做的基本都是没啥前途的产品;

3.尽量多测试自己的代码或者写测试用例

测试自己的代码,不要直接丢给测试,或者抱着又不是不能用的心态;

我们在工作中,遇到产品经理的不合理需求,该提出来就要提出来;

但是只要是自己接手做的事情,都要努力做到最好;这是一个习惯问题

如果你是写页面的,没办法写测试用例,那就多测试下页面;

因为你写的代码,你自己最清楚;你多测试下,估计输入错,估计不正常的操作,看看有没有问题;

这样可以协助你写出稳健的代码;

4.可以写写注释

代码写的过程中,注意写注释;

如果代码写完以后,记得也多看下有没有什么注释需要补充的;

这样你以后回来维护的时候,可以快速理清楚思路;

利人利己的操作;

程序员有个臭毛病:

  • 讨厌接手没有注释的代码
  • 讨厌写代码的时候写注释

大家都是同行,没有必要相爱相杀啊!!!

5.总结记录下自己的代码片段

平时碰到一些比较常用的代码,或者容易复用的代码,抽出来整理记录下;

这些不单单是给别人看的,帮助自己的地方也非常多!

好记性不如烂笔头!等你遇到相同场景,直接翻出来复制粘贴,10秒钟就可以搞定,岂不是美滋滋;香不香?

小结

这些都是在写业务代码点点的积累过程;说起来很容易,做起来也不难,如果这么一直坚持下去,肯定会越来越好;

网上也有很多说写业务代码,技术很难提高这种言论;我认为这个观点不适合大多数程序员;即使你所在的公司,是给别人做官网的;你也能在写业务代码的同时提高技能;

市场上最少也应该90%的程序员,都是写业务代码的,没有几个公司会招一堆程序员来做技术研究;

而且,如果我们研究和总结出的技术不能解决实际生产过程的问题和痛点,也没有什么实际应用场景;那么这种技术就是垃圾技术,没有用的技术;

至于写业务代码能够让你有多少提升,大部分取决于你完成业务代码以后的时间;

如果你写完代码以后,像上面说的,重构自己的代码,测试自己的代码,写写注释,多总结记录代码片段;

可能你一天两天感觉不到好处,一周两周可能也感觉不到,要不了一年,你就很快变强了;

痛点二:公司没有人给review代码,如何提高

https://www.zhihu.com/question/65720941

很多公司就三四个前端,甚至有的就1个前端,也没同行帮你review代码,如何提升代码;

首先,如果你身边有经验丰富,有技术不错的人,你要自己主动的请他帮你review代码,大多数情况下,同事是没有义务给你review代码;

没有同事会天天主动热情,嘘寒问暖的帮助你,除非碰到了有传销性质的公司;我们程序员不会碰到的;

如果能有人帮你看代码,给你提意见,那么针对的意见,可能给你的帮助会很大!但是这需要你自己去主动;

如果没有人帮你浏览代码;我认为下面几点可以试着做;

1.读你现在使用技术的源码

很多人一直重复劳动!原因之一就是很少读源码!

公司中同事都是你忙我忙大家忙,好的技术文章非常少,适合你的好文章就更少了;

你有找技术文章的时间,不如读你现在使用技术的源码。读源码,真的能学到非常多有用的技术;

因为是你工作中使用的,所以你工作写代码,会逼格越来越高!

2.学会造轮子

我们工作中,不是要造那种jquery,vue,react的轮子;

很多人推荐造那些不切合实际的轮子,我觉得纯属扯淡;如果你造的轮子不能使用在生产环境,那就不是造轮子,那只是学习源码;

我们应该造能够用在工作中的轮子,最直接的就是从工作中使用的一些插件,工具,包等开始弄;

如果你知道该怎么造,可以开始做一些可复用的小工具;

比如平时我们判断数据类型,最简单的 typeof,精确点的就是 Object.prototype.toString.call(123)

我们可以做一个通用的判断

let _typeof = function (data) {
  try{
    let value = /\[object (\w+)\]/.exec(
        Object.prototype.toString.call(data)
    );
    return value[1].toLowerCase();
  }catch(e){
    throw `_typeof内部错误,${e}`
  }
}

使用的时候

_typeof(123)        //"number"
_typeof('123')      //"string"
_typeof(123n)       //"bigint"
_typeof(null)       //"null"
_typeof(undefined)  //"undefined"
_typeof({})         //"object"
_typeof([])         //"array"
_typeof(/123/)      //"regexp"

然后你把上面这个方法封在自己的工具类里;以后所有判断数据类型,都调用自己封的小工具使用;

这样慢慢就会越封越多,如果后面感觉维护困难,你就看看jquery,lodash等一些工具怎么维护的,慢慢的,那就自然而然提高了;

这样才是真实生产环境中造轮子的正确的方式;

3.学会使用外援

公司没人带你不要紧,你总该有机会使用互联网吧;

大神们都活跃在网上,就去找大神们的博客看,去stackoverflow上请教;

去Github,npm上搜项目,看看别人怎么写代码的,这样都会帮助你;

然后去拉勾,智联招聘翻高级岗位的招聘要求,然后根据它来学技能,这些都是外援的方式。

4.找准工作的侧重方向学习

很多程序员学习就好像小猴子下山一样,碰到一个比较火的技术,就买书、找视频学习一下,学了十天半个月就放下。

每一项技术都在学,每一项都是写写DEMO项目。看上去啥都会,其实啥都不深入;

做一名程序员来说,技术广度相对技术深度来说没有优势,中大型的公司里专人做专事,需要的是好的螺丝钉,你只需做好一名称职的螺丝钉就好了,项目老大指挥你往哪里打,那就往哪个方向发,这就够了;

所以技术深度好的螺丝钉更值钱,项目大方向等之类的,不是你关心的事情;

如果你只是想做一名好的程序员,只需打造好核心技术栈就行了;

那些学了以后,不能用于生产环境的学习,我感觉都是浪费精力的,除非你想转方向,以后做那个领域;

当然如果你不甘心做一个螺丝钉,还想做点别的方向,比如技术leader,比如产品经理,那还是推荐多方向看看的;

痛点三:公司业务忙,进度赶的厉害,如何提高

首先抛出一个观点;公司业务忙,赶业务也不要紧;但是你不能在那种做重复劳动的公司里

这类公司的特点是,你没有什么核心竞争力,很容易被替代,他们需要的是速度快,考核你也是一天能做多少个页面之类的;那种地方非常不推荐呆;

1.一定不要去外包公司,要去有自己产品的公司

至于为什么不要去外包公司;

核心就是:自己有产品的公司,会不断的打磨产品,产品慢慢迭代,员工写的代码是需要考虑维护的;

外包的活,基本都是不重要的,不核心的;外包公司外派员工到甲方做的很多是边边角角的事情;

很多还是一锤子买卖,做完后就不用管了;很少考虑你的代码后续维护;

2.如果工作内容是简单的重复劳动,并且一直催你效率加快,建议离职

比如你在公司就是简单的写写页面,然后让你一直写写写的,每天都是一堆页面等着你写;领导们也是催着或者教你每天怎么样能做更多的页面;

这种公司,钱不高,天天做些搬砖的活,这种公司你还不辞职,等着领口罩么?

3.合理评估时间,不要让自己被动

如果一个需求,你三个工作日可以完成,那么评估时间的时候,最少要报5个工作日;要多给自己留点后路;

还记得刚才说的,写完代码以后需要做的事情么?

那些都是需要时间的;这样你就有时间来做技术储备;

一定不要傻乎乎的,3天完成就报3天,如果有bug,3天完不成,领导也会感觉你这个人怎么这么不靠谱,说3天完成的,结果3天做成这个鸟样;

4.合理看待自己做的业务

经常看到一些情景:某些小伙伴因为掌握了某些技术,比如Nodejs,React等,比如看过react等一些潮流技术的源码,知道原理,就自封为高手。

有些小伙伴仰慕某个团队,原因是那个团队使用了某个非常牛X的技术。

这不能算不对,但是出发点有点问题;

哪怕你做一个看起来很小的业务需求,为了达到极致,所需要的技术和能力是非常综合。

那些技术大牛,他们肯定不会拿所掌握的技术去限制公司的产品需求,而是倾听需求,给出精益求精的方案。

真正让前端工程师技术变好的是项目的深度,而不是不停地做项目。

项目越多,在单个项目中投入的时间就越少,容易陷入肤浅。

任何一个有价值的项目,都可以一直深挖。深挖项目,深度思考还可以锻炼工程师的创造力。

所以前面说了几种公司直接推荐离职,我们在项目之间的空档期,要珍惜时间,深入思考,总结,这时候要猥琐发育,不要浪。


AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili 和抖音。

关注我: Github / 知乎

如果你加我的私人微信,麻烦写上您的 称呼,所在地区,职业,方便我备注,谢谢


本站的微信公众号

阿西河前端教程

Anbang

安邦的私人微信

微信号: yaolushan

Anbang

Bilibili(B站)

朱安邦

Anbang