算法对于一个程序员来说是不是必要技能?

muyan9 2012-08-10 01:42:59
目前接触过的公司,小公司相对技术要求不会太高,现实也不允许要求太高,"牛人"大多不愿意留在小公司,出入社会和相对经验不是那么丰富的,面对竞争激烈的招聘环境退而求其次,找个小公司锻炼一下再跳,这个可能是一些新人的想法,虽然没调查过,感觉上每年的新人应该有多半是进入了小公司,基本的判断是:1、大公司的招聘职位有限,不能接收这么多新人;2、大公司的数量有限,接收总量没那么多;3、大公司的准入门槛高,即使招聘新人,也是只招其中的佼佼者。

所以,本人认为多数新人还是进入中小型公司。

中型公司应该是有稳定的客户群,开发架构和业务范围也相对比较固定了,即使新人进入,经过一段时间的培训锻炼,也应该可以满足项目开发需要,而在这个过程中,新人也逐渐丰富了经验,渐渐可以成为主要开发者甚至项目核心,综合能力肯定是有提升的,不仅参与开发,可能还会介入设计,架构、算法、优化等过程都有涉猎,随着在项目组中重要程度的提高,算法能力逐渐提高,成为工作能力中关键性的因素之一。

小型公司相对客户的稳定性最差,且公司的发展方向甚至都不稳定,人员流动率也是相对最高的,新人进入公司,可能半年之内就离开,老人因为工薪、职业发展规划等原因,离开的几率也很高,有些老板会产生这样的想法,反正也是培养一批走一批,那就没必要深入培养,能干活就行了;有些老板很有长远眼光,认为我要不断发展壮大,用的人贵精不贵多,码工可以随时补充,但一定要有几个能挑起架构师职责的人在。

无论是基于什么想法,有哪些因素,现实是,大多数新人对算法掌握不好,这其中得到工作的新人要么是因为有潜力,要么是给面试官的印象不错,决定可以先试用。

从写码的角度讲,如果项目管理者把核心模块交给一个新人来做,是非常不合适的,本人确是知道有这样的情况,一个小公司老板因为原来写asp的人离职了,招了个刚毕业的,面试只问了几个问题,其中一个是:你会asp吗?那人说会,很熟。然后就把一个XX局的oa交给他一个人做了,一个多月后,那老板找我们老板说借个人帮帮忙,结果我就去了,一看代码,我哭的心都有了,年月日的checkbox,先在数据库里建三张表,分别是yyyy、mmmm、dddd,把年月日的数值事先写进去,页面代码中读表取得数字,for循环写入组件中,很无敌的写法吧,可以组合出2004-02-31~!~~~

新人最初的一个月甚至半年的时间,基本是来习惯团队的开发习惯和书写风格、架构模式,间接或直接学习提高个人能力,这个阶段只要模仿能力足够,求知欲望不错,都会有很大程度上的能力提高。

进入模块设计和核心开发者的阶段,算法逐渐体现出优势地位,尤其是优化发面。

但是,一个10人以上引入了项目管理的团队中,核心开发者一般不会超过4人,设计者一般不会超过两人,多数人还是码工,要求的算法不见得就那么高;更多的团队是分模块划分,仅描述功能需求,除页面显示、输入输出统一规划外,实现过程自己设计,这种情况反而对算法要求高了一些,但是核心模块和复杂的部分还是会优先分配给能力强的人。

对于大多数人来说,不一定是其主观上不想提高算法水平,可能因为环境的因素逐渐的影响了想法,够用就好,狙击枪能打出5公里就行了,打50公里即使你能造出来这种枪也远没有炮好使。

前几年听过一个词,唯算法论,当时是没什么感觉的,在这中间几年的工作里,受到过一些影响,对唯算法论深恶痛绝,最近一年有所改观,只能说既然它存在就有一定道理,毕竟计算机本质是由数学发展来的。

但我要说的是,算法不好的一样可以做出好的东西,一样可以写出优化的代码,通常意义上说的算法,多数指的是计算公式,固定的处理模式等,那些东西都是死的,条条大路通罗马,不是只有利用数学才能优化,其他方式同样可以,毕竟数学的逻辑关系是来源于实际生活中的需求,如果因为生活经验丰富之极,能总结出更简化的处理模型,也许就能胜过在代码级别上做的算法优化。

写这篇的目的,不是贬低算法,相反算法的重要性无可替代,只是个人的一点感慨,现在的面食官有不少是纠结于算法,还有不少是纠结于基础知识,算法还情有可原,毕竟能表现出一个人的逻辑思维,可基础知识这东西,就像我们天天在说中文,谁能完整地说出有几种修辞方式,书背的再好,真正体现在代码中了吗?我看未必。我之前的公司曾经拿面试新人的笔试题来考我们老人,应届生的及格率在80%以上,而我们的及格率在60%以下,说明了什么呢?

吐槽一下,希望面试官不要因为自己的喜好而埋没了人才
...全文
1291 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
转眼成空 2014-07-12
  • 打赏
  • 举报
回复
为了这十分 我不得不评论呢。。。
L_O_C 2012-08-28
  • 打赏
  • 举报
回复
算法相当重要,但是要到一定的阶段才能理解它的重要性。
zyh_cas 2012-08-28
  • 打赏
  • 举报
回复
这也看什么样的工作了,有些比较低级的工作确实对算法要求不高
「已注销」 2012-08-27
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
1、笔试过不了就一定不是公司需要的人才

2、公司需要的人才一定可以过得了笔试

3、过不了笔试的一定不是公司需要的人才


哪个一定是对的?
[/Quote]设定:过得了笔试为P,公司需要的人才为Q
1. 非P → 非Q
2. Q → P
3. 非P → 非Q
你觉得呢?
GoneWithDream 2012-08-27
  • 打赏
  • 举报
回复
考算法是为了看面试者的思路,思路在软件开发过程中很重要。
muyan9 2012-08-26
  • 打赏
  • 举报
回复
1、笔试过不了就一定不是公司需要的人才

2、公司需要的人才一定可以过得了笔试

3、过不了笔试的一定不是公司需要的人才


哪个一定是对的?
Mourinho 2012-08-20
  • 打赏
  • 举报
回复
吹得再NB,写不出代码也不过是南郭先生罢了。
RLib 2012-08-18
  • 打赏
  • 举报
回复
算法重不重要暂且不谈,笔试你得过关吧?
IVERS0N 2012-08-18
  • 打赏
  • 举报
回复
学多了 算法是必不可少的
宁波朱超 2012-08-18
  • 打赏
  • 举报
回复
我做J2EE开发的,我觉得这块对算法没什么要求。
「已注销」 2012-08-18
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
luoshuzheng7 2012-08-18
  • 打赏
  • 举报
回复
大公司笔试面试清一色算法,是有它的道理的。
它们不是傻子。
muyan9 2012-08-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
算法非常重要。
问题是大部分人做的工作都涉及不到算法,大部分时候,可能会用到一些,呃,我估且称之为“解法”吧。
[/Quote]

同感,工作7年了,写过的代码能够得上算法的顶多不超过5个模块

我从初二开始数学就没怎么及格过,就像6楼的仁兄说的,现在还一直在低端市场徘徊呢,不停的换行业、换领域、换语言
muyan9 2012-08-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
引用 3 楼 的回复:

况且算法再牛,其他方面不行也是白费,我曾经接触一个研究生,学数学的,做过GIS里的计算功能模块,来我们公司面试,第一轮之后就不考虑了,问的问题多数都词不达意;

还有一个算法也不错,交给他的任务能很快理解,就是写不出来,这不也白搭吗

有些人没有专门学过算法,但能利用其他方面的知识来辅助解决问题,这是实践能力,个人觉得这样的人远比一个理论水平高的绣花枕头强
……
[/Quote]



数学本身是从生活中归纳总结出来的规律,程序算法是数学表示方法的具体体现形式,算法的掌握程度跟数学理论知识的掌握程度没有直接联系,如果能从生活中总结出非常实用的规律,利用这些来解决算法问题,即使没学过高等数学也可以解决很多问题的.

当一个可以用简单规律表达的问题,用系统的数学推导来确定算法时,耗费的成本是相对较高的,很多时候理论水平高反而容易形成思维怪圈,陷入理论研究,而实际上理论上的某些分支是多余的,因而多耗费了时间和精力。易中天曾经在一次演讲中举了个例子,把君子/小人和真/假做排列组合,理性思维较强的马上会列出四种组合:真君子、假君子、真小人、假小人。从理论上讲,这没有错误,但实际生活中假小人是不存在的。

再重申一遍,本人不贬低算法。但是也不要把算法看得太重。多数人第一反应算法是偏重于理论的,不少人写算法最后写的跟天书一样极其复杂,也许作者的目的就是不想让人看懂吧,这让管理人员很是痛苦,增加了维护难度
相当之稳重 2012-08-17
  • 打赏
  • 举报
回复
不必要。但算法能让一个程序员的水准上一个层次。高端市场与低端市场的需求不同而已。
代码誊写工 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

况且算法再牛,其他方面不行也是白费,我曾经接触一个研究生,学数学的,做过GIS里的计算功能模块,来我们公司面试,第一轮之后就不考虑了,问的问题多数都词不达意;

还有一个算法也不错,交给他的任务能很快理解,就是写不出来,这不也白搭吗

有些人没有专门学过算法,但能利用其他方面的知识来辅助解决问题,这是实践能力,个人觉得这样的人远比一个理论水平高的绣花枕头强
[/Quote]
你公司招的是美工吧,那这研究生哥们儿确实没法胜任
另外那个算法不错的写不出啥来呢?你们公司人才太多了,很多公司负责算法的都只写伪代码,你非要他用12种语言都写一遍确实写不了。
完全没有算法知识的程序员,还是仅仅是没有在大学里学过算法的程序员,这个得说清啊。
其它什么知识能解决大部分算法问题?
  • 打赏
  • 举报
回复
算法非常重要。
问题是大部分人做的工作都涉及不到算法,大部分时候,可能会用到一些,呃,我估且称之为“解法”吧。
muyan9 2012-08-10
  • 打赏
  • 举报
回复
况且算法再牛,其他方面不行也是白费,我曾经接触一个研究生,学数学的,做过GIS里的计算功能模块,来我们公司面试,第一轮之后就不考虑了,问的问题多数都词不达意;

还有一个算法也不错,交给他的任务能很快理解,就是写不出来,这不也白搭吗

有些人没有专门学过算法,但能利用其他方面的知识来辅助解决问题,这是实践能力,个人觉得这样的人远比一个理论水平高的绣花枕头强
muyan9 2012-08-10
  • 打赏
  • 举报
回复
里头说了,不是贬低算法,是在不同阶段的重要性不同,如果你招的人只打算用于底层开发,又没那么复杂且不需要太高深的算法,以算法能力来做为最主要的衡量条件肯定是不合适的
q107770540 2012-08-10
  • 打赏
  • 举报
回复
算法考核的是逻辑思维能力,你说需要不需要?

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧