@
dreampuf 真的更美好么?
算法对于那些人来说,只是用来在面试刷人的工具。至于为什么非要考算法是怎么实现的,这样刷人是不是显然比随机丢掉一部分简历更有效,他们并不关心。反正别的公司也是这么出面试题的,据说这样能反映出基础好不好。他们根本就不关心,你是否知道这个算法哪里能用,哪里不能用。当然,这样很正常,除了面试,算法就和他们一点关系都没有了。
他们喜欢在Apache配置文件里放上上百条重写规则,代码在部署的机器上直接svn co出来,静态文件就放在代码目录里,一不小心,SVN仓库就被公开了。你去wooyun里搜一下SVN,看看那些经常出现SVN泄漏的公司的名字就知道了,他们不仅没有倒掉的,而且还活得很好,收入还会在未来进一步增长。如果他们真的算法基础好,不会连这一点复杂度都搞不清楚吧。明明可以在Apache那里只处理静态文件和简单的反向代理,在应用里自己处理重写规则,并按目录分层的,非要把所有东西都放在一起,明明是O(m+n)的非要搞成O(mn),弄得配置修改起来特别容易出错。如果哪天事情紧急要改配置,你没考虑到其他重写规则的存在,把配置给搞错了,那就是你没有责任心,没有团队精神,工作不主动或者抗压能力差。这样的人做出来的网络服务你真的敢用么?而且,就算你不用,你身边还是肯定有很多人在用的,你不用你就是异类,而且你也找不到有什么办法能避免这种情况再次发生。你真觉得这样就更美好了么?
他们非要把一个bug很多,API文档不全的开源项目拿来当黑盒用,自己调API在外面包一层,而API文档不全,非要几百个API,一个个自己去猜到底有哪些参数。可是他们说起来编译原理都学的很好的,写解释器甚至编译器都不成问题的,却不愿意花几个小时,看一下代码,理解一下API调用的逻辑,写个脚本把参数都提取出来,而非要让O(1)变成O(n)。几年之后他们就是参与过BigName公司Buzzword项目,有多年大型网站架构经验,海量数据处理经验,大型Scrum敏捷软件项目(管理)经验。可是,猎头就喜欢这样的简历。猎头喜欢看上去能解决困难的问题,复杂的问题的人,不喜欢把大问题分解成几个小的简单的问题,并只能解决简单问题的人。
这就是一个恶性循环。因为随着项目进行,很快就有各种琐碎的事会冒出来,到了某个时间,虽然所有人都在加班,项目进展还是停滞不前。于是,他们就会去招人来解决这些琐碎的事。也就是因为这样,招了很多人之后,功能上尽管有这样或者那样的问题,但往往都能在预期时间内跑起来。所有新版本的代码,都不敢在白天上线,非要到半夜没人访问的时候才敢上线。这也就是为啥要你肯吃苦,有执行力,有责任心,较强的抗压能力。可想而知,这些人去招人会出什么面试题了。而且,有一个副作用是,越烂的公司招的人越多,也就是说,你大多数时候能看到的职位都是垃圾职位,靠谱的公司很少招人。可是没有人天生就是一个靠谱的程序员,可是如果你不能靠自己过了这个槛,你就很难进入靠谱的公司,而且往往只能去垃圾公司当苦力,不仅正常工作时间内学不到任何东西,还要不停加班。你真觉得这样很美好么?
如果经常招人却还是项目经常会进展不顺利,高层就很可能会觉得是管理出了问题,去求助于管理咨询公司。找来的公司,只是为了兜售他们的方案,那很可能,第一时间,就要上绩效管理,制定KPI了。但是,开发很难定KPI,很容易就搞成按工作量和是否能及时完成来定了。你一定不能尝试改进自己工作方式,这样才能保证你有足够的工作量,你计划里一定不要有任何实质性开发工作,这样你才更有可能及时完成工作。你工作方式更烂,招来的人更多,你反而更有可能在职位上晋升了。绩效管理最多就只能确保已经确定的东西得到执行。再小的功能的开发中都充满了各种不确定因素,计划里既要定完成时间,又要定要有哪些功能,还要确保计划的功能都能如期完成是不现实的,除非你只制定没有任何实质内容的计划。
为什么学Java好找工作,甚至有传言说大学之前以及前三年从来没写过一行程序,自学一个月Java就找到工作了?因为据说Java好招人。他们的思维惯性就是无论什么东西就一定要用Java,即使别的语言在这个场景下比Java合适的多,也硬是要用Java,理由就是万一人手不够了,Java容易招到人,用别的语言就很难了。而如果你去投简历,别的语言再好,只要不写会Java,你就被刷掉了。(有时候,PHP能代替这里的Java)。
我不是说,我去做,我就一定能比他们做得好。我只是说,这一切实在荒唐透了。我不是说我能从中分辨出靠谱的公司,我只是说要有心理准备,大多少业务没有指数增长,却在不停招人的公司都糟透了。就算筛掉不靠谱的又怎样,哪里能找到靠谱的?纠结的不是他们是否倒掉,而是说他们明明早该倒闭了,却还活得好好的,以至于我怀疑开发是一团糟的公司才有可能获得商业上的成功?