“不要误会,我不是针对个人,我是说在座的都是垃圾”
每次打开HR邮箱看到应聘开发的简历时,脑子里浮现都是这句话。我不需要招大牛,我只是想招一名合格的程序员。
在很多人的眼里,程序员既然属于工科,那他就是靠掌握一门技术吃饭的人,就像学校门口修自行车的老师傅一样,只要学会基本的自行车构造,和常见问题的解决方案,就能靠这门手艺谋生,再加上嘴巴甜一点少点歪心思做人厚道点基本能垄断附近几条街的市场。
但实际上,程序员更像是设计行业从业者,不是每个能熟练使用PS的美工都能称之为设计师。同样的一个LOGO设计,有些人只能收500,有些人能收50万,更有些人免费做的别人也不要。
说说我选择程序员的标准
1.非极端情况,一本以下的不要
2.有编程素养,具备程序思维
3.了解这个行业文化和最近两年技术发展趋势
4.至少掌握一门编程语言
就这4点,不要求项目经验,不要求掌握特定语言,这4条刷掉了HR邮箱的所有简历,让我一度深刻意识到以我公司的水平想招到这样的程序员有点癞蛤蟆想吃天鹅肉
我相信每个过来人,应该是认同第一个条件的,不用怀疑,这就是偏见。好的大学并不一定能教会你什么,但是在一个相对优秀的文化环境下,这个人的综合能力和基础是高于平均水平的,在工作的表现突出在学习速度,工作态度,责任心,自知之明和主观能动性上。尤其是学习速度,技术学习的快慢绝对不是勤奋影响的,而是文化基础。
第二条,编程素养和程序思维。编程素养是一个没办法被量化的指标,它需要通过非常多工作不需要的基础学科知识的熏陶,潜移默化建立的。
我和CTO打过一个比方,这个行业是一个江湖,每个程序员都是习武之人,编程语言就是门派,技术框架就是一套招式,编程工具就是各类兵器。现在满大街的程序员培训机构都是带一个人拜一个门派(Java),学一套这个门派的武功(Android),给你一件兵器(Eclipse/Android Studio),第一周教你基本的外功招式(JAVA 基本语法),从第二周开始教你武功第一式(搭建项目),第二式(界面搭建)一直到你能有模有样打一套,然后让你到村口接两个杀山贼的新手任务(天气预报,星座占卜,食品电商),你噼里啪啦交了任务感觉此刻自己也是江湖人了,可事实上,这类人小说里都是成批扑街连名字都不会有的下场。
这样说可能太刻薄了,但希望我这个刻薄的比方能打消你去培训机构学习编程成为程序员的念头,希望我的刻薄能提前扼杀你未来无尽的失望。
回到这个比方,既然是习武之人,不管你师从少林武当还是明教丐帮,每一个有名字的角色都是从扎马步练起来的,下盘不稳的打架根本站不住,所有能给你用特效的招式都是需要内功深厚才能练的,张无忌没练过九阳神功抄十遍乾坤大挪移也没用。
编程素养就是内功心法,裘千仞一掌打穿桌子碗里的水波澜不起,你一掌下去手肿了,就是这么直观的区别。
回到现实,编程素养在实际编程工作中如下区别:
1.效率敏感,资源敏感!!效率敏感,资源敏感!!效率敏感,资源敏感!!重要的事情我说三遍都嫌少。对于同样的一个数据查询,效率敏感的人可以几何级提升执行效率。资源敏感的最直观体现就是图片瀑布流显示效果,不懂得动态释放资源写出来的界面滑起来卡,而且还很容易崩溃。最可怕的是写代码的人认识不到自己的问题,"我代码没问题啊,把要显示的图片都显示到listview空间上了啊,机器性能不够怪我喽?"
2.代码结构,项目框架。不是学过一点OO的思想,按照直观判断划分出一坨class就叫代码结构。准确的模块切割需要考虑接口耦合性,继承关系,可维护性,尤其在多人协同开发的过程中,项目框架决定未来3个月后会不会听到此起彼伏的“这一块需要花几天重构”
3.设计模式,这一块很难讲好坏,很多人都只知道MVC设计模式,最多再加一个单例模式。这个东西属于学起来抽象无用,做起来没有相关知识做铺垫,写出来的就是一团毛线。
4.可阅读性。代码其实只是文本,用记事本写代码不只是传说。良好的编程素养能帮助程序员构建逻辑清晰的代码,一眼望去是一块一块而不是一坨一坨的。代码风格不只是编写习惯,更多体现一个程序员在编写代码过程中注重的细节程度。
第三条,了解这个行业文化和最近两年技术发展趋势。这也是掌握单一技术很难在这个行业立足的原因,互联网行业技术淘汰是非常快的,别看php,jsp,asp这么多年还是占据半壁江山,其框架上的大调整每年都有。技术开源和敏捷开发,在这两个词的带动下,每年都有热门技术被推到台前,你可以不用,不学,但你一定要了解。知道每个新鲜技术解决了什么历史问题,在哪个领域有突出表现。做不到这一点你会发现你能做的事情越来越少,身边谈论的技术方案你越来越陌生。比如现在移动端很火的混合开发,不是简单的在原生webview下请求一个H5网页就一概而过的。
第四条,如果一个人满足前三条而不满足第四条。我都不知道怎么科学的理解这个人。
本来还想写很多,但写到这感觉已经偏离了自己打开文档时的初衷,言辞不当之处看官也别包涵了。
欢迎来喷。
这个月会再写一篇关于创业本身发展模型的文字。
———————————————————————————————————————————————————————————————
看到大家的评论,我觉得还是要补充几句。
最近因为公司拓展需要而苦苦招不到满意的程序员而苦恼,半夜有感而发写下此文,次日醒来再读很多地方自感言过其实。但如果再次讨论这个话题,楼主还会这么说,所以我不会修改原文。
楼主公司在魔都,创业2年多,核心开发都是从公司创立初期一路跟着我打拼到现在的,按照这个标准他们当初也多数不符合,但他们对公司的贡献巨大,自身的工作能力也很优秀,我非常感激他们。
看下来大家对于234都大体认同,对条件1的学历门槛有敌视情绪,也有朋友举例比尔盖茨和王江民先生。的确盖茨辍学创办微软,王江民先生据说初中文化水平毕业,36岁开始接触计算机并迅速成为国内安全领域专家。
首先,此文的背景是因为招聘,楼主相信盖茨如果想找工作就不会辍学了,王江民先生36岁自学计算机的年月是1989年,那个时候楼主还没出生,96年在中关村创业,也就是win98还没发布,整体环境和现在是天壤之别,那个年代的程序员都是真才实学的,受制于早期计算机处理性能,不深入理解程序运行的背后机制,写不出能用的程序。楼主相信那个年代的程序员对于数据结构,基础算法,内存管理机制都是当基本功看待,而对比如今越来越低的技术门槛,不可同日而语。
对于技术本身而言,学历的高低并不能代表其技术水平如何,楼主毕业于上海某985高校计算机系, 毕业时同班同学不会写代码的也大有人在。我也相信高手在民间,很多二本三本甚至中专大专的学生比所谓的名校毕业生强太多,但从一般情况上客观看待这件事,高校毕业起码一半是靠谱的,后者只有少数突出的。招聘和相亲本质上是一码事,大部分人相亲的时候都很在乎对方的学历和工作情况,高校毕业的一般综合素质高,一般学校毕业的也不乏很多社会精英,但概率上前者更普遍,所以取一个相对普遍适用的标准我并不觉得有何不妥,虽然最终影响两个人是否在一起的是性格,对于招聘就是能力。
门槛的作用从来不是挡住不适合的人,而是让适合的人进来的更容易。
每一个发给过我第二封求职邮件的人,我都会给他面试机会,希望他是有能力而需要机会的人,但至今我还没缘分遇到。
我很希望招聘到应届大学生,对于社招我反而没什么兴趣,我说的条件,本科就达到的太多了,我身边就一票,可惜均匀分布BAT不愿意在自己事业上升期跳槽,也可能是对楼主太熟悉,知道楼主不靠谱。
最后我要申明一点,楼主自己是程序员,虽然现在写代码的时间越来越少,但我深爱这个行业,编程带来的乐趣,成就,幸福感无与伦比。
——————————————————————————
评论看的伤神,为不影响工作状态,关评论。