如果业界中不用高级算法和数据结构,那为什么还要学? - 博客 - 伯乐在线
下面是来自 Jerason Banes 的回答,1.4 K+ 顶
恭喜你!我刚把你的简历扔到"不要"的那堆中去了,嘴里还碎碎念叨着,「为什么怎么会有你这样的小孩,业界出什么问题了,我为什么要重新训练每一个我招来的工程师」。你也很可能认为数据库很神奇,只要再丢一个索引到里面,就可以解决你的所有问题,对么?
我为什么要这样做?我是一个脾气暴躁的老头,喜欢随心所欲得给应聘者设置难题吗?
事实上,答案正好相反。如果你学习过,而且是一名接受过训练的工程师(注意我一直使用这个词),你会发现面试过程相当的简单。我经常问一些很简单的问题,例如「写一个FizzBuzz程序」,「JavaScript是函数化语言?」。电话面试中有几个超级难的问题,我并没有问。因为这些问题会吸引你学习,并为我工作。
如果我不是在设置难题,我到底是做什么的?
我正在设计一个系统,可以基于千兆兆(10的15次方)字节规模的数据提供分析结果。由于 Google 让每个人相信,他可以在全网查找他输入的东西,所以我也必须要在自己的网络应用程序中提供类似表现。
要做到这个,异常困难。我找了一下 EMC SAN 磁盘规格说明,上面都告诉我没有足够的吞吐量。虽然我可以寻求一些无限带宽的昂贵硬件,但是我不为 Google 工作的,我预算有限啊。我需要找到一个方法,利用一堆廉价货,让它们在一起来提供交互速度。一个超级强大的设备不能做到的,但一堆平行 IO 却可能实现。
我现在所要做的,就是要求我的工程师们对这些结构写查询代码……卧槽,刚才有个童鞋尝试把整个代码加载到内存中,结果把整个结构的栈搞挂掉了。我们回退了他的代码。他说这代码在他的测试环境上是可以工作的,他不理解为什么会这样。我摇摇头,把他拉到白板前,给他解释内存背后的原理,内存就像数据的蓄水池,容量是有限的。一个直管的通过量(数据流),只受限于时间(数据移动的速度),而不是容量。
他说他明白了,以后会避免犯类似的错误。嗯,他可能会避免,也可能还会犯错。有智力解决复杂计算机问题的人凤毛麟角。大部分人看上去有机会,但做到的只是极少数人。特别是这个世界还有很多愚蠢的想法,比如"为什么我要学习数据结构和算法"之类的?
我最终可能会炒掉那个工程师。这相当糟糕(译注:艰难的决定),因为在其它方面我还是很喜欢他的。他只是不适合这个工作。
你要知道,你对编程的理解,会体现在你自己选择的工作态度上。毕竟这些不是有趣的工作,赚的也不是很多。你做的事情也不是真正重要的。
如果你觉得作一个低工资的程序员也还好,你最终会改行去做其它的事情,那你不用去学算法和数据结构。如果计算机科学真的吸引你,你知道该做什么。
Read full article from 如果业界中不用高级算法和数据结构,那为什么还要学? - 博客 - 伯乐在线
No comments:
Post a Comment