简单的来说,初级程序员和高级程序员的差别是:

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

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

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

  • 初级工程师只管接需求,导致自己忙不过来,高级工程师会砍需求, 用自己得经验告诉产品这个需求不需要,告诉设计师这个交互没必要;

  • 初级工程师可能做完一个项目就完了,高级工程师可能会封装几个组件,整理一个脚手架出来。

还有很多很多,初级工程师和高级工程师差距不仅仅是代码质量上,而且其他能力上,解决问题的能力,抽象问题的能力!

今天有时间,想详细的跟大家谈谈我所遇到的、见到的厉害的程序员,同样是写业务代码,为什么会比初级程序员拿的工资高?

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

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

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

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

注意,这里是重写,不是重构,重构是对软件内部结构的一种调转,目的是不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。那么如果保证不改变软件可观察行为呢?就需要写测试用例,保证测试用例能跑通的情况下进行重新构造代码才是重构的第一步,没有测试用例的重构就是耍流氓。

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

我觉得有一个方法对于提高设计代码的能力非常有帮助,那就是采用 TDD(测试驱动开发)。

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

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

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

我只是说 TDD 可以提高设计代码的能力,并没有说我就特别提倡 TDD,说 TDD 很麻烦,难以实施的人就不要跟我讨论了。

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

我们要知道,技术是为业务服务的,没有业务谈技术的好坏都是瞎扯淡!

常常可以看到很多实习生,或者刚来的应届生会吐槽以前的老代码用的框架老,用的技术旧,然后就去改成新的,自己觉得牛逼的,然后没有多个环境测试,发上线就挂了,这种例子很多很多,别说我们公司,就连我们组都出现过好几次这样的情况了。

这种就是只考虑技术问题的,而没有去考虑为什么以前前人要这么写,前人没有用这些东西,难道仅仅是因为那个时候没有新东西,或者说认为前人比你差。

很可能就是他们考虑到了业务上的需求,比如要兼容 IE、或者比如考虑到了有很多用户用 iOS,Safari 不支持 webp ,或者比如考虑到很多用户是低端机,性能不好,不能用一些新特性等等问题。

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

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

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

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

而高级工程师基本上不会出现不能按时上线的情况,我思考了几点原因:

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

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

  3. 对需求的评估以及自己能力的评估更准确。

这里我想要表达,不是所有的需求都是有必要的,不要每个需求都去接。

那么如果来判断一个需求是否应该接呢?

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

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

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

对,这就是初级工程师的标准,能完成一个项目。

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

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

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

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

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

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

更多前端学习内容文章干货请关注我的知乎专栏(不断更新),以后有新文章会提醒您,下面的链接是我知乎文章的集合,我把所有重要的文章放在这个目录里面,供大家阅读,希望能对大家有用

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

然后我在知乎上看到了一个初级程序员经常犯的错误集锦,我觉得非常大家都可以看看,自己有没有这些毛病。

1 命名不规范

2 日志不规范

3 拒绝写接口和假数据

4 不写单元测试

5 盲目集成

6 逻辑不清

7 不做方案

8 不关注性能

9 害怕重构

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

11 不考虑未来需求的变化

12 遇到问题的时候不会试错

13 不会写伪代码

14 不做数据量的预估

15 提交代码不规范

16 不喜欢打Tag

17 不遵守发布流程

18 不知道Bug修复的优先级

19 总喜欢手动修改线上代码

20 不做数据备份

21 不做自测

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

23 不抽取公共代码

24 不认真听需求讲解

25 不看验收标准

26 不主动推进项目进度

27 遇到难题不主动反馈

总结

初级程序员主要是体现在目光短浅,缺乏思考,做完东西没有成果,不积极主动。

而高级程序员不仅仅是代码写得好,写得快,确实思考得更长远,做的东西更有用。

我列举我身边所遇到的高级程序员所做的事,我觉得更有说服力,不是空谈大道理,都是我从身边的大佬们身上学到的,希望能给刚入职场,或者感觉自己是个初级程序员的程序员们一些警惕。

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

编程工作第六个年头了,与大家分享一些学习方法,实战开发需要注意的细节。784-783-012 秋裙。从零基础开始怎么样学好前端。看看前辈们是如何在编程的世界里傲然前行!不停更新最新的教程和学习方法(web前端系统学习路线,详细的前端项目实战教程,PDF),有想学习web前端的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入。我们会一起结伴同行学习前端我们是认真的

高级前端工程师和低级前端工程师的区别相关推荐

  1. 高级程序员和低级程序员的区别

    低级程序员认为自己与高级程序员的区别, 主要是高级程序员任何功能都能编码实现, 编码速度快, 代码无 bug. 正如一惯的那样, 低级程序员之所以低级, 正是因为他们勉强能看到(或者根本看不到)事物的 ...

  2. 一统江湖的大前端React.js-从开发者到工程师

    <一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...

  3. php工程师和前端工程师,什么是web前端工程师?web前端工程师是干什么的

    很多小白都感觉web前端工程师很高大上,更不知道什么是web前端工程师?web前端工程师是干什么的,那么php中文网就为大家介绍一下web前端工程师.[推荐阅读:前端开发用什么工具] 一:什么是web ...

  4. 5 位阿里前端技术专家论:前端工程师的成长和发展

    前端夜话.活动邀请到了前端大咖 winter.百姓网技术顾问贺师俊(Hax).Swift 大神王巍(喵神).<CSS 世界>作者张鑫旭.阿里前端技术专家狼叔等 5 位前端大牛,聊聊前端工程 ...

  5. web设计师和前端设计师的互动—前端工程师应该具备的三种思维

    如果你是一个天才工程师(马上可以离开),可以独立完成一个很多事情,你可以是一个怪咖,因为我相信没有一个人不会不佩服你.但现实归现实,多数人都不是天才,而我们在职场上也不是单打独斗,我们需要团队合作,需 ...

  6. 前端开发工程师和美工 知识需求的区别

    摘要:很多公司甚至是多数以互联网网站为主要业务的公司都会把"美工"的概念搞混淆,通常这些公司都会把网页设计+网页制作的人员统称为"美工".而一家成熟的互联网公司 ...

  7. 写给后端开发工程师的H5前端开发知识

    一.引言 web发展到目前为止已经有将近30年的历史,在web兴起的早期,并没有前端这个概念.最初所有的开发工作都是由后端开发工程师完成,随着业务越来越复杂,工作量逐渐的增加,项目中的可视化部分和一部 ...

  8. python前端开发和后端开发工程师_一文看懂前端和后端开发

    作为一名开发者,你可能会想:2019 年最好的软件开发技术和编程语言会是什么?它们又是如何被应用在软件开发当中的?如果你在思考这个问题,那就来对地方了.这篇文章将对前端和后端开发技术做一个对比,先从基 ...

  9. 2023年中高级前端养成指南-需要关注和学习的13大类80余个前端技术栈与前端趋势-看这篇就够了系列

    今天是兔年开工的第一个星期一,我们又要投入到忙碌的工作了. 以下是imqdcn研究整理的2023年中高级前端养成指南,收藏起来,从开工第一天起,立下全新的计划和目标,愿你在兔年大展宏兔,扬眉兔气. 文 ...

最新文章

  1. 【AR】开始使用Vuforia开发iOS(2)
  2. mysql导出为lua配置表文件_利用lua生成一个导出数据库的bat脚本文件
  3. java注释是用什么标签_java的注释标签是什么?
  4. ExecuteScalar ExecuteReader ExecuteNonQuery 区别
  5. SQL2005对字符串进行MD5加密
  6. 权限组件(4):给动态菜单增加面包屑导航
  7. 2021年 第12届 蓝桥杯 第4次模拟赛真题详解及小结【Java版】
  8. 从开源视角分析,搞定边缘计算云原生方案选型
  9. 操作系统重装或还原后Domino 8 无法启动解决方法
  10. android的opencv调试,Android opencv 2.3.1 调试及应用(第一篇)
  11. java实例化对象的四种方式
  12. 禁止cmd dos 窗口被关闭
  13. mysql 无法启动 0xc000007b,windows安装mysql5.7教程 (MSVCR120.dll丢失。应用程序无法正常启动0xc000007b)...
  14. 完美预约爆满,实行瞬时限流……高温天,到美术馆、博物馆溜娃避暑成了杭州人的新选择
  15. 埃默里大学有计算机专业吗,埃默里大学计算机专业申请需要满足哪些条件?
  16. Android安装教程
  17. 一种获得深度睡眠的方法
  18. 如何获取土豆网等在线视频FLV地址
  19. 低学历可以学习IT技术吗?
  20. nrm : 无法加载文件 C:\Users\XXX\AppData\Roaming\npm\nrm.ps1,因为在此系统上禁止运行脚本

热门文章

  1. 使用Dev C++运行c语言代码时碰到Failed to executeC:\c++.cpp: Error 0 :操作成功完成
  2. 技术杂谈-再谈软硬SDN(2)
  3. app中我的页面头像及背景效果实现
  4. 如何快速掌握一门技术(代码,软件)
  5. https://www.cloudmidi.net/ableton-live-11-suite-v11-0-macos.html
  6. 为了探究妹纸对内衣的喜好,我爬了淘宝内衣店的数据!
  7. 「数据运营」理解DataOps运营
  8. CSS学习笔记——动画进阶(八音盒动画效果)
  9. .tar.lz压缩包解压
  10. Android和Java中的回调函数