为什么计算机科学学位对专业程序员很重要?[关闭]


63

我拥有计算机科学学位。对于开门,找工作来说很棒。就帮助我在C#.NET编程的专业领域(即使不是整个美国,如果不是整个世界上最受欢迎的OS,我在该领域中最受欢迎的平台和语言),它几乎没有用。您为什么认为这对您作为职业生涯的程序员有帮助(除了喷出prims算法外,还给某些面试官留下了深刻的印象)?

在当今的世界适应中,敏捷的思维,强大的沟通能力,OO和基本的设计技能使开发人员能够编写出客户会接受的软件。这些技能仅在CS程序中略过。在我看来,阅读Wrox撰写的500页C#书籍比4年来的com cici blaster课程提供了更多有用的技能。许多人不同意。那么,为什么计算机科学学位很重要?


59
“计算机科学与计算机无关,而天文学与望远镜有关。” -Edsger Dijkstra
Eric Lippert

4
记忆还不够。教育需要知道如何使用Reg Ex,还有需要知道何时使用Reg Ex的经验。我会把读书作为教育的一部分。与工作相关的经验很少会鼓励您以正确的方式做事。
扎卡里·斯科特

10
当您没有人时很重要
Aditya P

2
我也有2.8,相当平均。但是我们大多数人被教C / Java和一些Web知识,没有C#知识。无论如何,我认为CS是“下一个最好的事情”,因为CS 4年制课程并不容易,而且确实表明您可以努力获得学位。为什么仍然重要?它为您找到工作!

1
@ luis.espinal我质疑那些统计数据。我怀疑所有代码中有70%是用C语言编写的(想想所有无声的Fortran,COBOL,PL1和Rexx会愉快地打勾)。我对此表示怀疑,当然是多数,但多数。嵌入式设备很多,但是嵌入式设备的数量并没有说明原始来源。一旦为第一个特定设备编写了代码,通常对相同的所有后续设备都有用;大概,无论是在更高版本的同一行中,还是在同一产品系列的不同行中,大量的重用都可以用于紧密衍生产品。
JustinC'3

Answers:


133

为什么要获得计算机科学学位?:

  • 我与一个开发人员合作,该开发人员在HashTable中存储了数千个项目,然后仅对值进行迭代。他从不通过哈希访问。他显然不知道HashTable如何工作,也不知道为什么要使用HashTable-CS学位可能对此有所帮助。
  • 当使用正则表达式时,接触基础自动机理论和形式语言的人们似乎更容易推理正在发生的事情并解决其表达式问题-CS学位可能会对此有所帮助。
  • 刚从学校毕业的开发人员可能能够立即分解各种范式思维方式(OO,功能,逻辑)中的问题,而新的非学位开发人员需要具备经验才能做到。
  • 学校教授计算复杂性。非学位的开发人员可能会觉得最好,但是对正式的理解有时会很好,尤其是在向同事解释结果时。
  • 学位提供了机器的许多模型的介绍-硬件,操作系统,通用数据结构,网络,VM。有了这些模型,您就更容易在某些问题出了错的情况下预见问题。同样,非学位开发人员会建立相同的模型,但需要时间。
  • 任何学科的专家指导都可以帮助学习者避免死胡同和错过主题。阅读是伟大的,但不能替代一位伟大的老师。

这并不是说要想成为一名出色的开发人员,就必须拥有CS学历。几乎不。与我合作过的一些最好的开发人员没有学位。学位可以助您一臂之力。到毕业时,(希望)已经用各种语言和环境编写了大量的代码来解决许多类型的问题。这使您可以顺利进入专家级所需10,000小时的工作中。

第二个好处是,它表明雇主能够实现长期目标并取得成功。在许多公司中,我认为这比您学到的更为重要。


4
+1-这很有意义。专家指导可能以我不认识的方式帮助了我。我仍然想知道,假设两位开发人员具有相同的学习动机,那么4年的通识教育是否比4年的行业经验要好。我觉得在获得学位之前我没有一定的纪律,这当然很重要。
P.Brian.Mackey 2011年

4
学习适当的术语并与其他人花费大量时间学习相同的材料,这也是那张昂贵的纸所带来的好处。
萨尔

65
另一方面,我看到有学位的人在大多数情况下仍然失败:)
Joel Gauvreau

1
they,他们可能也听说过图论。这可能使将应用程序划分为客户端和服务器,网络,DAG和树变得更加简单。
蒂姆·威利斯克罗夫特

3
@JustinC-您的主张“学位持有者倾向于以任何理由为他们辩护,因为他们拥有学位”是我问这个问题的根本原因之一。我亲眼目睹了这种盲目的非理性防御。相反也成立。
P.Brian.Mackey 2011年

87

在40年中,我希望.NET和C#只是在过时的操作系统上堆积如山的一堆遗留代码。

但是计算机科学的基本概念将像40年前Shannon,von Neumann,Knuth,Dijkstra,Hoare以及其他人从形式逻辑和数学的基础上挖掘出来一样活跃。


28
+1-非常正确,但是40年后我不会再该死了。
P.Brian.Mackey 2011年

3
@ P.Brian.Mackey:我猜想C#将在10年后问世,而20年后将是更多的记忆,而从现在起30年后,它将需要灰白的旧代码考古学家。将自己绑定到给定的工具集的人过时了。我有幸读了1970年代末和1980年代初关于系统软件的旧论文。在那些软件系统中,很少有当今的雷达。可能是1或2(Unix和Lisp)。尽管今天的安装量更大,但我预计也会发生类似的情况。
保罗·内森

4
@ P.Brian.Mackey说您愿意做什么,但是如果我对此有发言权,我计划也要在40年后和80年后继续踢。
马修·沙利

2
@Paul Nathan:进一步说明一下,一些1930年代的编程基础就已经成立(例如,en.wikipedia.org / wiki / Church%E2%80%93Turing_thesis )。我想知道我们是否会(或如何)从现在开始80年后编写代码:)
phooji

3
@phooji(加载“ legacy-c-sharp-routines” ...):P
马克C

37

每天在工作中几乎都使用在学校学习的所有CS(*)。如果您想从事编程语言设计,搜索引擎优化,定量分析或任何类似领域的工作,我想您可以在没有相关学位的情况下完成这项工作,但是在工作中似乎需要学习很多东西。鉴于我的工作范围,我的文化程度不是很高;我的许多同事都拥有计算机科学博士学位,其中一些是CS教授。

获得学位对我来说非常值得;它以美元和满意度为自己付出了很多倍的代价。

也就是说,我完全理解您的观点。大多数对计算机编程的人的工作都不需要CS学位;例如,他们需要扎实的社区学院级实践编程背景,并能跟上当前的行业趋势。很好。您不需要拥有海洋生物学学位就能成功经营一家水族馆商店,而且我认为水族馆商店很棒。但它是非常难以得到在伍兹霍尔一个工作,如果所有你知道如何做的是提高金鱼。


(*)我拥有滑铁卢的应用数学和计算机科学学士学位。


4
我记得我的一位CS教授讲过这样的话:实际上只有2%的人会得到一份可以定期处理计算机科学原理的工作
红尘

15
@el fuser:的确;现在,一个有趣的问题也许与本次讨论密切相关,那就是高等教育的目的仅仅是为了特定工作的培训吗?我不这么认为。大学不是职业学校;他们的功能是通过研究创造知识,并使学生接触该知识领域。在我看来,这可能会给学生带来工作技能,但这只是副作用,而不是目标。在滑铁卢,我们明确地告诉我们,我们将学习理论,而不是实践。
埃里克·利珀特

1
通常,无论在何种计划下,在大学环境下进行原始研究的创建都很少发生在被称为单身汉计划的培训期之前。研究是在此之前进行的,但是通常只对真正的新材料进行研究,供硕士或博士课程的人员使用。换句话说,您通常被引导远离发现,而转向对已知信息的某种增强。本科研究更多地是关于研究过程,而不是任何特定知识体系的增长。私人研究有一个不同的目标。
JustinC 2011年

1
最好的工作不再需要学位的那一天是大学不再有学生支持他们的课程的那一天。
P.Brian.Mackey 2011年

安德斯多久使用一次;)
马修·怀特

22

这很重要,因为技术并不是一成不变的。计算机科学是所有数字技术的基础。大多数自学成才的程序员只能坚持一个技术周期,因为他们缺乏基本的范式来应对重大的范式转换。当然,该规则也有例外,但是计算机科学的坚实基础极大地增加了在重大范式转变中幸存的几率。


4
在我读了Coders At Work之前,我不知道是什么小手笔。我猜你已经经历了一两次范式的转变,并且是从经验中讲出来的。:)
Dave Neeley

3
我不同意。可以很容易地访问在线教授基本概念的资源(并且获得能够自己找到它们的能力是有回报的)。例如,academicearth.org / subjects / computer-science是一个很好的起点。有关更新的建筑模式的详细信息可免费研究,请参阅chromium.org/developers/design-documents/…。通常,在线免费提供的材料比当地大学的期望要好得多,而且更新得多。
Evan Plaice

13
我认为您已经完全倒退了。程序员永远不会完成学习。自学成才的程序员已经证明了他们拥有获取知识的能力,无需进行正式的设置,外部施加的截止日期等,而这正是人们生存于市场变化中所需要的。

2
(续)如果您在谈论软件范式转换...什么是范式转换?OOP并不完全是新的,函数式编程也不是。数据库已经存在很长时间了。浮点数自1985年以来就已标准化(IEEE 754)。我看到的唯一重大转变是向分布式处理系统(可扩展,可扩展的大型网络系统以及利用许多核心硬件平台的程序)的转变,以及向标准化国际字符集(UTF-8)的转变;两者都没有真正包含在compsci中。
Evan Plaice

2
@Mud和Evan:我想您错过了我发帖的“当然,有例外的情况”部分。我假设你们俩都是年轻且无拘束的。随着年龄的增长,这种动态将会改变。我进入该领域已有三十多年了。我已经看到许多自学成才的程序员在养育家庭的压力逐渐消失之后,自己学习基本原理的时间接近于零。当你们俩到达40岁的时候我很想有这个相同的对话
位旋弄

14

这取决于您想做什么。如果您的目标主要是在大型企业中编写业务软件,而业务问题和实际复杂性管理问题则是困难的部分,那么,对,CS学位不会有太大帮助。但是,如果您的目标是对主要困难在于技术方面的东西进行编程,那么CS学位会更有用。(尽管我没有CS学位,所以我这么说很伪善,所以可以随意添加“或在CS学科中自学”。)

我敢肯定,那里有很多程序员都擅长管理复杂性,编写大型程序并解决常见的业务问题,但是如果您要求他们编写内存分配器,并行库或程序库,那绝对是徒劳的。集合库,操作系统或编译器等。我敢肯定相反的情况也存在。两者都有自己的位置,值得尊重,但CS学位在技术方面有很大帮助。


为什么?无论问题的性质如何,CS都是关于解决复杂问题的。即使您根本不编写任何程序,CS也应很有用-它是被遗忘但仍必不可少的控制论的后代。
SK-logic

12

我认为CS学位并不是一个人是一个好的软件开发人员的绝对指标。实际上,我的职业生涯是从拥有数学学位的程序员开始的,但是具有强烈的CS偏见(数学和CS都集成在我的学习计划中)。总的来说,我认为这很重要有两个原因。

1-因为工程师不是招聘的前端

人力资源部的人。当我想象许多人翻白眼时,我说“谢谢你!” 更重要的是,您让工程师制造东西(或破坏东西),还是让他们对1000份简历进行分类并进行1000份面试?

因此,我们有人力资源人员和人力资源人员筛选候选人,直到我们到达可以由工程师筛选的关键人员为止。人力资源人员逐渐了解到,拥有CS学位是一个非常有力的指标,表明应聘者对开发软件有所了解。希望他们也知道编写软件20年可以很好地表明候选人可以编写软件。

2-因为拥有某种有关学习CS的系统总比没有好

CS是一个广阔的领域,有很多要知道的地方。而且它一直在变化。这些天,我可以肯定地说,本科中75%的课程与我的职业无关。而且我老师5年前的课程正在迅速贬值。但是当我刚开始的时候,我很高兴自己在一家大机构里教给我一些有关计算机组织,网络,良好的软件工程过程,面向对象的设计,编译器以及当前可销售的主要编程语言的语法/语义的知识。

我很高兴在这样的环境中,当书本/网站/笔记本项目本来就不那么明显时,有人要求我向他们解释事情。

我很高兴能够进入一个实验室,而计算机健康和SDE并不是我的问题-我或多或少可以锁定并专注于问题的一小部分,而不必修理解决问题所需的所有工具问题。

尽管这些课程并未明确教授良好的沟通技巧,但我认为,只有通过团队合作,您才能真正了解到这一点,这是许多提供CS学位的领先机构的重要组成部分。

附有频繁反馈(即成绩和考试)的时间表,可以让我知道我是否真的了解自己所教的内容。

在我看来,这些东西合起来比任何一本关于该主题的书都值钱,但这当然不是一无所有。我当然不介意看到高等院校的进步,而且我认为,毕业10年后,您最初获得的学位并不比您以后所做的工作重要。


12

对我来说,原因是我知道他们已经完成了一些粗略的课程,并且没有放弃。一些课程,例如编译器,数据结构,离散数学(和其他课程),往往使很多人脱离CS程序。拥有CS学位意味着您辛勤工作并付出了代价(漫长的夜晚,使程序开始工作),而不是出门在外。


+1-大声笑,我对此不敢争论。虽然,我喜欢离散数学。有一位伟大的教授,他给Yoda留下了很多印象。
P.Brian.Mackey 2011年

10

对我来说,这是心态问题。

您的心态定义了如何解决给定的问题,并允许您考虑比未接受过概念培训的机会更多的机会。

一个典型的例子是“旅行推销员”问题,您知道它1)对于常规版本而言是NP完全的,因此您必须尝试所有可能性,但2)如果您对该问题有更多了解,则可以在一定的限制,或者说您知道AC总是比AB + BC长(这对距离而言是正确的,但对价格而言则不然),从而使您可以在更短的时间内解决它。

另一个例子是数值分析,您需要知道,为了最大程度地减少数值误差,您必须采用不同于数学上直接的方法进行计算。这需要理论知识,除非被您明确地咬了一下,否则不太可能在学习中掌握。


9

真?哇。

因此,您告诉我C#和OOP技能已经足够,您可以设计自己的算法来进行随机排序,并解读如何处理现实生活中的NP完整问题的细微差别?

C#和OOP很好,但是如果您想做任何非平凡的逻辑设计,那么您就需要计算机科学的基础知识。

杜德(Dude),如果您的数据结构或算法技能达不到要求,您甚至都不知道要使用哪个C#容器。

现在让我们长大。


23
容易,老虎。
whatsisname 2011年

23
“设计您自己的用于随机排序的算法,并解读如何处理现实生活中的NP完整问题的细微差别”。 /
sarcasm

4
我的意思是,与我一起工作或过去一起工作的95%的人花了将近0的时间来设计算法。我花了大部分时间使代码更加简洁和易于阅读。在“细微差别”上花费的时间很少。实际上,我会发现花一点时间至少在白板上整理工作流很有意思……我只是自己做一些事情。您是否定期与同事讨论NP?在需要编写自定义排序而不是实现功能性编程语言的地方,您从事什么工作?
P.Brian.Mackey 2011年

3
@ P.Brian.Mackey:软件开发是一个新兴行业。有多少软件开发人员在您的组织中工作超过50年?随着软件开发人员的年龄增长,CS学位可能意味着拥有工作和失业之间的区别。当我目前拥有计算机科学的本科和研究生学位时,我在七十年代后期从海军和国防部技术学校获得了该领域的初始培训。我所服务的所有那些在离开军队后都不想完成CS学位的人都不再在现场。
比特币2011年

7
为什么每个人似乎都盲目地接受这样的假设,即要求正规的大学CS课程必须具有任何CS概念知识?也许这是他们演绎推理的失败。我想他们需要更多的CS课程。
2011年

6

我想您当时真的并没有太在意该学位,只是接受了您所需要的并离开了,或者去了一家将CS专业视为“编码员”而不是“程序员”的学校。另外,我最好/最喜欢的“ CS”课程中的一些-至少在我的大学中,是电气工程系的。我对各种体系结构和样式的了解是如此重要,而我的学位也为“受控”环境提供了便利。

不仅是算法和绒毛的类:

  • 编译器
  • 操作系统
  • VHDL /嵌入式系统
  • 组装和微控制器
  • 软件工程

最后是一门让我望尘莫及的课程,就是算法和数据结构-人工智能。在大学学习过程中,有些事情会大大加快,我认为以后学到的东西对以后的工作非常有价值。


您对“编码器”和“编程器”的定义是什么?对我来说,这些可以相同,并且与“计算机科学家”相反。
Mark C

编码人员只是编写代码,不必考虑适用于制作更好代码的不同设计范例或思维过程。程序员实际上是在考虑他们编写的代码,并从上至下的角度而不是自下而上的代码优先的角度来对待它。
Jeff Langemeier 2011年

您对“代码猴子”和“程序员”的定义是什么?程序员可以考虑解决代码金钱无法解决的问题的方法……
Coyote21 2011年

激情不是学位授予的。这只是你是谁的一部分。
P.Brian.Mackey 2011年

@ P.Brian有时候,即使您的热情授予学位,并因获得该学位而进一步激发,这种情况也会发生。
Jeff Langemeier 2011年

4

我的观点是,除非您申请“计算机科学”职位,否则任何暗示着重于计算机技能的学位都差不多。

实际上,我认识的许多程序员都拥有完全不同的学科的学位。我认识的最好的程序员都拥有土木工程,语言学,经济学和金融学学位。

最后,一旦您有了一定的经验,您的学位将成为招聘人员的及格测试。就是说,除非您是从一所令人印象深刻的学校或一个研究生学位那里获得的,否则您所学专业的无关紧要。


最好的程序员之一是专门在Excel / VBA和R中工作的经济学家。他在excel中做过一些令人惊奇的事情。
萨尔

@sal在Excel和R中编写东西不需要CS学历。编写Excel或R最有可能。
Alnitak

@alnitak-编写Excel或R也不要求具有CS学历。那是一种我的反应和萨尔的点的
JohnFx

@JohnFX:我以拉丁荣誉的身份从美国排名前20的CS计划中毕业,而且凭单凭个人资格仍然可以使我脱颖而出(我还持有另一所知名学校的MSCS学位)。我刚从高中毕业时就开始从事该领域的工作,当时是一名计算机操作员和程序员。我从美国海军和国家安全局接受了最初的计算机系统和软件开发培训。因此,我在没有BSCS的领域工作了很多年。我只能说的是,当我完成BSCS时,就像从天而降。
比特币2011年

@ bit-twiddler-是为了支持还是反驳我的答案?似乎支持我最后的断言,即是否拥有研究生或知名大学学位至关重要。
JohnFx 2011年

4

对我和我的许多同事而言,这还不是(我们都没有CS学位)


3

好那那怎么办

如果您已完成以下主题:

计算机架构与组织

b。软件工程

数据库管理系统

d。基本电子

e。基本数字电子电路

f。微处理器

g。编译器设计

您是否认为以上所有内容只是为了形式。.请记住以上几点使“好程序员”成为“优秀程序员”。

通过这篇文章了解电气和电子学科的重要性


3

我拥有计算机科学学位。对于开门,找工作来说很棒。就帮助我在C#.NET编程的专业领域(即使不是整个美国如果不是整个世界上最受欢迎的OS,我在该领域中最受欢迎的平台和语言),它几乎没有用。

70%以上的代码是用C编写的(因为嵌入式设备比高级应用程序还要多)。根据诸如骰子或TIOBE索引之类的热门职位搜索,Java是企业最流行的编程语言(因为Unix / Linux后端服务器比Windows服务器更多。)智能手机和平板电脑(未来)运行的是Linux或Mac OS而非Windows的其他变体,并且只能使用C#或.NET编程。

在家看路由器,看手机,看车内的电脑,看微波在家里,家庭空调系统内的控制器,电话内以及工作传真和打印机/扫描器。查看计算机化设备的数量(超过Windows系统的数量)。

您认为它们是用C#编程的吗?

如果您真的相信.NET或C#是世界上最受欢迎的平台,则可能要回到CS学校并要求退款。

您为什么认为这对您作为职业生涯的程序员有帮助(除了喷出prims算法外,还给某些面试官留下了深刻的印象)?

也许因为编程要比做基本的开发动态网页和企业应用程序多得多?为此,您甚至不需要BS学士学位,就可以获得AA知识-我知道,因为我从获得AA学位开始了编程生涯,然后慢慢地但一定会获得CS学位,然后在毕业时就读于研究生院,同时全职从事​​开发人员的工作。

有嵌入式开发,有设备驱动程序开发,有操作系统开发,有算法开发,信号,通信,网络协议,数据库引擎开发,文件系统开发,分布式计算,编译器。不是研究,而是营利性组织的实际工作。除非有天赋,否则如果没有CS学位(有时甚至没有BS学位),通常也无法在任何这些工业领域中破解它。

获得CS学位并对此予以关注的人都知道这一点。你怎么不呢

在当今的世界适应中,敏捷的思维,强大的沟通能力,OO和基本的设计技能使开发人员能够编写出客户会接受的软件。

OO由于CS而应运而生。而且大多数认为自己进行面向对象的人甚至都做不到。只是向外看,看看软件的糟糕状态(特别是在Java和.NET中,更不用说PHP。)扎实的CS背景(或某种工程学的研究生学位)并不能保证对OO的100%良好的理解。和分析技能,但通常会有所帮助。在面向对象和分析技能方面,没有基本的CS背景的OTH通常是一个危险信号。我们在行业中有足够的经验证据来支持这种说法。

这些技能仅在CS程序中略过。

取决于CS程序和取决于学生。至少对我来说,我看到了很多有关设计,面向对象分析,商业工具和实践的好课程,我们与本地公司和实习,公司资助的项目和研究,技术写作等专业课程合而为一。抱歉,我无法关联或理解此声明。

在我看来,阅读Wrox撰写的500页C#书籍比4年来的com cici blaster课程提供了更多有用的技能。

同样,根据您所做的工作。即使在企业中,我也使用CS来实际修复或改进。所有这些都涉及建模,架构,分布式计算,安全性和高性能,高可用性和容错能力。我在CS中学到了所有这些东西。

没有什么错与使用Wrox的书得到一个特定的情境特定技术的技能。我自己做。但是我的CS背景为我提供了工作的背景。没有CS的背景,我所能做的就是编程,编码(这是我在职业生涯刚开始时只有AA学位时所能做的一切。)

许多人不同意。

令人惊讶的不是。

那么,为什么计算机科学学位很重要?

您认为谁会提出Google,hadoop,cassandra或高性能数据库引擎?您认为谁编写Windows OS内核?您认为应该为谁编程您用来进行C#开发的最受欢迎的工具。

我确定的一件事是,您用于进行C#开发的工具背后有一个CS专家。

是否需要CS学士学位取决于您从事的工作类型,要从事的工作类型以及能够胜任的工作类型。

企业和Web开发中有许多工作不需要CS学位。我同意。我也知道,编程领域比这两个领域要广泛得多,许多领域(实际上大多数领域)都需要CS或更高的学位。

您拥有CS学位,怎么不知道那是一个谜。


TIOBE是确定使用多少编程语言的废话。它是一种给定语言在互联网上的流行程度的衡量标准(根据参考文献的数量),而不是根据编写的代码行的数量。
Billy ONeal

由于LOC特定于语言,因此LOC与编程语言无关,因此不能用于衡量整个行业的编程语言使用情况。如果您意识到不可避免的偏见,那么互联网上语言搜索的流行可以部分代替使用的深度和兴趣(或缺乏使用率)... 就其本身而言,** TIOBE指数没有任何意义 -只有傻瓜才会认为相反;只有傻瓜才会认为就是我说明。
luis.espinal 2011年

除其他指标(例如求职和产品类型开发)外,它还有助于估算技术使用趋势。换句话说,它是有用的还是无用的,取决于您使用它的目的,使用方式以及将其与其他指标结合使用。
luis.espinal 2011年

我的观点是,您似乎正在使用该索引来声明有关编程语言使用的信息,而该语言并不是该索引所衡量的。当我说LoC编写时,我弄错了话,但是没有什么好方法可以说“我编写的代码量”。TIOBE是一场人气竞赛,在那场比赛中,只要Java是入门编程课程的基本要求,Java就会震惊所有人。(不是因为这意味着这些学生不知道别的,而是因为学生通常是响亮不是专业人士(即你真心地)。
比利·奥尼尔

1

我记得在我的CS课程中看到过一些非常有用的基础知识。在我的职业生涯中,瀑布过程及其步骤一直是我反复使用的方法,对敏捷进行了一些改动,在步骤中虽然步步虽然不那么严格,但是步骤相同。

解决问题的技能和各种算法启发式方法有时也会很有帮助。对于CS学位的间接好处,有话要说。例如,学习如何证明答案的正确性以表明为什么某件事是正确的,这只是我在大学期间提高的一些技能之一,但是我不确定在课程结束时这有多大好处。


1

我同意ThorbjørnRavn Andersen关于这种心态的观点。这是您通过良好的CS课程开发的主要内容。

从根本上讲,它可以理解数据结构和算法之类的东西。并不是说您不能独自学习,而是好的CS课程可以提供更好的曝光率。


还有只有计算机科学和计算机工程专业的人才能学习的其他科目,例如计算机组织和计算机体系结构。学习如何从顺序逻辑和组合逻辑构建计算机的方法使一名更好的软件开发人员受益匪浅,因为它可以使您深入了解计算机内部的实际情况。此外,第一个使用新处理器的程序员需要了解诸如分层内存和I / O,流水线,块集关联缓存,控制单元(微码和硬连线)以及标量和矢量处理之间的区别等概念。
比特商

与在一个真正的合格导师中真正重要的实验室相比,大学的CS研究如何提供更好的曝光率?
JustinC 2011年

@bit同意。是的,我的回答是很高兴。这样做是有原因的。
乔治·玛丽安

@justin我不太确定您要说什么。有多少程序员在实验室工作,更不用说有资格的指导者了?
乔治·玛丽安

@JustinC:人们可以在实验室(技术人员级别)学习事物的工作方式。人们将了解为什么事情在高级计算机组织和架构课程(工程师级别)中起作用。如果您购买了几本有关计算机体系结构和计算机组织的高等大学教科书,您将会明白我的意思。
比特商

1

写作

在企业软件开发中,能够编写代码和编写至关重要。我的意思是:编写电子邮件,错误报告,技术文档等。编写和编码都需要思路清晰和适当的表达方式。

在2位软件开发人员之间,我敢打赌,拥有一所扎实的大学拥有CS学历(强大的CS学历,以及人文要求的选修课)的人具有两种技能。(的确,这不是保证:人文学科的人可以是优秀的编码人员和顶级作家;很多CS毕业生都是无法写作的编码机,依此类推。)

我的一位导师声称他可以根据开发人员的读物来判断开发人员。原始帖子提到WROX书籍。我认为,具有CS学位的人更有可能找到这样的专业IT书籍并能够有效地使用它们。如果可以处理CLR,则可以处理“ Professional C#”。

数学

数学发展出逻辑,证明,严谨性等,其副作用是它有助于写作。尽管大多数企业IT不需要严格的数学技能,但拥有CS学位的人将在必要时拥有它。与没有生活,想知道您在学校错过了什么相比,这是一种更好的生活方式。


1

我想这真的取决于您所经历的CS程序的质量。我确实知道您的意思,我每天编写的大多数代码只是标准的VB.Net,从SQL Server获取数据,将其放在表单上,​​然后将其保存回数据库,并生成一些报告。洗涤,漂洗,重复。(有时很无聊)我所经历的CS程序除了涵盖理论和基础知识之外,还教授了很多实用的知识。我们涵盖了软件设计,数据库设计和项目管理等领域。学习编程语言是最简单的部分,创建软件系统的设计和方法是我从大学经验中学到的。我们获得了基于现实世界问题的项目,有时甚至为校园中的其他部门设计软件系统。

作为程序员,我们显然有能力自行学习,这是我们领域中的必要条件。我必须说,我很高兴参加了CS计划。我的教授们很棒,并且教了我很多。我的同学们很有趣,我们在计算机实验室度过了很多有趣的夜晚。说实话,我有点想念那些日子……


1

一切都是通过替代生活来实现的。

如果您跳过该学位课程,您可能将不得不以非常个人化的方式(也就是艰难的方式)来学习课程。缺乏学位并不意味着您会通过反复试验而走上更艰难的学习之路。但是,该学位保证您可以接触到别人以前必须在深夜,沮丧的编程课程以及通常“很难做到的事情”之前获得的知识。

真正优秀的人不会抛弃别人发现的真实事物,而是会挑战它,直到他们知道知识的局限性,然后再玩弄新获得的思想的“系统”,直到他们自己实现。它站在那些来过的人的肩膀上,无需重新发现它们,就可以解决过去多年的解决方案。

当然,拥有计算机科学学位的人并不总是更好的人选。有一些独特的人被带到了小溪,但是(出于某种奇怪的原因)拒绝从小溪中喝酒。


0

我今年21岁,刚完成CS本科课程。我觉得无论您有多出色的编程经验,如果您是CS毕业生,您都将接触到各个领域。因此,如果您想学习新的东西,即使无关紧要,也不要害怕去探索。如果您是技术或编程语言方面的专家,那就好。但是我认为您不会冒险,也不会愿意研究其他技术。这就是您如何弄脏自己的方法(也很快)。您不会认为您的探索将无关紧要,因为它不会帮助您赚钱。(您已经在CS UG中研究了许多不相关的内容;))。 毕业后对CS的热情使您成为软件专业人员。 有人同意吗?


1
您不能假设某人不会因为没有CS学位而对“研究其他技术”不感兴趣。这是一个谬论。
史蒂文·斯特里加

0

好吧,当我进入CS时,我以为哇,我真的很好,我不会在这里学习任何东西……五年后,我只学会了团队合作,还有一些东西从工程学上,我与只能编写代码的人以及可以在编写代码之前思考自己的工作的人分开,简而言之,它教会了我在甚至在文本编辑器或ide中键入单个字母之前都要进行思考的能力。


0

使用开源语言获得工作并不意味着下蹲。大多数公司是根据能力而不是资格来招聘的,而诸如PHP之类的语言则具有业余爱好,认为人们无需学习CS就可以拥有才华。如果您使用.Net语言找到工作,这是唯一的帮助,因为大多数业余爱好者不愿意花数千美元购买许可证,而只能在周末闲逛,因此寻找C#的第一份工作的人可能只会2-3年的经验。

当然,商业经验是真正有价值的,因为它证明了您在截止日期之前交付高质量代码的能力。

总之,它可以帮助您采访使用非开源语言的情况。


0

从大学或大学获得学位,意味着您已经学习了CS,并且对CS有一定的了解,这是现实世界中工作所需的一些基本知识,即使您必须自己学习其他知识。

此外,当IT招聘人员必须找到软件时。开发人员和500名申请人发送了他们的简历,必须面试其中的至少50位,并获得了您的简历学位,这对招聘人员和您的录用机会都有帮助。

(来自研究过HHRR的软件开发人员)


0

可能这并没有多大帮助,但是现在我学习了汇编和涉及到的所有知识,我感到自己是一名更完整的程序员,并且我相信当我读大学时,这种情况会再次发生。我的意思是,我主要使用C或VB,我不需要知道什么是等待状态才能执行程序,而只是知道代码背后发生的事情很棒!知识可以帮助您编写更好,更快和更可维护的代码。我认为计算机科学学位可以准确地提供编写出色代码所需的知识。


0

今天的软件工程是一门未应用数学的实验科学。

计算机科学学位强调算法,您每天的工作量涉及实现甚至使用新颖的算法和数据结构?

处理框架层和泄漏抽象涉及多少?有多少试图确定某个API实际执行的工作-而不是文档所暗示的?测试多少并决定如何测试?

就所有物理或化学学位而言,比记住Knuth更好的训练


0

这很重要,因为招聘人员有一个指标,表明您对应该做的事情并不完全一无所知,但这并不一定意味着您真的知道自己在做什么,或者您在技术上很方便。

拥有学位的才华横溢的人热爱自己的工作,并且是真正的优秀程序员,而且有学位的白痴是真正的不良程序员,甚至不了解某些基础知识。有没有学位的才华横溢的人可以开发任何东西(业务软件/编译器/操作系统),有没有学位的白痴不懂得如何正确使用哈希表的人。


0

完全正确,计算机科学学位没有多大关系;这就是为什么您唯一的选择应该是获得工程学位。

在面试具有不同背景的候选人时,对于那些没有学位的候选人来说,突出的一个特点是:缺乏技术交流技巧和缺乏纪律。这些是获得任何科学学位后学到的基本特征(我更愿意说拥有工程学学位)。

在大多数情况相同的情况下(单轮面试通常会提出“大约相等”的候选人),我会首先雇用具有工程学学位,计算机科学学位和无学位的人。但是,有一些方法可以使比较中的事情变得非常不平等,这样任何人都可以击败那些具有家谱学位的人,但这是一个单独的问题,不是吗?


-1

对于程序员来说……没什么(除了您所说的打开面试门)。

从事CS工作(研究,算法分析,形式语言理论和设计)。您不太可能在其他任何非基于数学的程序中学习这些东西。

//免责声明:我的学位是IT学位,所以我不得不回去参加所有其他课程才能在我的工作中完成。


-1

我拥有计算机相关学位。帮助我获得第一个计算机角色的事实是,三年级是IT管理员的工作岗位。我建议在教育中采用工作安置计划。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.