前段时间我们公司老板招了一个26岁,但已经有7年工作的程序员,当时这个程序员分到了我们组,我又是项目组长,但是我对他的能力比较怀疑,便准备在接下来的工作中看看他到底有多少能力。经过一段时间的相处,他的能力我大概已经摸清楚了,我大概给了一个定论,他的工作能力大约只能匹配我们公司一个工作3年左右的程序员的能力,且能力还不如这个3年工作经验的程序员。

打开网易新闻 查看精彩图片

先说下这个号称已经有7年工作经验的程序员的履历。

工作经验介绍

17岁参加了计算机培训,19岁开始上班,7年时间一直在一家公司,从普通研发一直干到研发经理。培训期间参加了成人高考,考了个成人大专,工作后又考了个专升本,现在还没毕业。

因为7年时间一直在一家公司,所以我觉得他最后这个研发经理的职位多少有点虚,可能就是职场中常见的那种劣币驱逐良币的状况,也就是公司老人都走差不多了,最后就剩他一个老人了,所以公司才给他当了研发经理,并且,在离职之前,他这个研发经理估计也没当多久。

如果一个程序员在毕业后就一直在一家公司的话,那么他的工作经验虽然多,但是技术层次会非常窄,这也是我开始怀疑他能力的原因。

能力与工作时间不匹配

我们公司项目对于普通程序员的要求是比较低的,基本上只需要会一些常用通讯技术,比如说Socket、WebSocket、TCPIP等等,另外还需要掌握一些GDI+绘图的逻辑,其他的基本上都是一些基础性的工作。

但是,在跟他接触一段时间以后,我发现他对于绘图这块的逻辑掌握得并不清楚。我们公司是做工控软件的,对于数据库并不需要多么高级的技术,但是,我发现他Redis不会用、Sqlite也不会用,除了SqlServer,连MySQL据说都是第一次使用。好在SqlServer和MySQL的代码实现方式以及SQL语句的编写并无太大差别,网上查查就能查出来,因此还算能接受。但是,像一些缓存、本地配置信息,有时候我们会用到Redis和Sqlite,不会的话说不过去。

但我以为只是他之前没用过,指导了他一段时间以后,我就直接扔了个我之前写的库给他,他很快上手了。

后面,因为我们项目组比较忙,我又不能让他立刻加入现有项目中去,于是公司就把他临时抽调到了其他项目组,由另一位组长带着一起做其他的新项目。

中间,他还问了我很多问题,我觉得无伤大雅,就给他讲解了很多次。此时,我已经不再去纠结他能力问题了,我的想法是既然大家已经是同事了,不管他的能力咋样,也就这样了。

但是,过了几天,抽调他的项目组长跟我说,他看了这个程序员写的代码,觉得这个程序员写的代码很乱,而且感觉和他应该有的水平对不上。

此时,我还替他说话,说这个程序员之前7年都在一家公司,技术比较窄情有可原,让那个项目组长再观察几天。那个项目组长也很无奈,说只能先这样。

又过了几天,那个项目组长又跟我说,他有点受不了了,因为他发现这个程序员连线程都不会用!这下可能就有问题了!

因为我们公司是做工控的,线程用不好的话,有可能就会导致硬件传过来数据无法及时得到处理,或者卡线程的情况,比如相机拍照后,要对拍照后的图片进行分析,对于数据及时性以及数据处理效率要求是比较高的,如果不会用线程,那么意味着只能单线程处理数据,这肯定是不行的。

线程这东西,说简单也简单,说难可能很多人需要很长一段时间才能理解,因此,那个项目组长现在考虑,考虑到这个程序员身上那么多槽点,还能不能用值得考量,如果在接下来的一小段时间内发现更大的问题,可能这个人就不能用了!

结合我们两个项目组长的认定,基本上可以认为这个程序员的能力只能看齐一个三年左右程序员的能力,但很显然,他的能力相比我们公司另外一个三年工作经验的程序员,差得有点远。

最后,他的能力窄到什么程度?相信很多人也想知道。

实际能力

我们公司大部分项目都是C/S项目,技术栈是C#/Winform和C++/Qt,我组和另外一个组是C#组。

而他7年工作经验的工作内容基本上也是以Winform为主,但是仅限于Winform,其他的技术他基本上都不会。

而另外一个三年经验的程序员,除了Winform,前端多少也会点,比如说Vue,后端还会.Net Mvc(Framework和Core都行)。也就是说,即使他不做C/S项目,去做B/S项目也是没问题的。

但是,显然,一个工作7年的,技术能力连一个工作三年的都不如。

结语

说了这么多,我不是要硬钢人家,而是我认为,如果一个程序员工作了7年,技术丰富程度还非常窄的话,多半有些不思进取的意思在里面。

而且,我也不建议各位刚毕业的程序员在一家公司呆那么久,因为很可能到最后的结果就和他一样,技术很窄,时间越长越没有竞争力。

他的一系列问题基本上除了自身问题,另外就是在一家公司呆得太久了,技术在公司的项目中没有得到有效的提升。因此,三年我都给他估多了!