您应该在学校学过的东西,但当时没有注意[关闭]


42

这个问题使我认为还有一个更好的问题要问。

您在学校学到了什么,您当时并不在意,但是后来发现有用,或者您因为在学校学习而不得不在工作场所重新学习,但没有保留信息,而是需要它?(我的意思是与软件相关的工作。)

我认为这可能会帮助大学生确定在学校期间应该真正注意的一些内容。


16
我很遗憾没有花更多的时间学习口语(10-20年后才对我点击),但这与编程无关。
LennyProgrammers 2011年

Answers:


36

我刚离开学校时看到的大多数开发人员都没有OO开发经验。他们听说过,但是大多数事情只是在“上课”。

在学校,您会获得大量有关汽车和人的示例,这些示例可以放在OO框架中。这将教您多态性,重载之类的东西。而是“基本”的东西。知道这些事情以及它们如何工作是一件好事,但是我从来没有一个实际的例子。我认为向学生展示一些使用某些设计的真实场景非常重要。

我在大学里想念的另一件事是使用(或滥用)了可用的设计模式。我认为这些天最重要的模式应该在第一年末或第二年初引入。学生应该熟悉它们。

编写干净的代码是学校没有(足够)教的。我们可以把代码弄得一团糟,仍然得到A +。如果应用程序能够正常工作,那就很好。是座右铭。学生应该学习如何编写干净高质量的代码并因此而获得回报,这也意味着重构和使用他们学到的模式或最佳实践。

当然,那些渴望的学生会自己学习所有这些东西,但是其他没有那么渴望的学生却没有。这可能会缺乏动力,或者他们只是不知道在哪里或如何看。当为一所学校花很多钱时,我认为他们应该真正教您这种半高级的知识。

而且,对于大多数人来说,一些体面的(专业的)写作是一种技巧。太糟糕了,因为它在现实世界中非常重要。最重要的是能够用您的母语表达自己的意思。如果您不能用主要语言写清楚,则在公司中很难沟通。

我不知道您是否可以教这个年龄的人写作,他们应该已经熟悉这种技能。一个人可以重复在高中教的东西。也许教学生如何写评论和技术文档。我仍然发现很难编写技术文档,因为似乎没人知道怎么做,或者默认格式是什么。


1
这个答案不是针对OP,而是针对OP:它是对OP的补充:他们应该教给您什么更好/更深入的知识
davka

1
本科教育的目的是向学生介绍该领域的广度。专业是毕业生水平。我确实希望刚从大学毕业的候选人成为任何领域的专家。我希望最近的大学毕业生拥有一套全面的基础知识,可以跨越计算机组织和基本算法分析之间的差距。我不在乎候选人是否已经记住所有搜索和排序算法的渐近边界。我更喜欢可以确定真实代码段的渐近界限的候选人。
2011年

3
当(错误地)使用“学习”而不是“教”时,我是唯一会畏缩的人吗?
dr

1
@ dr-jan:感谢您指出。编辑。
2011年1

1
我认为,可以教严肃的软件写作的唯一方法是开设多年制课程,使自己对自己过去的错误有所了解。
保罗·内森

120

女孩们 您可能以为我在开玩笑,但我不是。

不要发疯或其他任何事情,您仍然需要学习学术知识。但是,您还需要花一些时间从周围的人那里了解人们。

其中包括一半的人类,他们与您和您的朋友有着完全不同的兴趣和态度,但是您仍然希望与之相处。


16
我希望我能给予更多支持。
5arx 2011年

3
花更多的时间与通常不喜欢电脑的人在一起是一件好事(tm)
Rob Allen

16
超过48个人对此表示赞同,只是默默地叹了口气。
乔治

否则称为“用户”。
加里·威洛比

61

我觉得我应该在统计上多投入42%的精力。


10
我的兄弟和我去年都告诉我们的母亲,我们希望我们能学习更多的统计数据。我是定量专家,他是医师。哦,我妈妈是一名
统计学

4
@davka:在测试中,尤其是在性能测试中,它经常出现。在数据分析中,我也有很多日子。
FrustratedWithFormsDesigner

4
@davka-我在一家数据驱动公司工作,良好的统计分析将有助于开发人员提出关于“为什么代码x优于代码y”或“是的”的发现,我可以证明如果您允许我投资2周来改进此功能,统计分析表明该速度将提高x%'。真正的目标是了解如何应用统计技术来设计实验。
wkl 2011年

3
我认为我应该有70 +/- 2%的统计数据。
Zachary K

10
60%的时间,每次都有效。

51

写作对我来说是最大的挑战之一。我认为这不仅限于开发人员。


堆栈溢出和博客对我帮助很大。
Svish

36

功能编程。当时似乎是一大堆括号,无济于事。现在,lambda表达式已被广泛使用,我不得不重新训练大脑以这种方式思考。在大学里,我只是想让LISP和Scheme尽可能地进入后视镜,并且永远不要回头。如果我对函数式编程的某些方面有多大用处,我会给予更多的关注。


9
+1。我坚信,对于一个不懂编程的人来说,函数式编程比命令式编程更容易学习,如果您知道函数式编程,就更容易学习命令式编程,如果您知道函数式编程,则很难学习。首先学习命令式编程。因此,它是有道理的,不仅教函数编程,但高科技IT 第一,也是最重要的不要让这么大的F-荷兰国际集团的交易出来呢!我喜欢 SICP的做法。直到进入数百页,才会出现第一个作业,您甚至没有注意到。
约尔格W¯¯米塔格

1
+1。在上大学的几年中,Scheme使我无法使用函数式范例,因为在上这门课程之前,我具有C和C ++的背景。我没有把它列为我认为应该引起更多注意的东西,因为在我大四的时候,我参加了语言课程并使用了SML,并且非常喜欢它,我也喜欢Lisp。可能仅仅是整个大学的经验产物,这使我更容易理解如何使用这些范例。我现在也在自学Scala,并且非常喜欢它。:D
wkl 2011年

1
我通常都同意(在学校中具有更多的功能),但无法证明根据您首先学习的风格来学习功能性编程会更容易或更难。
凯文

34

常用表达。我清楚地记得在大学里把他们赶走了。他们是工作必不可少的。


2
但是,仅可将正则表达式用作最后一种情况
billy.bob 2011年

是! 我记得当时曾想过我有多讨厌它...在课堂上学到了它,并从脑海中删除了它,直到几年后再次需要它。然后我在诅咒自己,因为我不得不重新学习它。
宝马

4
@ m.edmondson,正则表达式非常适合简单的任务。如果在代码中使用它们,可能会做错事情(毕竟,解析组合器要好得多),但是对于在文本编辑器中进行典型的搜索和替换来说,它们就很好了。
SK-logic

3
正则表达式是在命令行上以及在强大的编辑器(如vim或emacs)中使用的好工具。不仅用于代码。
Stephen Paulger 2011年

1
@ m.edmonson,无-正则表达式应选择梦幻般的工具第一!对于那些适用他们的情况-知道什么时候不需要才是需要经验的地方。

33

我最喜欢的答案(统计数据)已记录下来,因此我将给出第二个我最喜欢的答案。Big-O表示法,并且了解各种关键算法的效率。对我来说,它不如统计数据更像是“秘密武器”,但它仍然非常有价值。


2
也许我只是写的不够复杂,但是我唯一一次必须知道Big O是在一家高端科技公司接受采访时。因此,尽管20年前我学会了它,但由于我不使用,但每10年左右使用一次,所以我不记得了。
Bill Leeper'3

2
@ bill-leeper:我的经验是,Big-O并不是您每天都在使用的东西,但是当您知道时,它常常会帮助您找出一个自己不知道的问题,或者否则就不会知道了。如果您不知道,您将永远不会有这些见解,也不知道您缺少什么。
btilly 2011年

1
@ bill,big-O只是一种形式化的说法,当您需要扩展时,您需要小心放置在另一个循环上的循环数。大多数程序员无需知道正式名称就能以一种或另一种方式学习。

23

我希望我14岁那年能听老师讲给我听的东西。不幸的是,我无法告诉你那是什么,因为我没有听。


21

必须是有限语言和自动机理论的课程。

认为这太理论化了,直到我的工作要求我从头开始做一个领域特定的语言编译器。


4
哇 你到底在干什么 ?如果您不介意我问=)
fouronnes 2011年

1
@otibom:我从事半导体工作,它具有自己的领域特定语言,并且具有相当严格的性能要求。
Fanatic23 2011年


17
  • 人工智能/数据挖掘-上了课,很无聊,几年后,我自己学习了诸如集体智慧之类的话题。大数据集分析对我的工作和以前的工作很重要。
  • 数据库理论/设计-再次上课,无聊,所以我一直在学习有关数据库的知识
  • 只是一般的高级数学和有趣的数学技术-我参加了4个微积分课,线性代数,统计,概率,离散...但我觉得我也应该这样做:
    • 数值方法
    • 先进的统计方法,甚至是马尔可夫链之类的东西,再次与大数据集分析有关
  • 人机交互-在学校里,我觉得这对我的工作没有任何帮助(我喜欢低水平工作或在幕后工作),但在我曾经做过的任何工作中,可用性有时是关注的焦点。
  • 第二语言-我一直对语言有天赋,但是在大学里我没有语言,所以我很难尝试自学日语。

13

技术写作。我花费大量时间来撰写需求,与客户和同事沟通。这是我在大学里修过1个学分时的课程。在我的职业生涯中唯一真正帮助过的课程是另外一个1学时的课程。那是在C编程中。剩下的虽然很有趣,并且可能帮助了我的整体分析技能,但这并没有真正给我的职业带来直接好处。

当然,我20年前上学了,C被认为是电气工程系的佼佼者。CS人员正在使用Lisp和C ++做一些事情,但可能还不如我希望今天的毕业生所进行的OO那么多。


11

设计文件

我一直以为是其他人来创建这些东西,或者它们只是简单的文档。它们一点都不简单,我的团队足够小,可以自己编写设计文档。


如果我不擅长,别人会写它们,这就是我喜欢的方式。
凯文

10

第二外语。以我为例。在我周围的空间中,有许多书籍,资源以及更多使用该特定语言的书籍。


@FrustratedWithFormsDesigner现在是,但是当我还是个孩子的时候... :)
lfx 2011年

我亲自学习过法语和德语,实际上在德国呆了一段时间。这是每个人都应该经历的。

12
真?俄语中与编程相关的资源?我是说俄语的母语,但是当我搜索编程方面的东西时,几乎不会使用它。大多数情况下,在Google中输入英文查询会得到一个答案。另外,俄语的技术书籍通常都是英文的非常糟糕的翻译。
Dima

@Dima,如今不知道什么情况,但是当我在拼贴和上学时,每个老师都这么说。
lfx 2011年

3
@FrustratedWithFormsDesigner:我相信。俄语中肯定有很多与数学相关的材料。但是,如果您正在谈论与计算机相关的主题,那么最好还是会英语。
迪马

8

从CS方面来看:

  • 用户界面设计
  • 测试中
  • 版本控制
  • 并发

从所有类别中:

  • 技术写作
  • 言语交际
  • 时间估算技巧

+1用于测试和版本控制。认真地,我们听到很多事情,测试非常重要……从来没有真正学会如何做……(那不是我们的错。我们只是对此一无所知)
Svish

7

矢量数学和微积分。我有他们,但是我的教授却很糟糕,实际上并没有教授这些科目。但是,作为从事图形编程工作的人,更好的矢量数学基础会有所帮助。


7

显然,历史与文学。问题常常是,学校没有使这些变得有趣。


当以家庭学习者的身份学习这些内容时,他们会变得更加有趣。
马修·罗达图斯

6

电子产品

我在学校没有太多与软件有关的东西。啊-信息学,但我取消了。:)但是稍后学习很容易。而电子产品,我常常不明白。微控制器,PWM,GPIO-wtf?我希望我能理解这些东西。


我上了(相当于欧盟的)高中就读了电子学,因为那里没有“纯粹的” IT选择。直到今天我仍然很高兴,我不仅知道如何使用计算机及其外围硬件,而且还知道它们的工作方式。
Vincent Vancalbergh 2011年

5

分布式网络/计算。编程不是挑战,但是当前体系结构中的前提条件是对分布式概念的深入了解。

提供了详细的课程作为选修课,但必须在该课程和AI之间进行选择:因此,这并不是真正的遗憾。


5

设计模式:呈现它们的方式实际上并没有告诉您它们有多有用,因为从那时起,我已经阅读了几本关于它们的书,并认为它们非常有用。


总体来说,这使我对编程培训感到困惑,我们可以解释如何进行而不是为什么这样做。而且没有好的实践例子。这就是为什么我们要使用疲倦的技术来解决这个问题,他们选择了他们遇到的第一个会在没有知识的情况下工作的人,以告诉其他技术对于这个特定问题更好。
HLGEM 2011年

4

Unix,Shellscripting,C。在学校有机会很好地学习它,但后来不得不这样做。


4

非计算机科学的东西:
我个人希望我能像当地大多数普通人一样拥有母语。我的意思是说,大多数人出生时都会讲一种主要语言,也许以后又选另一种。在这种情况下,其他语言通常不会损害本地语言,因为您已经具有涵盖语音,写作和听力的坚实基础。我长大后会同时说,写和听三种不同的语言。即使我在学校和大学的语言课上总是表现出色,但我希望我能流利地使用一种语言。这导致我在制定响应之前必须三思而后行。有人注意到了这一点,并得出结论说我太害羞了(在某种程度上这是没有错的)。



4

我认为三个让我对计算机在软件执行中的操作方式有最深入了解的类(这种理解可以实现更佳的编程)是:

汇编语言操作系统编译器

可能很容易想到,除非您从事专门针对这些事情中的任何一项的职业,但是即使您是网络开发人员并且不直接利用这些基础知识,这些类也没有用。仍将对有效编码非常有帮助。


3

我希望我上过大约十二个班,但没有。通常不是CS。摄影,通用化学,更多作品!


3

这么多人在谈论文科,真是可笑:我是认知科学专业(哲学/ CompSci /解剖学)...最终以一门英语重的辅修转向哲学/ CompSci(我本可以获得文学学士学位,但并没有打扰我跳过的101”。

我将花一个星期的故事来告诉您我从CS同学那里获得的所有这些文科课程的废话。不管有六个逻辑类对我的编程所做的贡献都比任何微积分都多。不管我所有最好的AI课程都是哲学课程。不管我的英语课上有没有骗人的女孩。不,不,我是那些从事这些课程的不拘一格的装腔作势者。

振作起来。至少当有人看着您的简历时,不必解释自己的学历。


您能否解释一下“我最好的AI课程是哲学课程”是什么意思?
Mark C

@马克:“认知科学”,这是我原来的专业,基本上没有什么,但 AI,并在很大程度上由理念。有两种哲学:分析哲学和大陆哲学。所有愚蠢的狗屎都是大陆性的。分析是逻辑,齿轮。像这样的科学,语言学和狗屎。
Satanicpuppy 2011年

+1:我本人是哲学专业的学生,​​上了一门名为“心灵哲学”的课程。该课程基本上专门用于图灵机。我的哲学顾问是本科生的CS专业,而我的CS顾问实际上拥有哲学博士学位。
Morgan Herlocker 2011年

+1:“您不必解释自己的学历”。我当时在想,美国/英国的情况有所不同...我确切地知道您的意思。
Raveline'3

3

二次方程和三角函数。

对于传统工程学科而言,在编写软件中非常重要。


不计算...。由于大多数优秀的程序员都是工程师,所以为什么当大量的了解数学,物理和计算的工程师时,却觉得自己缺乏基本的算术技能编写用于工程学科的软件?
Ben Voigt

@本 信不信由你...很多人都设法进入软件开发,并且没有经过正式的培训。这可能在“您的时间”之前。我是一个。。我设法学习了它,但是如果我在学校里注意的话,它会变得容易得多。
AngryITguy 2011年

以防万一,我提倡工程软件由未经软件开发培训的工程师编写。如果您受过逻辑思维的训练,那么软件工程也不难。如果OHOH缺乏二次方程式这样的基本数学技能,则OTOH将自动学习解决工程问题,这几乎是不可能的。
Ben Voigt

@ben。那些缺乏“基础数学”技能的人现在被称为社交媒体顾问,比工程师赚得多得多。
AngryITguy

@guilio:敬请谅解。顶部有几个工程师发了大笔钱(我们通常称他们为“发明家”,但他们使用工程技术来设计产品)。还有一小部分最受追捧的媒体顾问。然后将其余的称职的工程师,不称职的工程师和行之有效的媒体顾问混在一起。而且,他们所拥有的全部学位都比拥有数学学位的普通大学毕业生高得多,数学学位可以教下一代工程师二次方程式。
Ben Voigt


1

CS / Math:更多逻辑,代数,范畴论。更基础,更少应用的东西:相反地,如果您对基础知识了解得透彻,那么对应用东西的了解就容易得多,并且更有成果。

(我的统计数据为A,但是将其与实际的编程需求联系起来花了很长时间,我忘记了很多。)

“人文”:自然语言,写作,表达,理解和被理解。除非您加入一个由2-3个以上的黑客同伴组成的团队,即所谓的“现实生活”,否则它似乎并不重要。


1

计算机图形学(opengl / directx中的3d渲染)

老实说,我对此很感兴趣,但由于忙碌,我无法投入想要的时间。它变成了琐事而不是业余爱好。我想我可能不得不去找一本书,以使我再次对它感兴趣。

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.