如何辨别一个程序员水平的高低?
前言
前两天,在知乎上看到如下一个提问:《如何辨别一个程序员水平的高低?》
↓↓↓
今天我们就这个话题,一起来做个讨论。
首先大家可以先短暂思考一下,程序员的水平高和低可以怎么辨别?高水平的程序员长什么样子,低水平的程序员又长什么样子?
我自己从不到20人的互联网小公司开始干起,经过自己的努力,最终成功进入国内一线互联网公司,期间看到过太多水平低和水平高的程序员了。
这里总结了如下四点事实标准供你参考:
一、项目落地能力
这一点我认为,是程序员最基本的能力,什么意思?
如果领导安排你一个完整需求,从详细设计到功能开发再到项目上线,你都能自己一人主导和搞定,无须他人辅助你。(这里强调一点,代码质量一定需要重点保证哦,不能上线后三天两头出BUG,要让别人给你擦XX)
做到这一点,我认为最多只能算是一个合格的程序员。如果连这一点都做不到,那程序员的水平是真的有点差的。
二、分析问题,解决问题的能力
对于线上发生的一系列bug,特别是一些性能问题(比如CPU100%、内存溢出、接口响应慢),有些程序员第一时间能做到先快速止血(避免问题再度升级、扩散) ,然后快速分析、定位问题,找到引发问题的本质、根因。
有些程序员遇到问题,即不晓得第一优先级快速止血,也不知道具体该怎么样快速止血。
找问题花了老半天,都不知道问题出在哪,排查了几个小时,一点方向都没有,甚至有可能方向都是错的,离问题真相越来越远。
经过上述两个反差,你也能体会出高水平程序员和低水平程序员的差距了吧。
三、具备抽象思维的能力
关于这个能力,是真有点“抽象”的。 (一般技术专家或架构师需要具备)
比如今天要做京东这样一个电商产品。不用我说,你也知道,其功能模块之多、复杂性之高。
那怎么把这么复杂的产品,在做之前,经过一定程度的抽象,让人一眼就知道且明白,这东西用来干嘛,有哪些模块组成,整体架构如何。
比如通过绘画如下的种种架构图,经过抽象,我们就能知道其具体的功能模块组成,分层架构了。
业务模块抽象
应用分层抽象
架构实例抽象
上述,只是想让大家对能抽象思维有点笼统的认识。
不管做任何产品,能把复杂的东西,抽象成简单的东西,让别人看了后一目了然:这个产品长什么样子,有哪些功能模块构成,技术架构怎么落地,是非常了不起的能力。
四、从0-1创造一个产品的能力
这个能力指的是从零到一构建一个现象级产品的能力。(一般是P9及以上能力要求)
比如拼多多这样的产品,能从淘宝、京东的夹缝中脱引而出,直至今日的规模。
阿里的阿里云,在那个年代,大多数人普遍不看好的情况下,王坚的个人能力与马云的力排众议的坚持,才有今天全球排名前三的云计算公司。
如今如火如荼的chartGpt这样的产品;腾讯的QQ、微信;字节的抖音等等这种受欢迎的产品。
能把这些东西的需求挖掘出来,然后带队从设计到构建,最终成功落地,拥有这样的能力,是非常了不起的。
拥有这样水平的程序员,其能力有多高,就不用我说了吧
本文完~