如何在没有CS学位的情况下成为一名成功的程序员[关闭]


46

免责声明(请先阅读,然后再回答):

我已经看到了许多与我想问的问题类似的问题,因此这里有一些类似的问题。

恕我直言,它们既不完全是我要问的,也不是我希望的那样彻底(我不是要总结以下问题的答案,也不是要I毁提问者,我只是想成为更加全面):

CS学位可以使年长的程序员受益吗?

https://softwareengineering.stackexchange.com/questions/80024/importance-of-certifications-for-java-programmer-without-bs-degree

https://softwareengineering.stackexchange.com/questions/81591/in-the-absense-of-a-cs-degree-how-can-i-fill-in-the-gaps-so-to-speak

申请发展工作时,CS学位的重要性吗?

让我清楚一点,我不是在问以下问题:

  • 如何从零开始教自己编程(没有CS学位)
  • 如何将自己推销为优秀的软件开发人员(未获得CS学位)
  • 如何获得作为软件开发人员的高薪工作(没有CS学位)

一些上下文:

既然我已经放弃了免责声明,那么让我从我作为软件开发人员的经历的简短历史开始,充实我的问题。

首先,我非常幸运。我得到了很多工作机会(几个繁重的后端PHP / MySQL项目,以及XAML / C#中的几个WP7应用程序),通过这些工作,我真正了解了有关软件开发的所有知识。我所从事的几乎所有软件开发工作都是我没有资格应聘的工作(在聘用我之前,我已经向雇主明确说明了这些工作)。我不想在不必要的时候给自己以荣誉,但是我想说,完美的谦卑免除了谦虚

在我从事的几乎每一项开发工作中,我都超出了雇主的期望,并被证明是宝贵的资产。当然也有例外1。但是我的意思是我很聪明,能够自学成才,以取得成功。每做一份工作,我的压力就会越来越大。

我参加了华盛顿大学西雅图分校的工作,目前我已经四年级,还剩两年,正在学习数学学位。在我所从事的各种工作中(如果需要这份清单,请参阅我的简历),我还以全日制学生的身份上学。

当我想大多数开发商会同意,学习典型的普通版本科课程,包括入门 编程课程ABSOLUTELY就相形见绌了与编写实际的代码,建立比较真实的2种产品,有工作真棒人,并积极影响的生活用户3

所以...随着事情的发展...我花了更多的时间和精力在工作上,而不是专注于学习。有时我的表现非常糟糕,但是在大多数情况下,我都能保持自己的成绩。

然而,计算机科学课程在威斯康星大学是非常非常非常非常有竞争力。

因此,当我被程序拒绝时,这不足为奇。两次。具有讽刺意味的是,尽管我通过电子邮件收到了始终礼貌,令人沮丧的拒绝通知,但在同一个半小时的窗口中,我从亚马逊接到了一个电话,为我提供了暑期实习4作为SDE。

当我环顾我这个年龄21岁的其他人时,他们在软件开发中的目标与我相同。我发现自己对自己的位置,所学的知识,身份以及所处的环境感觉很好我可以。当然,那里有21岁的年轻人比我自己要聪明得多,我并不是要说我在人群中脱颖而出,只是我觉得自己在落后于普通同龄人的进步方面并不遥不可及。

我对自己在软件领域取得成功的能力充满信心。更重要的是,我对自己的能力和渴望充满信心,能够在我真正需要的时候继续成长,学习并尴尬地谦卑。

数学学位

我发现自己追求数学学位的唯一目的是拥有学位。有些人说我应该退学,现在就开始工作(因为我有机会去做),还有一些人说我应该真的完成我的学位。我已经下定决心要继续攻读学位,其原因与任何一个营地都会提出的原因完全不同,所以请不要在这件事上以一种或另一种方式鼓励我。考虑问题“关闭” :)

*深呼吸* ...抱歉,这比我预期的要长。

本质上,这是我的问题:

  • 如何客观地确定我现在可能会或可能会缺少的CS学位所学的领域,常识和其他技能?
  • 如何按最重要的顺序对这些技能进行排序?

  • 在接下来的两年中,最好的方法是补充我的教育以达到或超过顶级大学的CS本科水平来获得这些特性?

这是我已经采取的步骤:

  1. 询问开发社区(本文)
  2. 与经验丰富的开发人员一起寻求指导,这些开发人员与我有着相似的职业道路
  3. 定义短期和长期的“学习”目标以及随后的大纲概述学习主题
  4. 继续编写代码并从事我热衷的项目

如果您到此为止,您应该得到一个cookie :)非常感谢您的支持。

那么……开发社区,经验丰富的开发人员,与我同舟共济的同学,您将有何建议?

此外...请记住我的免责声明这篇文章什么我顶要求。

更新:

我意识到,对于我认为是问题的成功“答案”,我没有提供非常具体的参数。我认为这个问题非常模糊,可以提出许多“正确”的答案。

经过一段合理的时间后,我将选择适合以下属性的答案:

  • 解释答案背后的原因
  • 可以从某种程度的经验谈起(例如与我的鞋子聘用/互动或成为某人)
  • 简洁但透彻,给出广泛的原则,最好结合具体示例
  • 最后,考虑到满足上述条件所需的长度,请使其成为一个很好传达的答案,以使阅读愉快。我希望将来可能对此感兴趣的其他人也能从响应中获得乐趣并受到教育。

因此,有一些“正确”的参数。我认为它们很高,但我将它们设计为我所设想的“最佳”答案的轮廓。显然,如果有足够的时间,我将选择最匹配的响应作为“答案”。


(1)-我使用的是该网站的早期版本,尽管我们没有明确的 
      谈论它,我觉得我根本做得不好(这可能是 
      事实证明,他们此后完全改变了自己的网站)
(2)-首先,是的,这是一个真实的产品(即使我在Chrome中写这篇文章……),以及
      它踢屁股。其次,我是一名高中实习生,正在测试中,写了证明
      IE8某些新功能的概念代码...不久前。
(3)-在发布此信息时,我是编写此应用的开发人员,我不再
      负责它的代码库
(4)-我的实习期将从2012年6月开始,我将在网上商店工作 
      球队。

17
世界需要更多拥有数学学位的程序员。纳夫说。
Pieter B

1
心理学家和其他个人咨询或建议提供服务的市场必须巨大。我正在考虑更换工作....
Ingo 2012年

16
首先编辑此问题并将其切成两半。
JeffO 2012年

8
@PaulHazen一旦删除了非常冗长的背景和免责声明内容并提出了实际问题,您就会问三件事:如何确定没有CS学位的人所缺少的东西,如何获得所缺少的东西,以及如何确定丢失的优先级。重复的问题完全覆盖了所有三个问题。如果您不喜欢答案,请提供赏金:这就是他们的目的。

7
@PaulHazen或者,如果您对列出的问题(与之前的问题重复)感兴趣,请修改您的问题,以仅询问新问题。您的问题所拥有的信息过多(大多数信息可能对您遇到的问题而言是不必要的),因此应该配对以询问您所遇到的一个非常具体的问题,而其他问题尚未涵盖该问题。

Answers:


17

好的,我很想不回答您的问题,所以我在这里...


首先关于我的几件事


我今年26岁,多亏了我的父亲(数学家,现在是教授)(父亲btw),我从幼年开始就有机会在计算机周围工作。(早在1986年我出生时,尽管那不是当时最普遍的事情,但我们家里总是有一两个电脑)。话虽这么说,而且-显然是由于我好奇和数学倾向/解决问题的天性-不久之后我发现自己爱上了编程。首先是7-8岁的帕斯卡(Pascal),然后是几乎所有其他一切。

首先,我要说的是,在学校期间,我总是在与数学有关的任何事情上都表现出色,仅仅是因为我喜欢它,老实说,我可以轻松地效法父亲的榜样,也可以成为数学家。但是那没有发生。

发生的事情可能是(迄今为止)我一生中最大的错误:当一个爱代码的 15种以上的语言并编写了数千行代码(从编译器到微内核和Web)时,您会怎么称呼它?框架)突然间(在我的脑海中,原因仍然太晦涩难懂,但是对您的环境的一般影响,即使微妙的影响,也无法忽略不计)在18岁时决定从事医学事业?我猜是“错误”。

结果?5年后(23岁),以及在获得医学博士学位之前的1年(一直作为业余爱好继续从事个人开源程序设计项目),我认为自己已经受够了并决定退出。不仅是我非常讨厌这个新领域(医学),而且在整个情况下都有些不安,内心深处隐藏着一种永不满足的痒...(如果...会怎么样?)而且,我刚刚意识到我的爱好,虽然我认为很棒,但甚至没有想象成是一份真正的工作,不仅可以带来一些钱,还可以带给我很多,并使我个人保持快乐。因此,我决定退出。(=最好的选择,即使我迟到了,我也做过)。

所以,现在我在这里,曾经是一名医生(确切地说是神经衰弱的精神病医生,我很愚蠢!)正在申请CS学位(实际上是我3年级;而且,老实说,追求它是为了不致最终缺乏那些令人恐惧的典型资格 ……)和一个乐于助人的专业人士,从事我所钟爱的事情,而且绝对是我必须提供的最大课题。


一些观察(根据我自己的经验)


  • 编程是为数不多的领域,无论如何,真正好的领域总是可以找到自己的。这绝对不是典型的资格问题(老实说,如果我有一家公司并想招聘程序员,我可以在几分钟之内轻松判断出谁是好人,而不管他是否拥有学位)。

  • 成为一名优秀的程序员所需要的是:面向数学的智力(而不是数学本身)和热情 (这将使无休止的学习时间变得充实而不是负担;并且,即使我还没有意识到,也要信任)我本人一生都在研究有关该主题的大量材料,完全是我自己的)。正规教育是一件好事,但有点高估了。成功的核心要素是前两个。

  • 数学绝对是CS诞生的地方。但是CS不再只是数学了。我一直有很强的数学头脑,但我绝不是数学大师。老实说,在每天的编程中(除非您要构建图形引擎或过于本地化的东西),除了简单的算术(加法,减法,乘法,除法,模运算)和几件事之外,您几乎不需要其他任何东西关于数组。(许多人可能会与我不同意,也许是数学家或过于注重学术的程序员,但是绝对掌握微积分并不是成为一个好的程序员所必需的)。拥有良好的数学背景可能会对您有所帮助,但这并不是因为数学本身;而是因为 它仅基于这两个领域的共同点就可以帮助您:解决问题的能力。

  • 数学是一门科学(也是我所尊重的科学)。

  • 编程是一门艺术。(如果您坚持的话,还有一门应用科学))但请记住:一门艺术-这就是我一直对待它的方式。与所有艺术一样,它也无法教授。我可能会教您正式的表情方法,使您的平均水平更好,但这不会使您既不是达芬奇,也不是克里姆特。蒙娜丽莎(Mona Lisas)由达·芬西斯(Da Vincis)绘画,而不是受过良好教育的画家。出色的代码是由出色的代码艺术家编写的。技能和奉献精神很容易使正规教育失去平衡。


那么,要成为一个“真正的”优秀程序员又需要什么呢?


  • 聪明,出色的解决问题的能力以及对主题的热情(如果您没有,就别管它;平庸绝不是借口)
  • 很多时间专注于这个主题
  • 一直在学习('因为你永远不会一无所知;并注意:为什么'学习'必须与某种程度有关?我总是发现以自己的步调做事更加快乐... )
  • 一直在编写代码(无论您读过多少本书;您的编码水平直接等于您编写的代码量)
  • 再次,LOVE为主题(如果你不爱它够深,我的意思是真的喜欢它,所有的上述意愿迟早会不堪重负;对于我来说,编码为作业仍然像得到报酬.. (看电影:绝对荒谬,但简直很棒)

关于你的问题


  • 如何客观地确定我现在可能会或可能会缺少的CS学位所学的领域,常识和其他技能?

虽然,我必须真的知道数学学位包括哪些内容,但让我总结一下您最有可能失去CS学位的内容(因为课程/主题/等-受我大学的学习计划启发) :

  • 数字系统的逻辑设计(一些底层电路的东西和/或/ xor / etc-似乎不太相关,但仍然很有教育意义)
  • 计算机体系结构 (以及一些汇编代码;您很可能永远不会使用它,但是您无法确定它会在多大程度上影响您作为程序员的态度)
  • 数据结构 (从链表到复杂的树等;看起来似乎很简单,迟早需要这些方面的良好背景;使用不了解的现成解决方案并不是一个好的程序员会做)
  • 编译器 (是的,编译器!您可能会编写一个编译器吗?也许不会;但是除非您可以编写一个,否则您将永远不会真正知道它是如何工作的...)
  • 操作系统 (与上述相同)
  • 计算机网络
  • 人工智能和专家系统 (您很可能也不会在Prolog中进行编码;但是,它仍然可能成为塑造您的编码大脑并使其从根本不同的角度看待事物的事物之一)
  • 如何按最重要的顺序对这些技能进行排序?

知道在CS瞬息万变的领域中应该优先考虑的事情将永远是一场赌博-一种猜测游戏

了解您想做什么,并信任您的指示。当然,必须具有扎实的基础知识。但是您要研究的内容完全取决于您。另外,请仔细规划您的职业:如果您想被雇用,那么就选择目标并专心于此(例如,想被Google雇用并且不知道如何阅读简单的Python脚本,这可能是一种失败的情况之一) )。如果您是一个人(一家公司)自己创业,那么您就没有满足的“老板”了。只要选择最适合您的。

例如,如果您想做一些与网络相关的事情,我绝对建议您去:PHP / MySQL / HTML / CSS / JavaScript(+ jQuery / AJAX)。但这就是我。可能比PHP 更喜欢Ruby / Rails(或在将来看到更多)。

例如,我现在主要使用Objective-C / Cocoa进行编码。我会建议您继续这样做吗?当然不。那就是:除非您是Mac或想从事与Mac / iPhone相关的软件销售工作。如果您从事Windows开发,那么选择C#/ .NET Framework可能是您的最佳选择。(如果您想了解我的主要爱好,只需在我的StackOverflow配置文件中查看)

  • 在接下来的两年中,最好的方法是补充我的教育以达到或超过顶级大学的CS本科水平来获得这些特性?

大量学习(书籍,互联网,其他人的代码,等等)并编写尽可能多的代码。

嗯,并尝试以任何与代码相关的工作。(我最初是作为一名自由职业者开始工作的,这是一次非常宝贵的经验,只是为了看看现实世界中的情况如何)。


只是我的.2美分... :-)

旁注:我知道我的某些观点可能会引起争议,而且我敢肯定,会有很多人不同意我的观点。可以接受 但这并不会改变我看待事物的方式,尤其是我所爱的事物。


这正是我想要的。谢谢!几乎所有其他响应也都很好,几乎没有任何包含错误或无益的内容。我将更新问题,包括一小部分关于我为什么选择它的内容,以及指向博客文章的链接,该文章详细介绍了这些信息(之所以在我的博客上(而不是在Programmers上)做出这样的解释是由于篇幅已经很大,以及越来越多的相关主持人已经感到这个问题不适合该网站)。保持张贴。再次感谢。
Paul Hazen 2012年

@PaulHazen真的很受欢迎!很高兴为您提供帮助(如果我这样做的话)...(现在,关于我的回答的巨大长度...哎呀...系统自动将其识别为“社区Wiki”帖子,我正在尝试获取版主将其还原为初始状态:一个简单的-尽管经过了重新编辑-回答)
Dr.Kameleon 2012年

在meta(meta.programmers.stackexchange.com/questions/3513/…上方,我实际上是在鼓励他们将其移至更合适的目的地。根据官方常见问题解答,此问题不适用于此论坛。但是,观察程序员的实际使用情况,我觉得适合在这里。主持人可以决定最适合的地方。总结在移动它了我的想法:根据什么程序员来说应该是它不属于这里,但根据什么程序员它完全符合。
保罗·哈曾

@PaulHazen好吧,至少对我而言(尽管我绝不是SO方面的专家),这似乎绝对合适。
卡梅利恩博士(Dr.Kameleon)

是的,我只是举手示意。只要人们可以使用Google或堆栈交换至少找到答案,我就会很高兴。将来,有相同问题的人必须可以轻松发现这些内容。
Paul Hazen 2012年

18

如何客观地确定我现在可能会或可能会缺少的CS学位所学的领域,常识和其他技能?

浏览UW的CS部门的课程,借阅并浏览所需的阅读材料,查看以前的考试和实验室练习(作业)。如果您不知道如何解决该问题,那么您的知识就有漏洞。

如何按最重要的顺序对这些技能进行排序?

考虑一下您将来想做什么样的编程。如果您乐于构建网站和CRUD应用程序,似乎您已经具备了所需的全部知识。

CS教育进入,如果你是如何[分配]数据库,Web服务器,编译器和解释器,操作系统,网络协议等方面的工作有兴趣了解图片的引擎盖下,并有兴趣自己构建这样的系统。

在接下来的两年中,最好的方法是补充我的教育以达到或超过顶级大学的CS本科水平来获得这些特性?

我不知道。对我来说,这所大学的最大好处是:1)拓宽了视野(我忘记了在uni学到的90%的细节,但我记得其中的概念和想法),以及2)保持了内在的学习动机逐渐减弱:在朝着一个目标(考试,另一项考试等)努力直到毕业之前,保持动力更加容易。(此外,构建自我教育也不是一件容易的事。)

[添加:选择您想攻读CS计划的大学,选择您感兴趣的主题的课程,然后亲自完成课程设置:作业,考试等。大多数课程都会发布前几年的演讲幻灯片和作业/考试。]

忠告一点:不要放弃你的数学学位。任何有才华的人都可以自学编程,但是如果您希望从事CRUD /前端以外的应用程序,例如流体和机械模拟,计算机图形学,图像处理,识别和机器学习应用程序,数学将为您提供竞争优势。 (甚至是财务!)等

更新2 –经验[长]:我获得了EE教师的硕士学位:前两年是普通课程(物理,电气工程,模拟和数字电子学以及很多数学-线性代数;离散数学;实数,向量和复杂的应用分析。)这非常有价值,尤其是。EE和电子部分-它使我能够从事HW-SW混合项目,并且与HW设计师合作非常令人兴奋。我没有为硬件设计做任何贡献,但是我能够跟随硬件设计师“调试”他的原理图并提出明智的问题[我们不确定该错误是在软件还是硬件中-事实证明是在硬件中: -)]。

然后,线分支了,我选择了CS线。一些“细节”有助于树立概念(例如,手工“运行” Dijkstra算法)。我还以已经过时的摩托罗拉68000为例学习了有关CPU工作方式的详细信息(总线信号,解释总线图,执行等),但是从细节中学到的概念对于现代CPU而言也没有太大不同。

其他细节,特别是 SW的实现(例如,实现Dijkstra)对我来说(因为我在高中阶段已经非常擅长编码),这是毫无意义的调试工作,并为理解概念做出了贡献。

然后我参加了博士课程,在那里我必须参加必修课程。我对课程的选择感到失望,因为许多课程似乎更多是针对行业需求的(例如,使用Python进行科学数据分析-谢谢,我可以编程,而且我非常有能力自学- -再次涉及很多毫无意义的编码),而不是讲授基本概念(幸运的是,我开了有关离散优化,程序的静态分析和Promela形式分析的课程)。

因此,一些细节对于扎根概念很有用,而一些细节则是完全不必要的负担(另一个示例:对两台计算机之间的串行端口通信进行编程。那时我已经习惯于阅读和解释硬件规范,并通过寄存器对硬件进行编程,这很简单。太无聊了,也许我天真地假设不需要成为普通的CS工程师就应该如何阅读HW文档。

最后,总结:将自己带入许多不同的概念(高层次的想法),并为那些您要优先考虑并变得非常擅长的概念进行详细介绍。[您不可能在所有方面都非常出色!]


肯定是+1。尽管您忘记了90%的细节,您是否会说学习这些细节的经验才是根植于概念和想法的东西,还是花时间去学习更少的细节和更多的概念性/更高层次的想法会更有价值?
Paul Hazen 2012年

@PaulHazen看到新的编辑(从UPDATE2开始-它不适合注释字段;)
zvrba 2012年

非常肯定我目前正在采取的步骤。添加的部分非常宝贵。我觉得我想了解的细节的清单太长了,以至于无法理解,从历史上看,我在这方面存在一个范围界定问题。有没有一种很好的方法来查看行业,并确定对我感兴趣的主题中的哪些主题最有利于了解详细信息?还是您会说,只要我深入研究其中的一小部分,对我学到的内容并不重要?看来业界在这方面可能很难预测。
Paul Hazen 2012年

1
试图预测这个行业是一场失败的游戏(例如,我不确定有人会猜到Twitter(几乎是网络上的IRC克隆)将成为一种时尚。从长远来看,他们打算如何赚钱对我来说仍然是一个谜。您必须对要从事的工作做出积极的选择,并找出获得该工作所需的条件。怎么样?找到已经在目标行业工作的人,并与他们交谈。
zvrba 2012年

1
@Paul概念很重要,但细节(通常)不是必需的。您可以在需要时查找详细信息,但是您必须学习全局,才能知道该区域首先需要查找某些内容。
Donal Fellows 2012年

7

我面试并参加了许多刚从大学毕业的初级人才的招聘。我尚未根据他们从任何课程中学习的主题技能来雇用任何人。原因很简单:我遇到的任何CS程序(或任何其他程序)都没有教授与编程或软件开发有关的任何专业,商业水平的具体技能。能够提出复杂微分方程的模型和解决方案,并编写优化的专用排序算法可能具有学术和/或科学价值,但与通用软件开发无关。

那我要寻找什么?好吧,我希望一位大学毕业生能够完善学习艺术。毕竟,一所好大学应该教给学生什么。如何将一般问题分析并分解为可以解决的逻辑离散组件。查找,评估,组织和将知识和信息应用于解决方案的一种有条理的方法。

另外,我寻找的人知道,一群人一起工作和沟通,比他们个人的总和要有价值得多。这需要成熟和谦卑,以及给予和寻求帮助的能力。

因此,回到您的问题范围:虽然CS学位可能会增加您第一次面试大学的机会,但我发现这与您作为开发人员的成功或熟练程度几乎没有关系。我一直遵循“聘用态度,训练技能”的理念,并且回报颇丰。

我的建议:如果您感兴趣,继续学习数学学位。任何科学教育都能很好地为您服务,因此选择您最喜欢的一种,因为它是您最有可能擅长的一种。然后集中精力学习重要的事情:如何学习,如何分析和解决问题的解决方案。一种结构化的方式,如何与他人互动和合作,如何为自己和队友的交往承担领导和责任。剩下的只是技术和编码,即交易工具。这些,您可以并且将自行学习。学习并学习一些通用知识,例如流行的设计模式和建筑范式。开始编写程序进行练习。选择一些最新的语言和技术基础,但不要误以为它是 是您将学到的最后一本。工具和语言一直在变化,因此无论如何,软件开发都是一个不断学习的过程。


可以公平地说,从您的角度来看,在CS学位内几乎没有什么对自己成为成功的程序员有所帮助的?目前,我最喜欢您的答案,您肯定会碰到很多我想弄清楚和理解的事情。您能为招聘中的CS领域提供一些其他背景信息吗?我想招聘在操作系统上工作的应届毕业生的招聘人员可能与您有不同的看法(但是我对此可能完全错了)。感谢您花费的时间,这对您很有帮助
Paul Hazen 2012年

我在一家IT咨询公司工作,该公司在0-1年的工作经验中招聘了大量人才。对于OS开发商店(那里有几家?)不能满怀信心地回答,但我认为,如果他们很聪明的话,那里也有。很少有应届毕业生拥有足够的学科技能来在这方面具有竞争力,因此您会雇用自己的态度,潜力和学习能力。
pap

有趣。确实给了您“ +1”的机会,我确实喜欢您要说的话,但是您更准确地回答了以下问题:“我如何成功进入软件开发领域”宝贵的信息可以肯定,但我的兴趣是了解成功的程序员的属性,而不是了解可雇用程序员的属性(是的,显然,成功的程序员也可雇用,但并不总是相反)。
Paul Hazen 2012年

我不会雇用那些我认为不成功的人,或者具有成功的潜力和能力的人。所以对我来说,“可租”和“成功”是同一回事。如果有人以其他标准招聘,他们在发现人才方面是错的或不好的。无论哪种方式,可能都不是工作的好地方。但是,作为雇主的关键是要知道如何利用员工的潜力并将其转化为实际的成功。这是培训,指导和教练的结合,如果没有的话,雇用的人才也不重要。
pap

7

从本质上讲,这是我的问题:我如何客观地确定通过CS学位获得的学习领域,常识和其他技能?

答案1

如果您从学习中学到一些新知识。然后,您可以客观地说您是通过CS学位获得的。

A1。为什么

从概念上讲,CS学位是关于学习的。如果一个人从CS学位返回而没有净差,那么它的核心目标就无法实现。考试和课程工作是对所学知识的“官方”衡量。但是,个人理解(我学到了什么新东西吗?)应该是一个更好的客观指标。

A1。经历

我俩都在学术界,现在从事专业工作。我之所以选择计算机科学硕士学位是因为我想加深理解,并且对学习充满热情。

由于获得了计算机硕士学位,我的世界得以扩展。我的世界也从专业领域扩展了。

如何按最重要的顺序对这些技能进行排序?

答案2

重要的是相对谁在问这个问题,什么情况。如果它对于个人成长而言,那么这一切都很重要。如果是工业应用,那么诸如算法和良好的OOP /标准软件规范之类的东西就很重要。

A2。为什么

重要性的“范围”高度依赖于“上下文”。没有上下文,这些技能的优点就很难分类。

A2。经历

我发现从“大学”与“现场”获得的技能是不同的。大学中的“技能”更多是“理论”,而工业界则更多的是“实践”。因此,这种差异意味着技能的重要性确实排名不同。

在接下来的两年中,最好的方法是补充我的教育以达到或超过顶级大学的CS本科水平来获得这些特性?

答案3

将自己推向突破点,当您突破时,请再次打破自己。

我什么意思

如果您到达了一个您不理解的地步,那么您就伤了自己。不断学习,直到您了解为止。然后进一步推动,直到发现其他您不了解的内容(无限)

A3。为什么

如果您只学习并留在自己的疆界内,那么您只会“没事”。您不想只是“确定”。您想成为“最好的”。如果您不不断地超越自己的界限,那么您将无法发挥真正的潜力。

A3。经历

我将永远做一辈子的学生,我不会列举当前的技能,如果您好奇的话,您可以看一下我的个人资料。

我要说的一件事就是。我永远不会满足于目前的知识。我想飞得更高,看得更远,然后再走得更深。


肯定的好话,这引起了我的共鸣。如果您想知道为什么我现在还无法将任何响应标记为“正确”,请参阅更新。
Paul Hazen 2012年

和不错的更新。坚守信念,我不会忘记在时机成熟的时候标出答案。
Paul Hazen 2012年

1
您能整理您的答案吗?您有两个重复的节标题,每个节标题下方都有不同但相似的内容。
Paul Hazen 2012年

保罗您好,我不确定您希望我如何清理它。我想看起来确实有些混乱。每个子标题都与每个问题相关,即,每个“问题”都有一个“为什么”和“经验”来支持您在更新中所要求的答案。我很高兴在清晰度方面进行任何更改。
2013年

哦...那真让我感到困惑,您能增加标题还是使用**粗体**文本标记子标题?我认为这将有助于提高清晰度。
Paul Hazen 2012年

4

如何客观地确定我现在可能会或可能会缺少的CS学位所学的领域,常识和其他技能?

只需查看学位要求,然后查看每个课程的课程表即可。

如何按最重要的顺序对这些技能进行排序?

没有事后的见识,您就无法真正做到这一点。我想说大多数自学成才的程序员最缺少的是算法分析和设计。其余的可以拿起餐。

在接下来的两年中,最好的方法是补充我的教育以达到或超过顶级大学的CS本科水平来获得这些特性?

即使您没有被录取,您也可以经常从其他部门选修课程。我最喜欢的课程之一是航空工程的项目课程,在那儿我从事小型卫星的电子和固件开发工作。

您也可以购买所需班级使用的教科书。我做了几次这样的课程,我的时间表不适合我。另一个选择是MIT开放课件


这样一个经验丰富的用户,很惊讶您没有花时间阅读其他用户发布的答案,您的答案几乎与已经存在的答案相同。请仔细检查已有的答案,或者如果您认为答案有所不同,请帮我澄清一下。
Paul Hazen 2012年

我没有看到其他人推荐为选修课参加CS课,许多人没有意识到这是不允许的。其余的几乎重复是由于提出了一个庞大的多部分问题:-)
Karl Bielefeldt

抱歉,您是对的。没有其他人建议将CS课程作为选修课。虽然这是一个很好的建议,但肯定没有,但其他一些回答则更为详尽,并在余下的问题中更好地解决了这三个问题。请勿否定您提供的任何建议(我给您+1),我们将牢记这一点,由衷的感谢,并再次对我的错误表示歉意。
保罗·哈曾

3

您为什么认为CS学位对成为一名成功的程序员如此重要?

要成为一名成功的程序员,您需要具备以下条件:

  • 对编程的热情
  • 永无止境的对新技术知识的渴望
  • 以某种方式进入该行业

通常,CS学位将使您进入该行业,但是如果您对知识没有热情和渴望,那么您将遭受痛苦,并且您永远不会成为一名优秀的程序员。

看起来您已经进入该行业,并且肯定感觉您对知识既充满热情又渴望。

您要做的就是继续研究和学习并获得经验,而该行业将知道如何在没有学位的情况下欣赏您。

我所合作的人的例子

我团队中的一位软件开发人员拥有法律学位……几年后,她了解到她根本不喜欢法律,并且希望成为一名程序员。她没有找到程序员的工作(没有经验,没有学位),所以她修了6个月的计算机课程,然后才找到工作,从那时起她就是一个出色的开发人员。


尽管这是很棒的内容,但我觉得回答我的问题还没有达到预期的效果(这很可能是我措辞错误的错)。我并不坚信拥有CS学位会使一个人成为一名成功的程序员。我的问题更多是“在CS学位中教授的哪些主题确实有助于程序员的成功,以及我如何客观地确定如何衡量这些主题,以及如何充实/充实我现有的激情,饥饿感有关这些主题的知识和行业经验?” 您的回答肯定没有错。
Paul Hazen 2012年

2

恕我直言,没有编程作业(或销售作业或sysadmin作业等),只有解决问题的作业。我们雇用并付钱来解决问题,编写代码只是解决问题的一部分。是的,甚至销售也是解决问题的一种形式。因此,数学学位和CS学位同样可以解决问题。

从您的帖子中可以很明显地看出您正在获得很多经验/实习机会。大!不用担心毕业后找到工作。

尝试回答您的问题:

类?选择一些理论上的CS类,而不是代码编写类。查找一些非CS /数学类,例如。哲学将帮助您在人群中脱颖而出

优先事项?学习新事物(不仅仅是您已经知道的简单课程)

未来两年?与人交谈,学习,建立关系,寻找外部活动。(远离工作/学习的兴趣爱好/运动/休闲时间是了解申请人动机的一个线索。)

最后提示:尽快毕业。建立联系网络。唯一安全的工作是创建自己的工作。寻找可以创业的想法/机会。祝好运。


太好了,谢谢您的回复。我给出了“ +1”,但是我不能将其标记为答案,其他答案也充实了“ 为什么”的内容,并确定了客观确定学习目标的方法。这一切都不会否定您的回应,我谨记您的意见,这确实有帮助,因此再次感谢您。
保罗·哈曾

@PaulHazen-如果您想知道“为什么?” 然后选择一个哲学课:-)但是,认真的说,我做了4年的理论CS学位,没有C课程,因为“那是你可以教自己的东西”。为了减轻负担,我在一个学期选了一门小的哲学课,然后又做了一个。除了挑战之外,还有很多人和令人耳目一新的想法。您的问题清楚地表明,您具备任何非数学/ CS课堂所要求的写作技能。
jqa 2012年

1

首先,我要说的是,我很高兴您提出这个问题,因为多年来我一直在问自己这个问题。

我想到目前为止,我可以认为自己在该领域取得了一些成功。我有一些大学经验,并且希望最终完成计算机科学的大学教育,但是我这一生还没有获得学位。尽管有这个缺点,我在软件工程方面还是取得了很大的成功(持续了10年)。不过,我必须对你说实话,这不一定是一件容易的事(当然,我敢打赌,任何值得做的事通常都不是最简单的)。我还要说这仍然不是最简单的事情。有很多公司愿意给合适的人选一个机会,但是我已经与其他人接触,因为缺乏大学教育的“批准书”会使我不知所措。然而,

它始于.net的一家大型公司。作为一个小的非程序员(当时是一名技术支持代表),我学到了所有关于所用语言和技术的知识,这些语言和技术适用于我所工作的公司。此外,这可能是最重要的事情,我已联网。我向在目录中以软件工程师为标题的每个人发送了一封电子邮件。我很烦吗?大概。我总是礼貌和自负,渴望学习。我会安排午餐,或者只是在自助餐厅里找到它们,然后坐下来尝试交谈。有时候这很尴尬,或者我会冷落,但是最终,它得到了预期的结果。我能够获得一些内部数据库的少量凭证,并在一段时间后获得了在其专有平台上开发软件的必要凭证。此后不久,我发现自己在公司中处于一个职位,可以为我当时工作的分析团队提供一些内部工具开发技能。从那以后,我一直以最朴实的方式努力成为房间里最聪明的人。我很渴望,并且确保每个人都知道。我一直试图提供一个可能的解决方案,并且发现如果您尽力而为,那么几乎不可能解决的问题领域(也许是量子理论之外的问题)。我发现自己在公司中处于一个职位,可以为我当时工作的分析团队提供一些内部工具开发技能。从那以后,我一直以最朴实的方式努力成为房间里最聪明的人。我很渴望,并且确保每个人都知道。我一直试图提供一个可能的解决方案,并且发现如果您尽力而为,那么几乎不可能解决的问题领域(也许是量子理论之外的问题)。我发现自己在公司中处于一个职位,可以为我当时工作的分析团队提供一些内部工具开发技能。从那以后,我一直以最朴实的方式努力成为房间里最聪明的人。我很渴望,并且确保每个人都知道。我一直试图提供一个可能的解决方案,并且发现如果您尽力而为,那么几乎不可能解决的问题领域(也许是量子理论之外的问题)。

总结一个长话不说的故事(如果您在西北太平洋地区,我很想讨论啤酒问题),我在一家小小的创业公司取得了“重大突破”,该公司愿意给我机会。他们用我的经验不足换来了一点点的薪水,而我却一路走来。然后,在接下来的几年中,我从一家小型开发商店反弹到了下一家,并在此过程中获得了友谊和技能,最终成为一家小型工程公司的首席开发人员和总监。

如果我没有足够有效地进行交流,那么这里的主要要点是必须联网。结交朋友,喝些啤酒,欢笑,找到想工作的人(最好是在您选择的技术范围内)。确保人们知道您愿意做任何事情,并且渴望完成这项工作,无论它多么艰巨。您基本上必须“克服”您缺乏正规教育的情况。跳进去玩吧。恕我直言,这个行业是地球上最好的。我建立了持久的友谊和联系,从一个地方到另一个地方都帮助了我,只要机会出现,我将继续为他们做同样的事情。


1
我无法将其标记为答案,这让我感到非常难过。像其他许多回答一样,您什么都没说我认为是错的,但是当我的问题的关键是如何成为一名成功的程序员时,您将完全专注于如何进一步发展自己的职业。虽然成功的程序员意味着良好的职业生涯,但我宁愿专注于“成功的程序员”方面,并在思考后让职业生涯成为(重要且非常有意的)部分。我确实会给您“ +1”,以获取有价值的信息,部分可以回答我的问题。
保罗·哈曾

哦,谈到网络,我很想听听您的故事!听起来我们共享许多相同的路径/目标。请随时在paulhazen.net/about中选择最适合您的联系方式,我们将为您提供啤酒。
保罗·哈曾

1

首先,让我大声笑在您的大作文快要结束时遵循“简洁但彻底”的规定。开展业务:

如何客观地确定我现在可能会或可能会缺少的CS学位所学的领域,常识和其他技能?

如其他人所述,您可以从课程目录开始。但我鼓励您走出清单的界限。实际上,主修数学是一件好事。与我合作的许多工程师都不记得如何执行简单的集成,并且从未在传统的CS离散数学课程之外进行探索。

就具体而言,这个答案似乎很少。我没有CS学位,也没有发现自己缺少任何必要的领域。但是,我确实希望我在其他我感兴趣的事情上花费更多的时间。例如,历史,语言学和英语。

如何按最重要的顺序对这些技能进行排序?

了解你所爱

对您来说重要的是什么?对雇主来说重要的是什么?我的个人启发一直是去学习对我来说最有趣的东西–您需要热爱自己的工作;否则,你会筋疲力尽。软件是如此庞大的工作领域,以至于总是有能力对这些技能中的任何一个都充满热情的合格开发人员可以找到一份工作。

学会学习,并推动自己

我想这使我想到了其他两个最重要的meta技能:努力学习和努力学习。这些听起来听起来有些陈词滥调,而且很痛苦,但是这种结合很少见。我遍历整个地图,涉及“所需”技能–前端HTML / javascript,语言扩展,移动开发,计算机视觉,系统管理以及7种以上的语言。在这一切中,唯一真正的核心技能就是养成克服我自己的无知的习惯。

我真的很喜欢杰克·怀特(Jack White)关于吉他和音乐哲学(认真地看一下),我认为它极其适用于编程世界。将事情放远一点。强迫自己。然后,当所有人都希望您做的事情时,这似乎很容易

在接下来的两年中,最好的方法是补充我的教育以达到或超过顶级大学的CS本科水平来获得这些特性?

  1. 非主要CS班

    像您一样,西澳大学的CS部门也拒绝了我……尽管我认为我让他们第三次这样做才使我感动。我结束了信息学专业和应用数学专业的学习。但是我仍然走过整个非主要的CS领域。那是CSE 373、410、413、415和417。因此,请确保我相信您应该首先遵循自己的热情。我带领我上那些课。而且我认为您可以从中获得相当全面的核心知识,尽管从理论上讲这可能有点不足。

    现在,这是一件很酷的事情:有了信息学,其中大多数都算入了我所需的选修课。在数学部门,您可能需要获得明确的批准,这可能对CSE 417以外的任何人来说都是一个难题。

    召集DARS查询(可能是仅UWNetID链接),然后查看情况。我曾经在各种专业的广告迷上做过这件事

  2. AMATH课程

    同样,应用数学系有一些可以作为选修要求的课程。您甚至可以像您一样真正地学习AMATH。

    我为什么要提这个?对于大多数程序员而言,数值计算(例如AMATH 301/352)是一个巨大的谜。如果您没有其他收获,则可以撰写有趣的博客文章。但是我认为了解一种语言的数字类型的问题并知道如何测量和改善它们是非常重要的。

  3. 建立东西!

    您可以做的最重要的事情是构建新的东西。从头到尾都想出一个主意。不要在您的舒适范围内让事情变得简单。

    我参加的最富有成果的编程课程总是有大量的动手编程组件。对于工程师而言,理论非常重要-只要可以将其转化为真实的东西即可。因此,找到一个听起来不错的CS纸,然后尝试实施它。说真的

  4. 找工作

    现在,您已经提到您在亚马逊实习。那很棒。实际的工作经验真的很关键!有很多的人谁也不能自己的出路编程湿纸包的CS度。有良好的工作经验值得方式多度。


这个。这是非常好的。实际上,我认为这不仅仅是一个有效的答案。标记的答案更加有效... *叹*如此难以回答,有很多很棒的答案:(希望我能帮助您更多的代表。但是由于我在现实生活中认识您(但主要是通过Twitter,因为我们“前面已经讨论哈哈),我得给你买啤酒或威士忌的一些作为安慰奖。
保罗·哈森

-2

关于人们成为大学前成为百万富翁的故事不止几个,也许我听最多的就是比尔·盖茨。具有利基能力的人在没有学位的情况下往往比盖章的CS毕业生做得更好。

找到很少有人喜欢的东西,通常是无聊,乏味或难以学习的东西,并学好它,沉迷其中。我听说过的一些领域是Unix后端产品(不是Linux,尽管Linux的需求并不落后),Flash(我对Flash的了解还不足以记住它到底是什么,但是我知道一个搬家的家伙)很快就知道了这一点,他说这还有一个市场,主要是因为人们说它快要死了,不会学习。您可能需要上几节课才能上手,但是如果您了解自己的知识并拥有令人印象深刻的产品组合,那么那里的业务将需要您!


1
-1未回答我的问题。您没看错,但是您似乎已经跳过了我的“我不需要的内容”部分,并且没有遇到我想要的任何内容。
Paul Hazen 2012年
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.