首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

可以让你从年薪5w跃升到年薪50w的技巧!

初级工程师和高级工程师差距其实不仅仅是代码质量上,更多是在解决问题的能力,抽象问题的能力上。

今天详细的跟大家谈谈,同样是写业务代码,高级程序员的价值高在哪里?

初级多在写代码,高级多在设计代码

一般人可能拿到需求,就开始写代码了,写着写着由于页面功能越来越多,感觉代码越来越复杂,自己都会觉得难以维护了。

我拿我自己举个例子,之前有一次我写完一个页面之后,然后给另外一个同事(可以理解为高级程序员)让他帮我 Review 代码,看到我的代码之后就觉得这个写得不对呀,怎么会这么去设计呢?

然后他给我理了下整个页面应该如何去设计,一个页面分为哪些块,有哪些事件,每个事件应该 dispatch 哪些 action,然后整个模块有哪些数据放在store里,哪些模块放在state里,当时听他理完之后,感觉自己写的代码真的很垃圾,然后花了两天时间把上周写的代码重写了一边。

Q:那么如何提高设计代码的能力呢?

A:采用 TDD(测试驱动开发)对于提高设计代码的能力非常有帮助。

TDD 的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。

为什么 TDD 会提高设计代码的能力呢?可以看到 TDD 的原理是要在写代码之前就要写测试用例,在写测试用例的时候你必然得去思考你的每个函数,每个模块,每个组件应该如何去设计才能使得易于测试,往往易于测试的代码都比较好维护。

这就可以达到在写代码之前先去设计代码,然后才写代码,也就是先思考,后行动。

初级多在考虑技术问题,高级还要思考业务上的需求

要知道,技术是为业务服务。

常常可以看到很多实习生,或应届生会吐槽以前的老代码用的框架老,用的技术旧,然后就去改成新的,最后没有多个环境测试,发上线就挂了。

这种就是只考虑技术问题的,而没有去考虑为什么前人要这么写,前人没有用这些东西,很可能就是他们考虑到了业务上的需求,比如要兼容 IE、或者比如考虑到了有很多用户用 iOS,Safari不支持webp,或者比如考虑到很多用户是低端机,性能不好,不能用一些新特性等等问题。

对于客户来说,他根本不管你用什么新技术,新特性,也许你用了新特性确实让代码更简洁了,但是,发到线上挂了,那么你写的东西连最基础的稳定性都保证不了,更别说流畅性,高并发了。

初级工程师只管接需求,高级工程师会砍需求

经常看到很多初级工程师就是,不管产品、运营甚至后端提出一些需求,他也很友好,只要是需求,他都接,然后整天忙忙碌碌,还经常加班,但是实际上,很多需求做了没有什么价值,也许还有些是重复工作,还把自己搞得很辛苦。

还有一种情况是有一个产品需求来了,然后一顿需求讨论之后,产品给出一个期限,初级工程师满打满算,可能能完成,然后就说能行,结果要么对自己能力估算错误,要么很多突发情况,然后不能按时上线。

而高级工程师基本上不会出现不能按时上线的情况,因为对需求的评估以及自己能力的评估更准确。总结下来有以下几点原因:

会给自己留 buffer,来避免突发情况导致时间的耽搁。

在需求分析的时候会思考每个需求是否有必要,如果有些需求觉得没必要,会和产品讨论,拿出充分的理由将需求砍掉。如果都有必要,然后时间又不太够,会去和产品谈是否能使交互简单一下,一期先出个什么样子,下一期再做完整一点。

那么如果来判断一个需求是否应该接呢?主要是去思考他背后的价值,为什么要做这个东西,做了能达到什么样的效果,如果产品说不出来价值,或者说产生的价值与你花费的时间不匹配,那么这个需求就是有待商讨的。

初级多在解决一个问题,高级多在解决一类问题

很多初级工程师可能昨晚一个项目就完了,还觉得很OK呀,然后也把在项目中的问题一个一个的解决了,按时按量的完成了任务。对,这就是初级工程师的标准,能完成一个项目。

那么对于高级工程师除了完成项目还会做什么呢?

也许会封装几个公用组件发到npm上大家都可以用。

也许会整理一个脚手架出来大家用,比如以前公司没有用 TS,那么用 TS 写完项目之后,踩了很多坑,你就可以整理出一个脚手架,然后把踩得坑记录下来,方便后面想用 TS 的人用。

也许发现前端工程师还原UI搞是一件枯燥无味,而且没有技术含量的事儿,我司有个大佬就写了一个 UI2Code 的工具,可以将 Sketch 文件转化为 html 代码。

也许高级工程师发现一上线一个功能,小程序和 H5 都要写一套一模一样的,然后我司大佬就写了一个可以将 vue 代码转换为小程序的框架,一套 vue 代码,h5 和小程序都能用。

这些都是我身边的例子,可以看到高级工程师经常解决的不是一个问题,而是解决一类通用的问题,然后给出解决方案,并且得以实施,从来不会认为把项目做完了就完了,没有一点产出,也许你做这个项目是对自己太大的帮助,成长的。

初级程序员经常犯的错误集锦

命名不规范

日志不规范

拒绝写接口和假数据

不写单元测试

逻辑不清

不做方案

不关注性能

害怕重构

做出来就好,不考虑优雅的方案

不考虑未来需求的变化

遇到问题的时候不会试错

不会写伪代码

不做数据量的预估

提交代码不规范

不喜欢打Tag

不遵守发布流程

不知道Bug修复的优先级

总喜欢手动修改线上代码

不做数据备份

不做自测

不尽力模仿真实数据,测试数据很随意

不抽取公共代码

不认真听需求讲解

不看验收标准

不主动推进项目进度

遇到难题不主动反馈

当然,上面所说的高级工程师所拥有的优点和初级工程师的缺点,都不是所有高级工程师都会有所有的这些优点,也不是所有的初级工程师都具有这些缺点,这是没办法进行定量的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191204A0NHQB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券