前几天我发了条微博, 说目前程序员群体出现太多质量差的个体的情况:
最近面了多个软件工程师,别看工作经验好几年,看起来好像能“干活”,但是竟然冒泡排序都不会写!这样的行业状况,一旦经济危机爆发,程序员群体估计要仆街。技术当然是成功的关键,但是经济状况出问题的话,行业的价值重估肯定让很多人痛苦不堪。
这条微博发出来, 很多人表示认同我的观点, 也有不少人表示反对. 反对者的理由无非是"工作几年了, 不必考虑算法和数据结构了吧? 谁还记得这些基础的死记硬背的东西?..."等等.
我之所以要在让面试者写冒泡排序, 是因为我有追求优秀之心, 同时, 我也根据实际, 不刻意难为面试者. 随着技术的发展, 程序员的门槛不断降低, 这是事物发展的正常规律, 我们也要与时俱进, 不能要求每一个程序员都要像早期程序员那样通过搭导线和打孔来编程. 但我们要随时保持优秀之心, 不能因为技术的发展导致许多连编程逻辑都不具备的人也进来做程序员就自惭形秽.
在强大的互联网需求面前, 程序员群体供给相对紧缺, 必然导致大量分不清程序变量名和字符串中的单词这种级别的人也能进入行业供职, 而且不要感到惊讶, 这样不具备基础素质的人也能完成某些安排的工作, 也就是"能干活", 不要不解, 不要悲哀, 这就是技术发展的魔力.
一个普通的程序员能按部就班地编程, 一步一步地完成业务逻辑. 一个优秀的程序员也能完成开发工作. 难道, 优秀和普通之间就没有区别了吗? 不是的!
普通程序员开发了软件, 业务一跑起来, 怎么商品库存超卖了? 库存也做了判断, 应该不会超卖, 怎么会超卖? 优秀的程序员做出了系统, 无论怎么苛刻的运行条件, 系统都按照设想的那样运行, 数据准确, 业务正确. 为什么? 可能只是因为优秀的程序员做业务抽象, 应用了一项非常普通的技术来保证核心业务模型的准确.
我的合伙人小张多次跟我说:"我们出来做懒投资, 还没做出产品来的时候就得到投资人的信任拿到千万投资, 没有几个人能做到, 我们认真做事, 出身高贵, 没有理由不感到优越!"
如果你是一个优秀的程序员, 你理解程序内在逻辑, 你能对业务进行逻辑抽象, 你了解多项技术并合理应用, 你不把自己当做一个仅"能干活"的码农, 你就已经超越了百万甚至千万的同类, 你还有什么理由不认为自己出身高贵, 必将得到更好的回报呢?
不是说不会写,原理都还记得,而是说已经很久没有写过算法了,突然让写算法,尽管记得原理,但是面试的准备时间有限,而且是手写,难免会不适应。
诚然,我觉得掌握这些东西非常重要,但是人的关注点有限,人脑也不是电脑,想切换就切换。
这种面试,我总感觉,更加适合大一大二那种刚学完算法、数据结构学弟们;对于高年级、甚至工作好几年的人来说,提前不准备的话,很容易措手不及。
没有别的意思,就是发发牢骚而已,无须认真。
另外,想说说自己对这个行业的看法,只是个大三学生,说的不对,还请不吝赐教。
随着互联网逐渐普及,编程语言也越来越“智能“,从难以阅读的机器码到可读。学习编程的难度越来越低,即使不是计算机专业,即使是个几岁的孩子,也会编程。不是说,计算机基础不重要。相反,随着计算机系统越来越复杂,要求也会越来越高。但这只是对于部分人而言。
我认为,未来的计算机行业(随着人人会编程,可能行业的界限会逐渐模糊),总体而言会分为两种:钻研底层技术,负责提供平台等的提供者、利用已有的框架、平台、组建编写应用的应用者。对于前者而言,基础知识非常重要,知道的越多越好;而对于后一种而言,编程更像是搭积木,底层的东西,知道原理固然好,但是对于关注基础的东西,没有太大必要。 Reply