有些事情你不知道,但你一定能解决。
有些人通过我账号资料加我,然后问我一些所谓“怎么办”的问题,不是我不告诉你,而是我确实不知道。我确实有很高的title,也确实有很多的技术积累,但我并没有达到知识的“百宝盒”的水平。
换个角度重新说这句话“这么简单的问题你都不知道,你配得上你的title吗?”
技术能力
我们放下技术先不谈,只说能力。当你同时面对工作进度紧张,家里事务繁琐,你是如果做时间管理的?当你面对20个offer,需要做出选择时,你是如何量化对比企业特点,找到最适合你的那一个?当你的schedule堆的满满的,你肯定完不成所有事务时,你是如果设置优先级的?当你发现很多方法都能达到你要做的目的,你是如何寻找最优解的?当你的女朋友们吵得不可开交时,你是如何调和的?(咳咳……)
同样的问题,有些人觉得有100种解决办法,有些人却觉得穷途末路……
毫不客气的说,思维角度的多少(暂理解为同一问题解决办法的多少)决定一个人的成就。至于思维懒惰的人,对不起,你没有入场资格。
那些“进步青年”们每天进行效率/技术/英语/商业/投资等各种各样的自我提升,而有些人却连一个标记的清清楚楚的Exception都解决不了。
我写文章不是为了对别人的人生指手画脚的,也不是为了骗大家点广告或者买技术课程的,我希望我的读者能够有所收获,认清不足,成就更高的层次。我在分享思维。
那么回过头来说技术。如果你遇到一个问题,恰巧你之前解决过,那么你会在1秒内知道解决办法。那些踩过了无数次坑的人成了这个领域无所不知的专家,甚至有些人觉得成为专家就是无所不知。
然而,时间是有限的,钱是无限的。(不必反驳,慢慢体会。)这个世界有那么多美好的事情,你却在钻研技术。 有些技术难点你没接触过,你甚至不知道它是什么,但你一定能解决这个难点。这才是技术专家!
举个例子,有个问题能在java层解决,能在sql里解决,甚至能通过linux shell脚本解决。你精通java有什么用?难道要精通java,sql,shell?那如果遇到问题需要python/perl/nodejs/swift...解决呢?也要做到精通吗?
如果大家记得《如何成为10倍速程序员》里“按需记忆”的理念,那就把本文所说的理解为“按需精通”吧。
面试分化
无论技术多么强大,经验多么丰富的开发者在准备跳槽面试时都要刷一遍题。为什么?
举个例子,BAT喜欢问类似这样的问题,说说Ajax的底层实现?
Ajax是告诉浏览器给我要发送一个HTTP请求,你给我新开个线程去执行下,完事后告诉我一声,我在其他function中执行后续操作(回调)。在线程返回结果前,我可以继续做其他事情。(异步)
上面是我经过搜索,然后总结的答案。在写本文时,我甚至忘了这个问题的答案,找到我的回答粘贴过来的。
如果这个问题,恰巧就是你的知识死角(你在工作中从没遇到过),那么是否代表你的技术能力不够?
当然不。
我不是针对BAT的面试流程做出质疑,我是说包括BAT在内的大多数技术面试流程都是垃圾。
面试问题应该是类似这样的,有10个亿的订单数据,如何存在数据库中?
其实企业中涉及到多线程,大多封装在企业自身信任的框架中,普通开发者涉及的很少,但大多数面试环节都会涉及。
如果你因为面试问题触及到你的知识死角而变成沉迷技术的人甚至失去自信。那我只能说这是当前面试与实际工作的分化造成的整个行业的悲哀。这就是“面试造飞机,工作拧螺丝。”