我即将获得计算机科学学位,但是我看到诸如Stack Overflow之类的网站和诸如Google之类的搜索引擎,甚至不知道我会在哪里开始写这样的东西。在一个暑假期间,我确实有机会作为iPhone开发人员工作,但我感觉好像我主要是将其他人编写的库粘合在一起,而对引擎盖下发生的机制知之甚少。

我正在努力通过研究算法来提高我的知识,但这是一个漫长而痛苦的过程。我发现算法很困难,以我所学的速度,在掌握本书的内容之前已经过去了十年。考虑到我目前的情况,我花了一个月的时间找工作,但是我的技能(C,Python,Objective-C)相对较浅,在本地市场上并不那么理想,因为那里的C#,Java和Web开发要高得多需求。并不是说不存在C和Python的机会,但它们往往需要3年以上我没有的经验。我的GPA不错(3.0),但是还不够高,无法申请IBM之类的大公司或返回研究生学习。

我基本上要攻读计算机科学学位,但是我不觉得就像我已经学会了编程一样。我以为,加入一家公司并全职编程将使我有机会发展自己的技能,并向比我更富有经验的人学习,但是我一直在努力寻找工作,并开始感到沮丧。

我将扩大自己的网络,并超越我所长大的城市,但是其他处于类似情况的人试图做什么?我工作很努力,但没有信心自己去写自己的应用程序。 (也就是说,成为iPhone应用程序市场中的独立开发人员。)如果没有任何反应,我将需要考虑升级和学习更多的流行技能,或者尝试一些与IT无关的东西,但是经过我付出的所有努力,像是应付。

#1 楼

学习编程的最佳方法是编写程序。

两个建议:


开发游戏
开发网站
< br算法虽然有用,应该理解,但实际上在软件设计中起了第二作用。 TDD /设计模式/体系结构/重构/单元测试/将代码组合在一起的过程/等往往是更重要的技能。

此外,最好在自己的时间进行。不要等到工作完成这些工作。我发现倾向于做得更好的人是那些在职业生涯的早期就致力于在自己的时间发展技能的人。通常是因为他们对软件开发非常热衷。


还有一件事是“阅读书籍和样本”,不要以为耻。如果您想学习,应该问:)


评论


+1同意。而且,如果您不想自己做这些事情,那么这可能不是您的最佳职业道路。如果您现在把所有东西放在一起,您可以建立一个可以补充您的GPA的投资组合。

–克里斯
2010年5月13日,0:01

@克里斯,-1。这就像是在自己的时间不为穷人提供无偿服务的律师职业是错误的。我知道许多程序员最好花更少的时间进行编程,而花更多的时间进行几乎所有其他事情。

– David M
2010年5月13日,0:13

实际上,很多律师在cutting牙时,薪水不菲,并花了很多额外的时间才能取得成功。

–基思·尼古拉斯(Keith Nicholas)
2010年5月13日,0:27

您不能真正将律师工作与程序员工作进行比较。通过编程,您可以自己掌握技能。您不需要任何雇主或客户来改善这一部分。

–匿名
2010年5月13日,3:02

确实,您需要停止认为编程很特别。律师可以像我们一样独自工作/学习。他们可能会从低薪工作开始并长时间工作,但是许多程序员也是如此……“如果您不是以业余爱好进行编程的,那么您不应该成为程序员”这句话真的很主观。

–约翰
2010年5月13日在9:07

#2 楼


我觉得我主要是将其他人编写的库粘合在一起


虽然我理解为什么您觉得这不是“真正的编程”,但事实是集成工作在公司程序员的典型工作量中占了很大的比例。您的经验可能比您认为的要有价值:)

评论


胶水+1。没有人会雇用一群专业人士来建造新房屋,并期望他们在此过程中发明全新的房屋建筑技术。实际上,任何对管理风险和预算感兴趣的人都希望他们不这样做。

–丹·布莱恩特
2010年5月13日,0:31

我同意那里有一些极端的情况,但是我要说的是,其中有75-80%的编程工作只是将库粘合在一起。

–b_richardson
2010年5月13日在13:18

而且,仅将库粘合在一起就没有错。那就是让您高产的原因!

–汉斯·韦斯特贝克
2010年5月13日在16:24

就像我90%的工作一样,要么连接其他人的代码(库或旧代码),要么维护旧代码。但是我会花一些额外的时间来学习零散的东西,所以现在我确实知道其中许多库是如何工作的,并且对幕后的情况有了更深入的了解。成为一生的学习者,最终您会发现一切。

– CodexArcanum
2010年5月13日在20:07

当我不将库粘合在一起时,通常会创建一些库,以后再将它们粘合在一起。

–Atømix
10 May 14 '13:41

#3 楼

首先,感谢您提出一个非常诚实的问题。有很多方法可以解决当前的问题。这里有一些技巧,过去我认为这些技巧对我非常有帮助,现在仍然继续使用它们来扩展我的知识。


学习,学习和了解更多。这可能是我能给您的最重要的提示。活到老学到老。懂一种语言是好,懂多种语言则更好。拥有其他语言的知识将使您成为一个更好的程序员,并使您更容易处理某些任务,并帮助您更好地了解通用数据结构。空余时间。不要做一些容易完成的事情。进行一个您不知道从哪里开始的项目。让自己陷入深渊。这样做的好处是,您将学习到从未存在的事物,当您完成它时,您会感到无比的自豪和满足。这就是让我前进的原因。对您的工作抱有真正的热情。尽管人们对此会持不同意见。我认为,如果仅将其视为9-5的工作,就无法在该领域脱颖而出。必须有热情去做。
在SO上帮助其他人!最好的理解方法是尝试向其他人教授。
研究其他人的程序并尝试弄清它们的工作方式,然后在自己的程序中实现类似的技术。尝试阅读并获得对它的理解,然后根据该理解自己做,而不是复制并粘贴。
请坚持下去。事情有时会变得非常令人沮丧,但完成时却会非常有意义。如果您不了解某些内容,请稍事休息,清除思路,然后重试。在SO问我们!我们是一群愿意的人:)
永远不要停止学习新技术。
看一些书。我了解作为一名学生,您会读很多书。这里有几本实用的书,您可能会发现它们很方便……希望
-实用的程序员:从旅途到大师
-代码完成:软件构建实用手册


评论


将Clean Code添加到您的阅读列表中,这非常不错。

–柠檬
2010年5月13日23:56

“懂一种语言是好的”->错误。仅仅了解一种语言是不够的。懂多种语言是好的,学习更多的语言甚至更好。

– DenilsonSáMaia
2010年5月14日19:20

“从小处着手”不仅指选择可行的项目,而且还指开始在项目中实施可行的部分。我的一个项目从对视差的小实验开始,我认为“对于游戏背景来说,这看起来像是一个很酷的星空”。加一艘船...加一个外星人...一次加几个导弹,键盘控制和碰撞检测(每个简单的问题,一个人),不久,我卖了一个商业游戏(我当时想的是时间)大量现金。另一方面,“编写游戏”是一项模糊,不可接近的任务。一次一位。

–mmc
2010年5月14日23:06

@Denilson OP表示她不知道自己如何编程。对不确定编程的人了解一种语言是件好事。我的列表仅适用于这种情况。

–罗素·迪亚斯(Russell Dias)
2010年5月15日,0:51

@Denilson,您是否可以不先学习一种语言就学习多种语言?

–彼得·托克(PéterTörök)
2010年5月15日在19:42

#4 楼

启动一个个人项目。学校的麻烦在于,您所做的最复杂的事情是,一个项目耗时15周至一年,并且涉及其他几个人。问题域是很容易理解的(您的教授没有给您任何适合您学期的任务。)这不是现实世界所能提供的。

如果您必须做一些您可能会热衷的,从头到尾的重大工作,您的大脑将开始包裹整个过程。只要这只是一种职业,而且对它没有爱,您仍然会觉得自己还没有实现。

评论


我一直在分配时间:1)发送简历2)阅读书籍,但似乎2)编写代码可能更好。我认为很多雇主都不想冒雇用很少行业经验的人的风险,以至于我没有接受的实习现在看来真的很有吸引力。

– wp123
2010年5月13日,0:28

+1。我完全同意。启动一个小型应用程序,然后根据需要添加功能。随着建筑物的进行,您开始意识到可以做的更多事情,可以添加它。

–mmr
2010年5月13日,0:31

“问题领域很容易理解(您的教授没有给您提供任何与您的学期整齐的任务。)”这是计算机科学教育的最大问题之一。有一些CS或软件工程程序可以解决此问题,但是大多数程序不会使您跳脱限制。您确实需要承担自己的项目。如果您不知道Stackoverflow的构建方式,请尝试自己制作一个克隆。您将学到的知识远远超过任何一堂课都可以教给您的。

–马特·奥莱尼克(Matt Olenik)
2010年5月13日,2:18

好主意。但是从一些小的核心功能开始,然后慢慢添加。这比尝试获得一个大型的完美应用程序要更有动力。我还认为,您将找不到像书籍中那样丰富的信息和教程。

– Xster
2010年5月14日17:24

@Xster,这就是我的意思。编写具有非常基本功能的“问答”应用程序的任务是一个不错的起点。

–马特·奥莱尼克(Matt Olenik)
2010年5月16日,0:58

#5 楼


使用K. Nicholas所说的项目,从一种需求语言开始。
不要用StackOverflow来衡量自己。那会不必要地使您沮丧。


评论


为#2 +1-不要比较自己和人群的知识。

– g.f
2010年5月13日,0:11

StakOverflow本身是一种艺术产品。更不用说,有些人在数十种产品中贡献了数十年的经验。

–安德鲁·麦格雷戈(Andrew McGregor)
2010年5月13日,0:17

我认为将自己与StackOverflow进行比较并不是一件坏事,这里有很多聪明的人。有些比您以前更聪明。但是,那些人会让您想继续学习。

–R0MANARMY
2010年5月13日,0:20

嘿,我知道为什么我沉迷于SO!有很多原因,这太棒了。但是,不断暴露于您不知道的所有事物真是令人沮丧。必须要小心一点,不要感到畏惧,仅此而已。

– Smandoli
2010年5月13日在1:23

@Georg-不错的游戏迷。 KGS曼多利

– Smandoli
2010年5月14日15:10

#6 楼

对于您的工作状况,我无能为力,但我希望可以帮助您发展自己的技能,并能将您对自己技能的感受转变为现实。


计算机科学学位,但是我不知道我该怎么编程。


您的讲师可能会感到有些羞愧。很可能您对不知道如何编程的感觉很自然,并且适合您的生活和教育阶段。这里有一些想法可能会有所帮助:


许多雇主不在乎您的成绩单上的课程是什么,甚至都不是您的GPA。相反,他们想知道您能做什么,尤其是您建造了什么。为了做得好,您所构建的内容比履历上的技术(C,C#,您所拥有的东西)更为重要。 ,对您的老师感到羞耻。但是您现在可以构建这些项目。在网站上搜索有趣的问题。我们的第二学期学生刚刚完成“歌曲搜索”,我们为一个网站提取了大量歌词,他们建立了一个倒排索引,您为其输入关键字,并在上下文中显示包含这些单词的歌词。它不是Google,但它是基于相同的原理并具有相似的数据结构,因此您现在就可以开始构建它。


我很努力,但是没有信心出去独自编写我的应用程序。


也许您没有为正确的问题而努力?最好找到


是开放式的问题
有一个以上好的解决方案
有很多不好的解决方案

如果您解决了这类问题,您将学会做出选择,忍受后果,如果事情不起作用,请回到并重新考虑您的选择。您将从失败中学到的东西要比从失败中学到的多,但是从成功中学到的东西比从失败中学到的要多。

好的问题(如我上面列出的那些属性)就像金子一样,除非您从别人那里得到了一个好问题,他们不会损失任何东西。在网上搜寻好问题,然后练习,练习,练习。如果您必须从欧拉问题开始,那么对初学者来说也可以。但是很快您将要构建您认为真的很酷的中小型项目。如果您对自己建造的产品感到兴奋,那将给潜在的雇主留下深刻的印象。如果您不感到兴奋,就很难雇用您。

彼得·诺维格(Peter Norvig)报告说,成为专家需要10年。当然,获得学位后,你不会像专家一样。
我会给你一个小秘密:哈佛学院的大多数成员(我当时只有八年了)觉得他们没有真正属于哈佛,对他们的了解还不够,聘请他们一定有误。对于从学校到工作场所或从一种工作到另一种工作的人们来说,这种感觉非常非常普遍。如此普遍,有一个名字:“冒名顶替综合症”。

即使您拥有学位,您的大学仍会与您交流。如果您有任何真正优秀的教授,他们可能仍然会关心您。他们当然关心的是,其中一位学生的平均成绩为B,但仍未掌握交易的基本技能。因此,请从您的计划中选出一两个最有活力,最富有同情心的教授,并获得一些帮助,以发现良好的问题。然后,让自己负责您的技能,知识和对它们的感受。
每天都要构建一点东西,不要将您宝贵的构建时间浪费在任何真正不酷的事物上。最终,我保证,您将重新获得编程的兴奋感,然后,您也将对自己建立信心。

评论


我必须同意。走到那里,向您的潜在雇主证明您知道C,Python,Objective-C,并构建一个可以完成某些工作的独立应用程序。人们之所以选择游戏是因为依赖于游戏,它们可能涉及具有挑战性的设计和实现,并且周围的许多库都是免费的。如果您为Windows制作游戏,则GDI / +或DirectX都是免费的库供您使用,等等。

– DeadMG
2010年5月13日在2:03

提醒我的是:“哈佛大学的大多数成员(我已经八年了,当时感觉很不像),他们对哈佛的了解并不多,而且他们被录用肯定有一些错误。”邓宁-克鲁格效应=)

–kolistivra
2010年5月13日在17:04

+1以构建事物:它使您与众不同,尤其是当它有用时。

–penguat
2010年5月14日在9:23

@Alex,千万不要通过HR。如果幸运的话,您认识的人就会认识您想在哪里工作的人。

–诺曼·拉姆齐(Norman Ramsey)
2010年5月17日下午4:14

您知道,既然您提到它,那就是我通常找到工作的方式。我想也许将来我应该更专注于网络内部(或网络边缘)的工作,并避免关键字扫描仪的侮辱性。

– AlexCuse
2010年5月17日在12:53

#7 楼

在旧的《法律与秩序》上有一个场景,一名DA抱怨她对在法学院的工作一无所知,对现实世界一无所知。她抱怨的那个教授回答说:“这是一所法学院,而不是一所律师学院。”

计算机科学领域也是如此。也许您没有学习如何为在线上看到的某个项目立即做出贡献,但是您可能为长期成功奠定了成功的基础。

首先,找到一份工作,任何一份工作。变得自给自足。尤其是在当前的经济形势下,我永远不会责怪任何在书店工作的候选人,或者他们在寻找更合适的工作。我确实对那些无所事事的人有疑问。

找到一个项目,任何项目。例如,在github.com上有许多适用的项目。

好消息是,比您想象的要早得多,没有人会在意您上学的地方,您的GPA等等。那。

挂在那里!可能会很艰难,但是有一天您会为这次体验感到高兴。

评论


我们最近在工作中对此进行了讨论。您真的认为与职业无关的工作对您的简历有帮助吗?如果您出于经济原因需要收获果实,那很好,但是如果您想建立一个程序员职业,我认为它在您的简历中没有位置。如果您没有财务上的限制,那么在没有经济补偿或试图建立自己的企业的情况下更好地参与项目。我认为参加开放源代码项目或与该领域相关的事情要好得多。

–piotr
2010年5月14日晚上8:23

@piotr-您自己说过-“如果您没有任何财务限制。”除非他们和父母住在一起,否则任何最近的大学毕业生都会遇到这个问题。我同意David M的看法-如果您不能直接在自己的领域找到工作,就找份工作。证明你不只是坐在那里。然后,当您不从事日常工作时,请在夜间继续学习并通过项目等来了解自己的领域。当然,也要打电话并发送简历。

–JasCav
2010年5月14日15:50

简历上的任何工作看起来都比缺口好。

– Jim C
2010年5月14日20:28

我认为,在您职业生涯的开始,不相关的工作总比没有好。但是,我不同意简历上的任何工作总比没有好。如果有充分的理由要“不做任何工作”,那么它会比“不做任何工作”更好。我自愿经历了长时间的失业,但我有充分的理由可以连贯地解释。

– David M
2010年5月14日在21:31

皮奥特:“您真的认为与职业无关的工作对您的简历有帮助吗?”是的,一点没错。我认为程序员在停机期间的工作结构要比整天坐在家里的程序员要高得多。它显示了职业道德。我从来没有想过雇用一个孤独的天才坐在家里独自编写代码。他们往往不知道如何与他人良好地合作,或者做一些肮脏的工作。

–肯
2010年5月19日23:50

#8 楼

您看过ProjectEuler吗?我通过在该站点上解决问题来自学Python。 :]如果您在学习Java或C#之后,可以尝试一下。另外,我建议您也尝试进行GUI编程。

编辑:

关于SO的一个很棒的主题是许多您可以在编码实践中找到的链接:

https://stackoverflow.com/questions/662283/websites-like-projecteuler-net

评论


我听说过很多有关该站点的信息,但从未有时间尝试解决问题,但如今看来,我唯一的空闲时间就是空闲时间,所以我不妨继续忙碌。

– wp123
2010年5月13日,0:13

对于想要建立编程知识的新手程序员来说,欧拉项目几乎没有用。它旨在弄清楚如何通过编码算法解决数学问题。您可以在不成为一名优秀程序员的情况下完成一百万个操作(尽管您可能会成为一名出色的数学家)。对于大多数编程工作而言,编写出色的算法并不是高优先级。

–查尔斯
2010年5月13日在16:03

我不同意Charles-Euler会提供动力去理解某些概念并执行它们。

–泡沫
2010年5月13日在20:30

像Xavier Ho一样使用它似乎很有趣且有用。也就是说,使自己掌握新语言的基础知识。我怀疑PE可以帮助您(小规模编程)或数学;因此您可以以任何一种方式下潜。除了这些观点,我同意查尔斯的观点。

– Smandoli
2010年5月13日20:33

pythonchallenge.com是关键!欧拉是要通过编程解决的数学问题,而pythonchallenge是纯编程问题

– Xster
2010年5月14日17:26

#9 楼

我从您的用户名猜测您是女性...如果不是,请忽略此问题,或根据您自己的观点进行调整。

根据我的经验,大学毕业的女性计算机科学领域的人认为自己的能力不及具有类似技能的男性同行。也许有人会说,相对于自己的缺点,女性是(或更确切地说,我所知道的女性)更诚实,但最终,她们很难向雇主推销自己。

(与同龄人相比,我大部分的研究生学校都感觉像是完全失败了,并最终获得了全班最好的成绩。)

所以我的建议是对自己诚实并继续努力发展你的技能。但是,不要轻描淡写寻找工作时所知道的知识,也不要束缚自己申请“拓展”工作。


找到可以对您的价值进行真实评估的指导者。
进行面试时,请谈论您的个人项目并提出技术问题。学习的动力和精力是最好的资产。

事后补充:


当你找到第一份工作时,不要害怕谈判你的薪水。太多的女性只是感激地接受了第一笔报价,而从未得到应有的报酬。


评论


这关系到...。

– Paul Nathan
2010年5月14日15:23

+1,所有优点。在学校的时候,我与女同事也遇到过类似的情绪。

–user95
2010年5月19日在21:34

不仅仅是女性的事情;比起那些没有开始怀疑自己的能力不足的人,那些已经有能力或能够看到自己需要成长的人(对,是的!)往往对自己的能力提出质疑。这种现象有个名字。邓宁-克鲁格效应。如果您离开学校能够继续终生学习,无论您从事何种职业,您在学校的经历都将是非凡的成功。祝您好运!!!

– Warren P
2010年5月21日在16:08

沃伦:绝对正确;我很多直言不讳的男性同龄人也有同样的问题。在包括北美洲在内的世界许多文化中,不鼓励小女孩像小男孩一样积极地竞争和炫耀自己的技能,所以我在女性中更经常看到这种特征。但这绝对不是女性化的事情。

– Kena
2010年5月21日在18:20

很棒的答案,我完全同意。另外,我在即将毕业的班级中注意到,坚持不懈的女性通常都是顶尖的学生。 (遗憾的是,这意味着很多辍学的妇女本可以成为完全有能力的程序员……)

–白兰地
2010年6月23日19:48在

#10 楼

很多人说您应该开始一个个人项目。我认为,这是此处的最佳建议。当我阅读其他答案时,我会添加一些我没看到的东西...


在您热衷的领域挑选一些东西。最好的
地方可能是出于计算机科学以外的兴趣。这可能是您参与的非营利性组织,是您热衷的爱好,是您从事的运动。
寻找合作者。单独进行编码很难,因此另一个对您有极大帮助的事情是
,如果您找到了一个与您合作进行此项目的伙伴
。这使
变得更加有趣,并使您保持动力。杰夫·阿特伍德(Jeff Attwood)在他最近的博客文章中谈到了
他在构建SO方面的确切经验。
http://www.codinghorror.com/blog/2010/05 /on-working-remotely.html
(初步)选择一些谦虚的东西。理想的项目
将从小事情开始。如果
目标太过雄心勃勃,那么它将变得太令人生畏。在完成了PC,电话,嵌入式系统和
Web的开发之后,我想说Web是寻找其他人可以实现的东西的最佳场所

/>立即开始使用。
如果可能,请选择其他人会使用的东西。即使您只有十个“客户”,让别人使用您制造的东西的感觉也像毒品。令人难以置信的满足。向客户学习并做出回应也是一种宝贵的学习经历。

如果这个项目是一项充满爱心的工作,而您在深夜里开心地工作,然后在第二天早晨跳下床回到它身边,那么美好的事物就会随之而来。您将学习,信心将会增长。一旦有了人们可以看到的东西,它便成为您投资组合的开始。没有什么比真正的东西印象深刻的程序员和(体面的)招聘经理。

评论


如果可能的话,选择别人会用的东西……那是获得反馈的最佳方法

– Balalakshmi
2011-2-5在10:12



#11 楼

从已经从事开发工作20年以上的人的角度来看一些评论:


我看到像Stackoverflow这样的网站和像Google这样的搜索引擎,却没有
知道我什至会开始写类似的东西。


它们是团队的产品,主要建立在库和基础架构(.net,java ,asp.net等),并由其他团队提供经验和资源作为后盾。您个人不知道从哪里开始做类似的事情是完全可以理解的。不用担心。


在一个夏天里,我确实有机会作为iPhone开发人员工作,但我觉得我
/>主要将其他人编写的几乎不懂机制的库
粘在一起
发生在幕后的机制。


大量开发恐怕现在工作就是这样。但是在这些库的“顶部”进行有趣的工作还有很大的余地。而且,不必担心会发现算法困难-您几乎可以肯定,在职业生涯中都不必实施快速排序,链表或其他任何操作。那就是库的用途。


基本上我毕业于计算机科学学位,但是我不觉得已经学会了编程



知道如何编程以及知道如何以专业的方式工作是两件事。您只需要一些经验,最好与实际系统中的其他开发人员一起工作。尝试将C#或Java添加到您的技能组中-它们之间没有太大区别,因此知识是可转让的。提防过早变得专业化。您可能不得不接受自己不会立即赚很多钱的想法,因此,如果可以的话,请暂时保持较低的个人成本。

开始从事您提到的项目,但是除了增加您的编程知识之外,尝试使用它是一种获得相关技能经验的方法,例如版本控制,单元和集成测试,甚至编写简单的文档。这些技能使开发人员与程序员区别开来,并且是潜在雇主的一个很好的展示。有很多可用的免费工具(Visual Studio,github,nunit,Google应用的快速版本)可以提供帮助。

从您撰写的内容看来,您的CS学位已经教会了您如何考虑技术问题。您似乎也具有很高的自我知识水平,包括您当前的技术限制和经验。利用这些优势。现在不是进入就业市场的好时机,但是如果您努力工作,那就可以了。别担心,学习,获取经验,保持最新,尝试做自己喜欢的事情。

祝你好运!

评论


“几乎可以肯定,在您的职业生涯中,您将永远不必执行快速排序,链接列表或其他任何操作”在我目前的职位上,我必须为自定义的书面链接列表实现快速排序。我不必执行该列表。了解基础事物的工作原理具有一定的价值。

–Daedylus
2010年5月14日下午16:46

我同意一个好的开发人员应该知道这些基本数据结构和算法如何工作,并能够实现它们。我不得不滚动自己的链表两次,但从来没有(幸运的是,我)不必编写快速排序。我的观点是,OP不必太担心自己在学位期间可能学习的算法,因为许多语言/平台(.net,Java,C ++等)可能都包含预编写的实现。

–安迪·约翰逊(Andy Johnson)
2010年5月14日在21:58

#12 楼

编程并不仅仅取决于您在大学期间对算法或GPA的理解。编程是指具有开箱即用的思维能力,学习的欲望和意愿,最重要的是创造力。

就个人而言,我去年五月刚大学毕业,我的GPA太差了。我比学术界更关注社会生活,我为此付出了代价。

但是,在我最近一次大学毕业的面试中,(我花了不到一年的时间)展示了我的创造力,对学习和分析能力的热情帮助我找到了工作。

#13 楼

注意:我希望这篇文章被否决。这不是对原始海报的回答,而是对我上面阅读的大多数评论的观察。

我在上面阅读的答案确实让我感到恐惧。似乎几乎普遍的感觉是,自然科学学位是无用的或无关紧要的,或者什么也不教你。 comp.sci学位真的变得那么糟糕吗,或者这仅仅是开发人员的热烈宣扬,而没有学位试图证明他们缺乏学位?

认真的人们,他们现在在大学里教什么人?当您毕业时获得CS学位(至少在我还是学生的时候),您将对编译器设计有一个很好的了解。复杂性,形式方法和逻辑,完整的数据结构和算法动物园,基本运筹学(LP等),数据库,密码学和安全性,调度算法,网络协议,互联网开发,操作系统和内核设计,并行算法和数据结构,数值算法等等。整个过程通常由一个庞大的编程项目来补充,该项目构成了本文的一部分。不要告诉我comp.sci毕业生没有足够的实践编程。

我也很欣赏这样的事实,即一些更传统的comp.sci学位忽略了软件开发周期的某些方面,您可能不会听到太多有关TDD和单元测试的话题。坦白讲,让我们直言不讳:这不是火箭科学吗?您也不会听到有关SCRUM或功能点分析的信息。关于此类基本问题的详细课程的教学将是多余的,尽管如今许多学位确实开设了系统设计课程,但这些课程的确可以使学生了解这些事情的工作原理。

当然,您可能不是.NET,PHP或其他当前行业标准的专家,但这应该无关紧要。在5到10年的时间里,选择的语言将会改变。仅仅因为您学会了驾驶标致汽车,并不意味着您就不能驾驶菲亚特,这同样适用于编程语言。要用任何一种语言胜任工作,都需要花费几个月的时间来练习几本好书。

当然,如果有什么浪费时间的话,这些昂贵的“认证”基本上涉及到参加电子考试。选择题考试,并询问您有关特定体系结构或语言的细节(通常毫无意义)。他们倾向于通过他/她对某些病理学编程案例的了解来衡量程序员的能力。

我曾在多家公司的IT行业工作,也参与了其他软件开发人员的面试过程。我们确实提出了一些常见的Fizzbuzz问题,但主要针对的是未经正式培训或受过培训的人员。我从未遇到过comp.sci毕业生,无法回答基本的和不太基本的编程问题。

请注意,我住在欧洲,只了解欧洲大学学位。但是,我很确定美国的大学标准比欧盟的大学标准高得多。

评论


一旦获得学位,每个人对所有学位的感受都是相同的。学校通常会为您准备各种情况。一旦开始工作,您就会变得更加专业,您可能会觉得自己浪费了所有精力在学校上,但是您如何知道最终将要做什么呢?要安全地学习很多可以建立的东西,要比从来没有学过的东西更安全。

– iWasRobbed
2010年7月7日在13:38

我看到论点的两面。我遇到了一些非常聪明的CompSci学位,但是我也遇到了一些具有CompSci学位的人,他们现在在呼叫中心工作,因为他们并不真正在乎CompSci。我在CompSci课程中学到了很多东西,但是我必须承认大多数技术技能使我自己在课外学到的工作有所减少。当我面试软件工程工作时,他们通常会测试您对特定技术,问题解决策略和人际交往能力的知识。这些都没有在大学明确教授。

–塞林
2010年7月7日在14:14

在采访他们的过程中,我遇到了数十位CS毕业生,即使他们思考了五分钟,也无法解释任何排序算法。也许美国各州的大学标准并未完全适用。正如@Chris S指出的那样,无需学习任何内容就可以轻松地滑过某个学位。

–院长J
2010年7月7日14:31

您在这里混淆了两件事。我发现做一个学位非常有用-我知道它使我成为一个更好的编码员,但是我永远无法弄清楚原因(大概是一些知识和更好的解决问题的方法的结合)。就是说,那里有很多毕业生(来自相当有名望的大学),他们甚至不知道如何使用512字节的查找表来实现(9,5)ECC。优秀的编码人员是那些超越“我不理解,但我可以做考试题”的人。

–tc。
2010年7月13日在14:05

一个有趣的问题,但是为什么您要进行通常的ECC测试;),除了硬件之外,当然,但这是一个很好的例子,说明您自欺欺人,您可以/不可以。在compSci学习

– Quonux
2010年7月15日在17:47

#14 楼

您的谦卑会很好地为您服务。不论我们有多少教育和经验,初学者的心思对各种学习都是有帮助的。

像其他人所建议的那样,通过锻炼来进行练习-在Euler项目和其他地方。

制定解决方案以帮助其他人。理解问题,确定可以应用的知识以及最终阐明答案的练习将帮助您建立信心,因为练习有助于提高技能。

坚持下去;你会没事的。

评论


谦虚会很好地为您服务,除非不是这样-要踏进门(包括在个人项目中),您需要一定量的chutzpa,甚至可能需要非理性地自信。

–伊恩·比金(Ian Bicking)
2010年5月13日在20:16

@Ian,我谦虚地接受你的指正。 ;-)说真的-这是一个好点,也是一篇好文章。我不喜欢这样的结论,即女人应该像男人一样混蛋,但是很难与它的实用性争论。

–卡尔·曼纳斯特(Carl Manaster)
2010年5月13日在21:51

@Carl-结论太短了:-)雇用员工/管理人员会吃得太嚣张/自我提升。尤其是在评估候选人时,他们开始不了解其技术要求。我见过许多与这些可怜的雌性同舟共济的雄性,当时那位自信过度,自我促进的人出现并偷走了表演。我认为我们不能认为鼓励更多女性过分自信是胜利。恕我直言,我们可以做得最好的地方是培训人力资源人员做出更好的决定,或者重新调整流程。

–戴夫
2010年7月30日在16:30

#15 楼

拥有理科学士学位并不能使您成为一名优秀的程序员,而拥有音乐程序的毕业生也不会使您成为一名出色的音乐家。

练习,练习,练习和经验无可替代。每天进行8个小时的编程,并且在5年内您可能已经了解到自己现在缺少的知识。

评论


那是一个陷阱22是吗?安排全职工作以获得所需的工作。

–吉姆·舒伯特(Jim Schubert)
2010年5月13日,0:16

不,五年后您会意识到自己一无所知:)

–埃尔兹
2010年5月13日,下午1:34

@Earlz,您最终知道的所有内容已经过时了。

–丹·布莱恩特
2010年5月13日,2:18

确实-在所有的“ Java学派”(这里可能有也可能没有)的情况下,很容易忘记计算机科学不是编程。我认识了获得CS学士学位并进入医学院的人,以及后来成为程序员的生物学家。然而,没有人问为什么生物学学位不能使他们成为外科医生:每个人都知道学习生物学不是在实践医学。

–肯
2010年5月13日在2:24

@Earlz有多禅:)

– Tullo_x86
2010年5月17日23:38

#16 楼

这样一个坦率的问题,很好的答案-我要简短地鸣叫:)

到目前为止,这些答案让我有些大笑-他们可能讽刺地庆祝我们自己的伟大。我之所以这么来是因为糟糕的文档和框架中的错误。显然这里还有其他黄金,但是即使您确实成为一名出色的开发人员,也值得保持谦卑-我是从个人历史(?)傲慢的角度说的。

请记住,您可能不会(可能不会)被技术人员雇用,尽管更好的HR人员和经理会使用技术人员来评估您。并尊重自己的方式,也许会给自己一些个性化和增强。当雇主没有一个具体的计划时,就会出现困难和机会-提出好的问题并帮助他们指定计划确实可以使您在这些情况下坚持不懈。

商人可以(理应地) )对开发者提供赞助的偏执,因为我们经常不得不稍微管理一下他们的看法,以帮助他们做出他们不理解的决策-我是说,面面相NOT,向您展示不拥有或发展非您的观点科技工作者。我很谦虚地认为,理解这通常是技术人员与非技术人员之间关系的本质很重要-而且我们的工作是呆板,这是很难避免的。确实能找到工作-如果您对专业是什么感到困惑,我确定可以在网上找到工作的地方-我希望当我开始时有人向我指出这一点。 :)

我要说的最后一件事是,随着您在开发和体系结构上的进步,您似乎已经踏上了这条路,您可能会发现自己的专业代码可以成为即使这是适当的解决方案,也会非常令人不满意。

我不确定解决方案是什么,但请尝试寻找出路,并减少工作中的情感投入,这将帮助您调整自己的节奏并过上更好的生活-在尝试付出额外的努力来使自己变得更加谨慎有些“正确”的事情-在很多时候,您会为您的同事带来麻烦,而您几乎永远无法在项目的时间范围内投入所需的时间来实现它。这种现象的症状是“天黑了”-当您不想向任何人解释您想做什么。许多优秀的开发人员都可以向一个外行人解释他们在做什么的精髓-这是一种学习的绝妙技能,而且我发现它在实践中具有智力上的解放。

,首先将您的任务分成几部分,总计时间,然后再加倍(这就是所谓的,划分,征服,进军;)

祝您好运!我离开学校,期望成为一名滑雪教练,并最终成为一名首席开发人员。我相信您最终所做的一切都会做得很好。

评论


您的第一句话说您会短暂地鸣叫...但是您在这里得到的答案最长。 ;)

–约翰Y
2010年5月13日下午2:27

+1代表“将您的任务分成几部分,总计时间,然后将其加倍(称为,划分,征服,进军;)”……尽管在许多工作中,您仍应将其增加三倍,因为经理们希望它能在减少一半的时间,并添加另一个应在相同时间范围内完成的项目,而又不能延长您的估算时间。我什至听说“乘以2并增加单位(1小时=> 2天,1天=> 2周,1周=> 2个月,1个月=> 2个季度,1个季度=> 2年,.. 。)并且经过一些实际的工作经验,它没有我一直想的那么有趣

– dbemerlin
2010年5月13日在21:21

刚印出来并粘在墙上

–问题是什么
2011年1月7日15:55

#17 楼

是的,这是相当正常的-大多数学校,甚至是著名的学校,在计算机科学教学方面都做得很好,而在软件开发方面的教学也很糟糕。情况逐渐好转,但还有很长的路要走。

听起来您正在做大多数正确的事情:不在工作范围内的程序
阅读有关软件开发的书籍(代码完成,设计模式,神话般的月度等)。
继续学习新技术-学校应该教会您如何学习语言,而不是语言他们自己。了解新的框架,IDE,API,库,构建工具等。
在SO之类的网站或此处徘徊。定期与有经验的人进行互动是智慧的少数半捷径之一。


评论


老实说,《神话人月》被高估了,不是吗? (但我真的很喜欢“ *简而言之”这类书)。

–卡米洛·马丁(Camilo Martin)
2010-11-27 12:27



@Camilo不同意。神话般的月刊以软件工程为主题,而简而言之则仅涉及一种技术。最终,您将需要了解软件开发中的人为问题。 MMM是涵盖该主题的读物之一。

–布莱恩·威金顿
2011年2月12日在21:09

#18 楼

真是个好问题。我敢肯定,有很多人正在经历您在各行各业和就业市场中所描述的事情。 。不允许您强调甚至思考学校,您学过或没有学过的东西,或者您在学业上的表现如何。

第二个-专长。即使对所做的事情一无所知,也总是需要真正擅长做事的人。您需要选择自己喜欢的编程语言,并下决心完全掌握该语言并“使其成为自己的语言”。关于如何提高编程技巧,您已经有了很多不错的建议,但是到最后,没有什么比做找一本有关该主题的权威书籍并将自己锁在房间里几天更重要了,而您什么也不做,只能阅读每一页并写出本书给出的每个例子。

第三-做广告。在计算机科学的历史上,这一步骤从未像现在这样简单。您给出的答案以及在SO上提出的问题就是您的简历。自己决定成为您决定掌握的该语言的SO权威。对服务器上带有您的标签的任何问题负责,即使这意味着要花费大量时间进行深入研究并提出较晚的答案。搜索档案,并仔细阅读有关您的主题的所有问题。修复错误信息,提供您自己的答案和答案的变体,并将一些现有答案合并为一个更好的答案。用大量的评论,答案和编辑流充斥SO,这应该是您的存在理由(加上它的乐趣,因为您会获得声望点)。

第四-发挥公众形象。自信对于找到最佳工作至关重要。公司希望有出色的同事,合作者和沟通者。如果您认为这可能是个问题,请告诉您的朋友,您需要他们来提升自我,并给您提供无穷的补给,然后前往当地的图书馆,选择其中一个。

评论


+1表示协作/沟通技巧的重要性。大多数毕业生缺乏他们。

– Denis Otkidach
2010年5月13日在14:23

我不同意专业化,每种技术都会在某天消失,因此,如果您过于专业化,您最终将无法工作……好吧,某些技术(=> COBOL)的消亡速度非常缓慢,这使您有足够的时间专门研究新技术但这仍然有风险。

– dbemerlin
2010年5月13日在21:27

专业化有它的位置,但是我不确定大学毕业是否是正确的时间。我还要为供求争论-专业化技巧的一部分是找到需要填补的利基市场,而不是已经饱满的利基市场。 (以及在COBOL方面-几年前,我在飞机上的同伴看上去是在20多岁的中后期,但是正在处理一个移植旧系统的项目... ,他们仍然坚持使用COBOL,只是不得不迁移到新的硬件上-因此可能存在新一代的COBOL程序员)

–乔
2010年5月15日,3:22

#19 楼

好吧,所以看到了这个黑客新闻,我就像是“真是疯了!”

所以我去年12月毕业于CS学位,觉得我以某种方式设法通过了课程并获得了没有实际获得学位的学位。感觉像我所有的同学都拥有令人难以置信的编码技能,而我所能做的就是制作基本的Java程序。学习如何编码并成为一名优秀的编码人员仅需花费大量时间。有很多东西可以学习,而我的建议只是一点点时间。您将学到东西。就像其他每个人都感到悲伤一样,最好的学习方法是通过编码来完成。更不用说构建应用程序的太多了,他们甚至都不会在学校告诉您。别难过,只要知道有很多东西可以学,并意识到要花点时间去学习。

我认为您应该绝对可以俯瞰您长大的城市。那里有大量公司在招聘CS毕业生,但并非所有公司都要求或期望您成为刚毕业的优秀程序员。在没有询问任何编码问题的情况下,我进行了很多采访(还有很多询问我解决算法和编码的问题)。向那些比您已经了解的知识更在乎您的学习能力的公司申请(据我的经验,较大的公司更在乎这一点,因为如果您不能立即编写代码,这对他们的影响不会太大)。

我不知道编码是否是您要执行和追求的,但是还有很多非技术性工作需要技术背景。您可以查看这些选项。

我不会专注于学习一种语言(如C#或Java)的来龙去脉,而不会关注编程原理。您应该能够转移良好的编码技能,并以任何语言应用它们(这对您职业生涯的长寿很重要。Java不会永远流行)。另一方面,了解“热门技能”可以帮助找到工作。面试技巧非常重要。接受每次面试,即使只是为了练习。

无论如何,您都不会觉得像IBM这样的大公司遥不可及。几个月前,我的感觉和您一样,现在我在IBM工作。我的GPA也不太好。我仍然很喜欢编程,但是我知道随着时间的推移我会变得更好。只要对您的学习能力充满信心!

评论


我要说的是,像IBM这样的大公司比其他许多地方都可以触及更多-他们在那里有足够的人才可以训练他们的人才库,这与较小的地方不一样。而且总是有实习机会-毕业后可能会有点晚,但是许多政府机构都聘请了暑期实习生...因此您可以在履历表中找到“ NASA”或类似名称。

–乔
2010年5月15日在3:27

#20 楼

哇,在这之前有很多答案。

完全不同的答案又如何呢...

让我们从成为人类的角度来重新构想您的问题。

“我已经毕业了构想班,我即将出生。我的母亲加冕了,我定于明天早上出生。但是当我看着像Usain Bolt这样的运动员时,我想:“我能跑得那么快吗?”。

但是,你在这里,你是一个完全成熟的人,你已经上过学,可以走路,说话,如果你完成了计算机课程,您很聪明地启动。没什么可羞愧的。

现在,Usain Bolt出生了,然后突然开始在赛道上发疯了吗?生活,找出他感兴趣的东西,然后进行大量应用,然后突然出现“ Bam!”,他在那里。

后者的可能性更大。因此,不要费劲自己不知道该怎么做的时间我来找出适合您的方法。那是给你的,不是你父母的想法,不是你父母的想法。什么是最适合您的。什么点燃了你的火。是什么让您认为*“这很酷”,即使其他人都认为那是裤子。

开始(和/或)学位并不清楚自己想做什么会很常见。 br />
对我来说,我在O级(英国学历)上学得很好,但我不能对A级水平(要求进入大学攻读学位)一无所知。我去了一个较小的地方攻读我的学位(结果不是我本来想要的学位),但是我坚持了下来(仍然不知道我想要的职业是什么),并且学到了很多关于电子学和东西的知识大多数软件人员从未学习过。在这段时间里,我是计算机游戏作家的自由职业者。

最终结果?获得学位(受到嘉奖)后,我以一份面试机会进入了一份工作,这份工作的薪水比从事电子行业的人要高,而且我没有换头发或穿西装。什么?在23岁那件事很重要(现在回想一下,在44岁的时候,我有点笑了,但这就是年轻人对你的虚弱感。)

那家公司破产了,然后我开始变得更认真。但是大概没过几年,我突然(偶然)发现了我真正感兴趣的东西。原来是底层软件工具。应该是显而易见的-我写的所有计算机游戏都是汇编语言编写的,我一直很喜欢低级的东西,没人敢动摇。但是要看到这是一个未来,那需要更多的成熟,也就不足为奇了,直到20岁中期才真正显现出来。

我经常给年轻人留下深刻的印象(并且感到惊讶),还在十几岁的时候,似乎知道他们想做什么。但真正的问题是,他们是否还在27岁时就这样做?还是因为他们的早期想法不适合他们而改变了方向?

我该如何做像THAT一样令人印象深刻的事情(无论是Google还是SO)?好吧,就像您在做软件以及生活中的其他一切一样,您需要分块进行。您从基础开始,获得经验。如果您足够优秀,那么您会继续前进并获得更多经验,或者放弃它,因为您意识到自己不够出色或者它像地狱一样无聊(这就是为什么我不做通讯,尽管它总是真是个金矿。对我来说,这很无聊!)

通过各种方式,看看您的同龄人,看看您的长辈,检查他们的选择和兴趣。但也请自己检查。通常,乍一看似乎疯狂/疯狂的是真正的交易。做一些您认为有趣的事情(而不是仅仅支付账单)会带来更大的回报。

是的,我知道,当您23岁时,您就专注于奥迪TT和凉爽的汽车,因此受到金钱的诱惑,而不是明智的职业选择,但是认真地,在某个时候,您会意识到,凉爽的汽车并没有全部被淘汰。成为-这个女孩应该喜欢你,因为你是谁,而不是你开车的样子。

认真考虑。不太酷的解决方案可能只是正确的答案。

评论


-1:您能收紧一点,集中精力在问题上,而不在乎自己吗?

– Jim G.
2010-6-5 15:32

它不关乎“我”,而是关乎我如何从那里到达这里,而最初并不知道“这里”在哪里。我只是以自己的经历为例,因为我比别人的经历更了解我的经历。如果您以我的身份阅读它,那么您会从错误的角度阅读它。通常,如果您像说的那样“收紧”事物,那么您无法为所表达的观点提供任何背景知识,并使读者感到困惑。我本可以写成“我不知道我毕业时想做什么,但是现在我可以等等”。这不会激发任何人继续前进-没有“真正的理由相信”(TM)。

–斯蒂芬·凯利特(Stephen Kellett)
2010年6月7日19:20

好答案,斯蒂芬。只是来自与此处其他答案不同的POV。

–彼得·威尔逊(Pete Wilson)
10 Jul 23 '13:42

+1,希望我可以增加1000票,将其作为最佳答案。感动我!

–恶魔金
2011年1月20日在18:15

#21 楼

除了其他人的建议外,我还要参加您所在地区的开发人员活动。查找聚会,用户组,营地,代码营地等。这将帮助您与其他开发人员建立联系,获得工作机会,紧跟新技术并提供对其他开发人员技能水平的真实了解。

评论


我想听一听。做这个。我刚从一家在医院从事病历工作的科技学校毕业。我开始参加本地.NET会议。花了一些时间,但最终找到了一家从事服务器和应用程序支持的开发公司的职位。虽然这不是我人生中的最终目标,但它却扫除了扫描医疗文件的麻烦。

–percent20
2010年5月16日在16:51

#22 楼

遵循10,000小时的规则。

要成为某个东西的大师,您需要练习至少10,000小时。因此,花费10,000个小时进行编程,您将成为它的主人。如果您没有花费10,000个小时进行编程,并且不觉得自己是熟练的技术专家,请不要灰心,只需花更多的时间进行编码。

还请注意,它可能会带您走动如果您每天编程8个小时,则需要3年半的时间来执行此操作。如果您仅在工作时间进行编程,则可能需要大约4年的时间。如果您在3/4年的学位课程中没有花那么多时间,那么您可能不会觉得自己像个大师。

评论


而且您必须确保不要一遍又一遍地重复同一小时!推动自己继续学习。

– Froome
2011年1月13日在17:03

+1表示10k规则。第一次听说它,但是听起来在市场上很棒,而且非常真实。

–volkerjaan
2011年1月26日在8:49

#23 楼

如果可以的话,我只想一想。这不是很麻烦,甚至令人恐惧吗?这就像在70年代淹没了英语系的欺诈行为一样令人不安:文学不是一堆可以理解和整合的思想,而是一堆学生必须抽象和“解构”的“文本”(http:// /www.answers.com/topic/deconstruction)。令人高兴的是,那股恶臭的潮水正在消退,也许是因为那些在杂草丛生的海浪中消灭的教练现在正在退休。

几年前-几十年前-我在CS上的第一门课程使用诸如排序,哈希和搜索(当然,还有递归)之类的实际问题教会了我汇编语言(在发明C之前)。我的第二门课程讲授了真正的实时编译器的设计和实现。我是麻省理工学院的兼职学生,这两个课程是我开始以程序员身份获得报酬所需要的;并在两三个月后变得有些生产力。

因此,今天早上,听到温迪的哭泣,我想当然是,在所有地方,麻省理工学院都不可能稀释其产品范围并在(在编程实践的背景下)欺骗学生,无用的废话。但是,当我看一下MIT的EE / CS课程时,我看到的就是这样:

http://student.mit.edu/catalog/m6a.html

我特别要注意的是,该部门使用Python作为一种教学语言!我的意思是,真的!看起来MIT的CS学位意味着要使学生有资格成为MIT的CS老师。谈论递归!

然后我看到了对编码恐怖的贡献(http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html)并非常重视这次对话:

“我(关于预测程序员候选人的成功的讨论)是后来者,但是根据我作为一个开花期很晚的30岁CS本科生的经验,我发现编程课程毫无用处,并且在我只是去过一所社区大学,然后去了芝加哥的伊利诺伊大学,但是编程入门课程是:

“ 1。面向对象,这使学生对程序方法几乎不了解,甚至没有理解。

“ 2.淘汰课程。这些课程主要包括对不同类型问题的描述以及其背后的数学,而不是语法和结构,要让人们读这本书。

”直到“数据结构”核心才几乎没有直接承认代码,然后它仍然取决于您获得的指导者,有些是代码很轻,有些代码很重。您可以说,此时让教师成为代码轻便是一个很大的诱惑,因为如果他们专注于代码,他们还必须专注于教那些已经学习了两年计算机科学课程的学生如何编程。

“由于编码是许多年轻人的业余爱好,我认为教育机构依靠它来建立预期的学习曲线,从而使几乎没有经验或没有编程经验的人在入学时就没有选择但是要疯狂地作弊,花所有的业余时间学习代码或换专业,这对我的经验并不一定是抽象思维的缺陷,因为我认识的所有退出CS的人都最终进入了电气工程专业,没什么能撼动抽象前沿的。他们仍然不知道如何编程,同时做我无法做的事情。最荒唐的回忆:

“ 1. Java是必需的编程语言。我不会在这里抨击Java,但是让学生不得不学习自己的垃圾回收不是很好吗?而且指针学习不是一件好事,即使我们从未决定再次和他们一起使用某种语言编程?

“ 2。在被Java困扰之后,参加了一个操作系统理论的核心课程,发现它甚至在校园里甚至没有一个C类就在C语言中(当然)?

”“我当然是30岁,也是经常编程的人之一,所以我没有任何问题,但是我看到很多我认识的人比我更好(从Calculus,DiffEQ和物理学班毕业),他们全心全意地尝试完成一个针对他们的程序。”

只有几个数据点,但正如其他人所说的那样困扰。

-Pete

评论


我对这个讨厌的观点感到非常厌倦。

–安德烈·简·塔克(Andres Jaan Tack)
10年6月24日在11:21

Python是现有的最佳教学语言之一

– Casebash
2010年7月9日,下午5:20

@ codinghorror.com的@ Icplben,Pete或Jamaal?

–扎基
2010年7月10日在9:24

#24 楼

首先,挂在那里!

其次,以下几点对我有帮助:


使您的工作搜索超出您感兴趣的范围。绝对可以重新定位。
因为经验不足,我认为面试官要确保您是一个对工作和解决问题充满激情和朝气的人。所以我确保我对公司的编码感兴趣。我是哪一位;)
问您的面试官问题。研究公司并在面试中准备好一些材料。您使用什么设计模式?为什么用X技术代替Y技术?我觉得这会让您在面试时成为一个整体,并给您休息的机会。
在家玩乐的代码!不一定要成功,而只需编写可能利用您已了解的技术或数据库等技术的代码即可。再次毕业,就挂在那里继续寻找。你的第一份工作在那里。

#25 楼

很少有人会毕业于他们刚刚研究过的专业的任何学科。在这方面,计算机科学并不特别。没有什么能比得上经验经验,您只能从为真正的客户开发功能全面的软件中获得经验,其中涉及所有需求,时间限制,变更和团队合作。

评论


不幸的是,这是事实。学士学位是无用的,只是作为您设法使其通过的徽章。就是说,计算机科学课程对本科生来说是可怕的。 CM的课程要求5项数学,但是将形式语言,自动机和可计算性结合为一门课程,这是一门选修课。

– MIA
2010-09-16在6:31

同意100%。您为什么要成为刚刚获得资格的专家?

– Alex Feinman
2010-09-21 14:20

#26 楼

前几天,我在http://99designs.com/
上找到了这个邪恶的网站,在网站设计或其他设计下,您可能会找到一些与软件相关的项目。

这是一种很好的方法获得编码,发展一些新技能,结识一些可能是潜在雇主的新人,甚至可能赚到一些钱。

我发现,即使您没有这样做,对雇主来说也很有价值没有一份你不单调的工作。证明你到那里去并做了一些项目,最好是可以在面试中炫耀的项目。

评论


我一直忙于以下事情:1)发送简历2)复习书籍,但我没有从事任何项目。顺便说一下,这是一个非常有趣的网站。与软件开发人员相比,它看起来更针对艺术家和设计师,但我将不得不进一步调查。

– wp123
2010年5月13日,0:24

我不会为书那么担心。正如其他地方所提到的,唯一确定的学习方法是边做边学。找工作要花一些时间,不要灰心。不幸的是,但是有时候找到合适的人需要花费几个月的时间。继续尝试:)我同意您的观点,该网站更着重于艺术/设计,尽管如果您对网站感兴趣,也可以选择其中的一些。好处是您可以自己做一个项目,而无需自己构思,您可能会获得报酬,否则您可以在sourceforge.net上查看其他项目创意

–雅各布
2010年5月13日,0:55

#27 楼

不用担心罗马不是一天建成的。

For each P in PeopleYouKnow
Try
  ask/call P for a Job apply for job;
Catch Denial As Exception
  don be worry;
  //you'll get a job later
End Try

Finally
 If you haven't found a job yet
  For each programmingJobAd in internet

 Try
    apply for job;
    Follow up;
  Catch Denial As Exception
   don be worry;
  //you'll get a job later
 End Try
end
//Keep trying.
//find a bug from this code.


编辑:#! diff A B

3c3
<   ask/call P for a Job apply for job;
---
>   ask/call P for a Job job; if job is available apply for job;
9a10
>  //(sic)
14c15
<     apply for job;
---
>     apply for programmingJobAd;
20c21
< end
---
> End


#28 楼

首先,不要担心您无法为google编写代码。谷歌是由许多非常有经验的程序员创建的。这就像完成视觉艺术学位一样,想知道如何制作《最后的晚餐》。

求职时,请不要大惊小怪。只需打电话给他们,说您没有学年,但您仍然想申请。如果他们真的想要这个经验,请询问是否还有更多的初级职位可用-他们也许能够为您创建一个新的职位。大多数工作是为特定人员创建的。确保您联系项目经理,而不是人事部门。人力资源通常不会创造新的工作,它们通常只是筛选求职者以寻找现有工作。在这种情况下,Google是您的朋友;)

除非您想投资大约6个月,否则请勿尝试编写网络应用程序的代码(例如Google或堆栈溢出)。这是一个巨大的学习曲线。您需要学习管理VCS,运行Web服务器,HTML JS和CSS编码,数据库系统以及Web应用程序语言。太残酷了除非您想进行网络工作,否则大多数这些技术都是不可转让的。

如果您想进行网络应用程序,则可以考虑安装一个简单的网络应用程序(例如,基于django的IP国家/地区查询应用程序-http://www.coulix.net/blog/2006/aug/17/ip-country-flags-django-comments/)。您可以花90美元购买Dreamhost折扣码(这样您就可以在真正的Web服务器上工作),然后尝试进行设置。不必太担心安全性或性能(但是一定要使用ssh)-它只是一个学习项目。 br />

评论


我以为Google的第一版是在很短的时间内完成的?像夏天或类似的事情

–埃尔兹
2010年5月13日下午5:22

在您的台式机上Linux下运行的Apache是​​“真正的Web服务器”,无需花钱。您认为托管公司在运营什么?

– TMN
2010年5月14日19:24

@TMN,通过Web服务器,我的意思是生产硬件和软件堆栈。我知道DH使用Apache和MySQL,但是在生产服务器上进行开发具有优点(设置了所有内容,包括邮件之类的棘手东西,它们为您进行了域名注册)和缺点(例如没有root用户,您必须获得用于远程开发)。使用生产服务器可以使您深入网络工作。

–怀抱
2010年5月17日在1:06

#29 楼

您可以阅读有关编程的所有内容,但是只有当您开始学习编程之后,您才能学习如何真正编程。

我建议您开始一个个人项目。您要创建什么?一个游戏?一个博客?没关系做点什么!

然后,在进行一些实际编码(几周或几个月)之后,我建议尝试为开源项目做出贡献。个人项目可以帮助您弄清楚在尚未为您设定目标时如何编程(在学校通常不会教如何实际设计东西)。对现有项目的贡献会教您团队合作并遵循代码标准。

我不会浪费时间阅读很多其他文章。我想说的是,您最多应该读大约20%的时间,而其他80%的时间写代码。 (当然,按时间,我的意思是您将时间花在编程相关的事情上)

#30 楼

好吧,这是我的两美分...加上来自其他一些来源的报价。计算机科学学位和博士学位,
在被要求执行基本编程任务时在面试中失败。

-Dan Kegel通过Jeff Atwood
http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html


这个问题我已经见过很多,甚至直到拥有多年“经验”的人无法执行简单的任务。就我个人而言,我认为教育机构对此负有主要责任,他们是不知道主题或无法教授主题的教师,而应该指导辅导员的学生应该只想花钱买一个特定的东西,而不指导他们。对这个领域本身有合理的兴趣。

从您提出问题的声音中,您正在大学毕业,感觉就像刚被淘汰了几年才得到一张纸。这就是当今许多招聘机构对程序员的看法。他们希望的是已经证明自己可以编程的人,而不仅仅是拥有一张纸的人。但是您首先问这个问题的事实表明我渴望真正学习编程。

您已经学会了最好的事情之一,已经指出了很多次,这是编程的东西。不幸的是,尽管这绝对会增加您对该技术的知识和理解,但是除非您可以在简历中放些东西,否则它不可能帮助您找到工作。

我建议您从构建一些具有特定用途的应用程序开始,弄清楚您可以做什么以及将挑战您的前进方向,然后去一些可以从事自由职业的地方。不要期望您在网络上从事自由职业而获得高额薪水,而是希望将其添加到简历中,而不是钱包中。找到3-5个项目后,您可以指向它们并说“我为之构建”或“我为它们设计了功能”,然后列出所有内容,然后找到一家招聘机构(遍地都是。 (猎头公司),并与他们的一些人一起工作,以简化您的简历,从而突出您在找工作上的教育和机智,并最大程度地减少了缺乏经验的方面。

记得当您与潜在的雇主交谈时(我看到人们一直在混乱),而任何领域的任何人都应该注意的一点是,尽管您绝对不想卖空自己或将其最小化您可以做到,不要自己烦恼,让他们相信您可以做自己不知道如何做的事情。雇主总是有诀窍要求您去做您不知道怎么做的事情,那是您的工作,要弄清楚,但是如果您告诉他们您已经可以,您不可避免地会在以后吃掉您的话。

祝你好运!