日期:2014-05-20  浏览次数:20872 次

非计算机专业真的不适合做软件开发吗?
  我大学学的是物理学,但我不喜欢这专业,由于兴趣自己大二就开始学习.NET到现在,学了C#、SQLServer、数据库访问技术如ado.net、entity framework,web前端(html,css,javascript,jquery,ajax),asp.net,虽然没有什么实战经验,也没有去考软考证,但一般关于.NET的笔试题也都会做.
    今天学校搞了个企业-应届生双选会,300多家企业一起来到学校,各种专业需要的都有,就是物理学专业的就那么一两家,我不想投它们的简历,而且简历上的求职意向是.NET软件开发。
    我投了几家需要.NET开发的企业,其中有一家让我印象很深刻,一个看起来很资深的hr(大概有三四十岁的样子,不像是hr的)看了一下简历,
    问:介绍一下你学的这个.NET是什么?
    我答:.NET是微软推出的一个平台,为……
    看他没有让我停下来的样子,我又不知道到底要我答多长,就说我学的一些技术。
    后来他说:你们专业是理科的没有开设.NET这门课吧?我说没有,由于我对编程很感兴趣,很享受编程带来的乐趣和成就感,并且有向技术方向深入的打算。他又说:那你所学的东西都是野路子,没有官方见证……;这时我很想反驳他但又觉得没什么意义,继续听他讲。聊了一会,当我说我是铁了心要干这一行,并希望有所成就,做一个顶尖的技术人员时,他说:我也想在创造中国的微软啊,但是没有受过系统的学习,仅仅凭兴趣能做到吗?……
    回来后我很是伤心,难道非计算机专业真的不适合做软件开发吗?或者对于一个没工作经验的非计算机专业的应届生还需要学什么?或者做什么?
非计算机专业真的不适合做软件开发吗

------解决方案--------------------
很多牛逼也不是计算机专业的啊
------解决方案--------------------
不是这样的,有兴趣,有动力,坚持下去,一定会有所成就的
------解决方案--------------------
只能说,面试官挺逗的
------解决方案--------------------
比尔盖茨是学法律的……微软很多学英语的……
------解决方案--------------------
你是学物理的,我用你熟悉的领域打一个比方,比方说,大学的物理题目很多其实和中学的差不多。但是大学你学会了微积分,面对不同的问题,你就有了统一的解决思路。而在中学,你要解决某个问题,可能就要死记硬背很多公式。考试的时候一紧张,公式忘记了,完蛋了。但是学过微积分,很多公式可以现场推出来。在中学,我们懂得方程和代数,因此,我们只要记住公式就可以了。再回想下小学,我们不懂方程和代数,做题目就要记题型,比如这是鸡兔同笼,那个是植树问题等等。那时候班上优秀的学生无非就是参加了补习班,会做很多题型。遇到一个题目,他做过,你没有,所以他会。

我们类比下软件开发:
初级码农就好比小学生,他写程序靠控件,他可能一开始只会几种控件,随着工作经验的增长,他掌握的控件越来越多,他看到一个程序,马上就知道套用那几个控件来实现类似的功能。但是如果特定的平台没有这个控件,他立刻就傻眼了。当然他可以继续学习控件,但是除了最常用的那些以外,他学习冷僻控件对他开发的帮助越来越小,比如说他会10种控件就可以开发70%的程序,但是会另外的90种,他也只能开发80%的程序。他学来学去就在这个层次上了。

一般没有计算机科学理论,但是通过自己努力,学会编码的初级程序员好比中学生,他会“代数了”,他知道控件如何编写,如何将需求用程序完整地表达出来,如何用程序驾驭计算机。他的思维从控件这种具体的东西抽象了一步。因此,一个需求,他只要知道如何分解成一些步骤,那么他就可以解决。比如说如何查找数据,如何处理文本,如何绘制图形等等,这些直观的事情就难不倒他。但是这种人最容易成为“野路子”,这是因为,他还不能借助计算机科学的理论去解决一些经典的信息处理的问题,比如说解析一种正规文本构成的简单编程语言,或者计算多个约束条件下的最优组合。因为他们善于将自己安排的步骤变成程序,但是对于算法是一窍不通的,因此他们往往通过自己的闭门造成研究出很多奇形怪状,缺乏理论基础,粗笨的解决方法,并且编制出程序。这种程序往往效果很差,效率低下。

学习了计算机科学的人就又上升了一个层次。这个时候他对计算机的原理和算法本身有了深刻地认识。他掌握了信息处理的一般规律,比如说动态规划、回溯算法、基于最近使用频率的优先级算法、基于有穷自动机的正规文法分析、基于贝叶斯的统计分析方法,尤其是能够编写一些自适应、启发式的算法,那么他就可以自如地解决各种经典计算机问题,同时他的思路就更广。这些计算机科学的基本算法,同时又成为某个专门领域的基础。换一句话说,到了这个阶段,你就有能力在某个领域深究下去,最终走到业界的最前端。好比一个物理学的大学生,不再觉得某个物理学的研究生、博士生研究的东西有多么神奇,而仅仅是你花时间去研究,那些东西你也可以掌握。但是对于一个中学生,哪怕是物理竞赛获奖的,这都是觉得不可思议的。
------解决方案--------------------
一般来说,如果你还能够学多一点软件专业课程,就不要成事不足败事有余地非要说反话。

有些小人喜欢在公司里说一些挑拨专业人才的话,以此来博得同事们一“笑”。这在一些风气不好的公司尤其盛行。也许在一个整天讨论“如何换个公司混饭吃”的圈子里,是不是和讨论比尔盖茨等人的。
------解决方案--------------------
学物理的超级多的优势阿,你看专业仪器怎么造出来的。就是物理专业知识+编程阿

我同学学物理的,结果博士出来一直就在编程作望远镜
------解决方案--------------------
支持一下楼主
------解决方案--------------------
楼主我支持你啊,很多大牛都是自学成才的,华罗庚自学成为大师,也没受什么系统学习啊!说到了系统学习,我认为那是扯淡,只要你做一个项目,就会发现你需要学习的东西,当你完成项目时,你的水平就会涨一级,做的越多张的越快。上面这些人说的是培养大师级别水平的基本教育方式啊,试问中国有几个大师啊!有哪个编译器是中国人开发的,楼主只是想从事自己喜欢的专业,我想当个程序员基本不是问题!
------解决方案--------------------
有兴趣就行,
------解决方案--------------------
LZ大可不必担忧这个问题。我也不是计算机专业出身,找的工作不还是做软件开发?好公司不会问出身,只会考察你的实际能力。

当然,走软件开发远远不是学几门编程语言,掌握几个数据库用法就行了,就像版主说的那只是一个小学生水平。 需要自己学习一些计算机原理、算法、编程思想方面的东西。建议多看看这些方面的书籍,国外很多经典的书籍,比如深入理解计算机系统、算法导论等等。
------解决方案--------------------
兴趣是充分要件,而不是必要条件。
你的确需要花很多业余时间来补充自己的空缺,也许是3年,也许是5年,或者更长,这个取决于你的毅力。
------解决方案--------------------
路过,赚积分的,无怪、
------解决方案--------------------
路过,偶非计算机专业

适合不适合不知道,就是在做
------解决方案--------------------
非计算机专业的路过。像我们这样缺少理论知识的人,就要靠项目经验找工作。许多小公司工资低,但要求也低,会API调用,能做出产品就行。你先找这样的工作干着,积累经验,业余时补补理论课。
------解决方案--------------------
哪个行业,贵在坚持,当然,如果你是计算机专业的,那更好了
------解决方案--------------------
关键是要坚持,持之以恒
------解决方案--------------------
那个面试官是傻B一个。。。

自以为很拽啊
------解决方案--------------------
基本上,你学什么专业和做什么工作没有太大关系。有用的东西都是工作后学的。本人也不是学计算机的,后来工作需要,自学了单片机开发,JSP,PHP,数据库,现在为andriod开发头痛ing
------解决方案--------------------
本人也是非计算机专业,对编程相对比较感兴趣,大学有开C++程序语言设计,后来自学MFC构架,大三的暑假去一家公司实习了,记得当时50元/天,然后今年毕业了,在一家电子公司负责PC软件的开发,主要搞VC和QT。然后还在苦逼ing
    最后,提醒一下楼主,非计算机专业对计算机的基础知识的确比较缺乏,记得时刻充实自己。
    个人见解:或者你对面试官的问题,完全是答非所问,导致面试官只能用调侃的方式拒绝你。
------解决方案--------------------
引用:
如果即使爱因斯坦还活着,你让他跟大多数国内优秀中学生比赛做中学题,肯定是比不过。因为他需要重新研究题目并且很可能习惯性地放到他的领域里去解决问题,而中学生则只要善于死记硬背。

如果即使比尔盖茨没有老朽并且离开软件开发工作已经有20多年,你让他跟现在某些“学专业的”应届毕业生比赛,可能也比不过。

但是你不能因此说“我也比不过,因此我就是高级人才”。

面试官固然问你的问题非常低级。什么“.NET是什么?”这类问题有什么意义?不如不要耽误你和他自己的时间,直接请你离开。我想他是给你一点面子,瞎耽误一点功夫而已。

对于没有自己设计过产品的信任,面试官会问一些关于数据结构、计算算法、系统原理、控件内部机制、试试看你是否真的熟悉一些开发工具等等的简单问题。




引用:
一般来说,如果你还能够学多一点软件专业课程,就不要成事不足败事有余地非要说反话。

有些小人喜欢在公司里说一些挑拨专业人才的话,以此来博得同事们一“笑”。这在一些风气不好的公司尤其盛行。也许在一个整天讨论“如何换个公司混饭吃”的圈子里,是不是和讨论比尔盖茨等人的。