我即将获得计算机科学学位,但是我不觉得自己会编程


1050

我即将获得计算机科学学位,但是我看到诸如Stack Overflow之类的网站和诸如Google之类的搜索引擎,却不知道我什至会开始写类似的东西。在一个暑假期间,我确实有机会作为iPhone开发人员工作,但我觉得我主要是将其他人编写的库胶合在一起,而对引擎盖背后的机制却不甚了解。

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

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

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

Answers:


533

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

两个建议:

  • 开发游戏
  • 开发一个网站

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

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

  • 还有一件事是“ 阅读书籍和样本 ”,不要羞于问。如果你想学习,你应该问:)

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

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

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

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

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

388

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

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


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

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

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

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

53
当我不将库粘合在一起时,通常是在制作库,以后再将它们粘合在一起。

238

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

  1. 学习,学习和了解更多。这可能是我能给您的最重要的提示。永远不要停止学习。懂一种语言是好,懂多种语言则更好。拥有其他语言的知识将使您成为一个更好的程序员,并使处理某些任务变得更容易,并且将帮助您更好地了解通用数据结构。

  2. 从小开始

  3. 在业余时间开始一项业余爱好项目。不要做一些容易完成的事情。进行一个您不知道从哪里开始的项目。让自己陷入深渊。这样做的好处是,您将学习到从未发现过的东西,并且当您完成它时,您会感到无比的自豪和满足。这就是让我前进的动力。

  4. 对您的工作有真正的热情。尽管人们对此会持不同意见。我认为,如果仅将其视为9-5的工作,就无法在该领域脱颖而出。必须有热情去做。

  5. 帮助其他人!理解的最好方法是尝试将其教给其他人。

  6. 学习其他人的程序并尝试弄清楚它们是如何工作的,然后在自己的程序中实现类似的技术。尝试阅读并获得对它的理解,然后根据该理解自己做,而不是复制和粘贴。

  7. 继续吧。事情有时会变得非常令人沮丧,但完成时却会非常有意义。如果您不了解某些内容,请稍事休息,清除思路,然后重试。问我们吧!我们是一群愿意的人:)

  8. 永远不要停止学习新技术。

  9. 看一些书。我了解作为一名学生,您会读很多书。这里有几本实用的书,您可能会发现它们很方便……希望- 实用程序员:从管理员到大师 - 代码完成:软件构建实用手册


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

7
“知道一种语言是好的”->错误。了解一种语言是足够的。懂多种语言是件好事,学习更多的语言则更好。
DenilsonSáMaia'5

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

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

7
@Denilson,您是否可以不先学习一种语言就学习多种语言?
彼得Török

141

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

如果您需要做一些重大的,从头到尾的工作,而您可能会充满激情,那么您的大脑将开始缠绕整个过程。只要这只是一种职业,而您对它没有爱,您仍然会觉得自己尚未实现。


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

5
+1。我完全同意。启动一个小型应用程序,然后根据需要添加功能。由于建筑物的推移,你开始明白什么可以做更多,你可以添加它。

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

好主意。但是从一些小的核心功能开始,然后慢慢添加。这比尝试获得一个完美的巨型应用程序要更有动力。我也认为您将找不到书籍中提供的大量信息和信息
Xster,2010年

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

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

81
#2 + 1-不要比较自己和人群的知识。
gf 2010年

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

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

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

@Georg-不错的游戏迷。KGS Smandoli

72

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

我即将获得计算机科学学位,但是我不觉得自己会编程。

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

  • 许多雇主不在乎您的成绩单上的是什么课程,甚至都不是您的GPA。相反,他们想知道您能做什么,尤其是您建造了什么。为了做好一项工作,您所建立的内容比简历中的技术(C,C#,您拥有的内容)更为重要。

  • 如果您在学习期间没有机会建立许多有趣的项目,请对您的老师感到羞耻。但是您现在可以构建这些项目。在网站上搜索有趣的问题。我们的第二学期学生刚刚完成“歌曲搜索”,我们为一个网站提取了大量歌词,他们建立了一个倒排索引,为它提供关键字,并在上下文中显示包含这些单词的歌词。它不是Google,而是基于相同的原理和相似的数据结构制作而成的,您现在就可以开始构建它。

我工作很努力,但是没有信心自己去写我的应用程序。

也许您没有为正确的问题而努力?最好发现一些问题

  • 是开放式的
  • 有多个解决方案
  • 有很多不好的解决方案

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

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

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

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


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

提醒我的是:“哈佛大学的大多数成员(我已经八年了,当时只有八年),感觉他们并不真正属于哈佛,对他们的了解还不够,而且一定是因为他们被录用而犯了一些错误。” -克鲁格效应=)

2
+1以构建事物:它使您与众不同,尤其是在它有用的情况下。

5
@Alex,切勿通过HR。如果幸运的话,您认识的人就会认识您想在哪里工作的人。
诺曼·拉姆齐

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

59

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

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

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

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

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

挂在那里!这可能很难,但是您会为有一天的经历感到高兴。


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

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

简历上的任何工作看上去都比缺口好。
Jim C

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

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

59

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

编辑:

这是一个关于SO的重要话题,您可以在编码实践中查找许多链接:

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


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

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

1
我不同意查尔斯-欧拉将提供动力去理解某些概念并执行它们。
10年

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

6
pythonchallenge.com是关键!尽管Euler是需要通过编程解决的数学问题,但pythonchallenge是纯粹的编程问题
Xster 2010年

48

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

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

(与同龄人相比,我大部分的研究生学校经历了一次彻底的失败,并且最终毕业于班上了。)

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

  • 寻找一个可以给您真正价值评估的导师。
  • 进行虚假的采访,并学习如何发挥信心,活力和激情。
  • 当您进行面试时,请谈论您的个人项目并提出技术问题。学习的动力和精力是您的最佳资产。

事后补充:

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

这关系....
保罗·内森

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

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

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

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

39

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

  • 挑你是一个地区的东西充满激情的。找到这一点的最佳地方可能是出于您的兴趣而不是计算机科学。那可能是您参与的非营利组织,是您热衷的爱好,是您从事的运动。

  • 寻找合作者。单独进行编码非常困难,因此,另一最大的帮助是,如果您找到一个可以与您合作进行此项目的伙伴。这使它变得更加有趣,并使您保持动力。杰夫·阿特伍德(Jeff Attwood)在他最近的博客文章中谈到了他构建SO的经验。 http://www.codinghorror.com/blog/2010/05/on-working-remotely.html

  • 选择适度的东西(最初)。理想的项目将从小事情开始。如果出局的目标过于雄心勃勃,那么它将变得过于艰巨。在完成了PC,电话,嵌入式系统和Web的开发之后,我想说Web是寻找其他人可以立即开始使用的可实现内容的最佳场所。

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

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


如果可能的话,选择其他人会使用的东西……那是获得反馈的最佳方式
balalakshmi 2011年

34

从已经从事开发工作20年以上的人的角度出发,提出几点意见:

我看到诸如Stackoverflow之类的网站和诸如Google之类的搜索引擎,甚至都不知道我会在哪里写这样的东西。

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

在一个暑假期间,我确实有机会作为iPhone开发人员工作,但我觉得我主要是将其他人编写的库胶合在一起,而对引擎盖背后的机制却不甚了解。

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

基本上,我即将获得计算机科学学位,但是我不觉得自己已经学会了编程。

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

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

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

祝好运!


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

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

31

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

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

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


27

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

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

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

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

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

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

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

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


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

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

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

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

1
一个有趣的问题,但是为什么您要正常进行ECC测试;),除了硬件之外,当然,但这是一个您可以/不能做的自学式教材的好例子?在compSci上学习

24

您的谦卑会很好地为您服务。该初学者的心态是各种学习,有用的,无论多少,我们的教育和经验有。

正如其他人所建议的那样,在欧拉计划和其他地方进行练习。

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

坚持下去; 你会没事的。


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

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

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

23

拥有理科学士学位,您再也不会让您成为一名出色的程序员,而获得音乐程序学位则不会使您成为一名出色的音乐家。

实践,实践,实践和经验是无可替代的。每天进行8个小时的编程,并在5年后您可能会了解自己现在缺少的知识。


6
那是22个陷阱,不是吗?安排全职工作以获取所需的工作。
Jim Schubert

16
不,在5年内您将意识到自己一无所知:)
Earlz

1
@Earlz,您最终知道的所有内容已经过时了。
丹·布莱恩特

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

1
@Earlz多么禅宗:)
Tullo_x86 2010年

23

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

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

请记住,尽管更好的HR人员和经理会使用技术人员来评估您,但您可能不会(可能不会)被技术人员雇用。

雇主为员工制定了一个计划,尝试并从整体上理解该计划,并尊重自己,可能会给自己带来一些个人动因和增强。当雇主没有一个具体的计划时,就会出现困难和机会-提出好的问题并帮助他们指定计划可以真正让您在这些情况下坚持下去。

商界人士可能会(理直地)对开发人员光顾他们感到偏执,因为我们经常不得不稍微管理一下他们的看法,以帮助他们做出他们不了解的决定-我是说,面面相,,向您展示不要拥有的观点或发展您的非技术同事。我谦虚地认为,了解这通常是技术人员与非技术人员之间关系的本质很重要-而且很难避免,我们的工作是钝器。

做事专业,思想开放,受人尊重确实可以找到工作-如果您不清楚什么是专业人士,我敢肯定在网络上可以找到工作的地方-我希望当我开始时有人向我指出这一点。:)

我要说的最后一件事是,随着您在开发和体系结构方面的进步,并且您听起来已经踏上了这条路,您可能会发现您的专业代码会变得非常不满意,即使它是适当的解决方案。

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

呵呵,在估算时,首先将您的任务分成几部分,总计时间,然后将其加倍(这称为“划分,征服,进军;”)

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


10
您的第一句话说,您会短暂地听到提示音...但是您在这里得到的答案最长。;)

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

刚刚将其打印并粘在墙上
问题

22

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

无论如何,听起来您正在做大多数正确的事情:

  • 工作以外的程序
  • 阅读有关软件开发的书籍(代码完成,设计模式,神话般的人为月等)。
  • 不断学习新技术-学校应该教会您如何学习语言,而不是语言本身。了解新的框架,IDE,API,库,构建工具等。
  • 在诸如SO之类的网站上和此处徘徊。定期与有经验的人进行互动是智慧的少数半捷径之一。

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

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

21

真是个好问题。我敢肯定,有很多人正在经历您在各行各业和就业市场中所说的事情。

首先-不用担心您无法控制的事情。不允许您强调或什至考虑学校,您学过或没有学过的东西,或者您在学业上的表现如何。

第二-专长。即使真正的工作做得晦涩难懂,总会有人真正需要做的事情。您需要选择自己喜欢的编程语言,并下定决心完全掌握该语言并“使其成为您自己的”。您已经有很多有关如何提高编程技能的好建议,但最终,无可比拟的发现关于该主题的权威书籍,将自己锁在房间里几天,而您什么也不做,只能阅读每一页并写下本书给出的每个示例。

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

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


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

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

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

21

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

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

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

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

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

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


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

20

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

完全不同的回应如何...

让我们以人为视角来重新构建您的问题。

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

但是,您在这里,您是一个完全成熟的人,您上过学,可以走路,说话,并且如果您完成了计算机课程,则非常聪明地可以启动。没什么可羞耻的。

现在,乌萨因·博尔特(Usain Bolt)是不是出生了,然后突然开始在赛道上发疯,或者是大量生活,找到他感兴趣的东西,然后进行大量应用,然后突然“ am!” 他在那。

后者更有可能。因此,不要因为不知道应该怎么做而给自己添麻烦。找出适合您的方法需要花费时间。那是给你的,不是你父母的想法,不是你父母的想法。什么是适合您的。什么点燃了你的火。是什么让您觉得*“这很酷”,即使其他人都认为那是裤子。

开始(和/或)离开学位不知道自己想做什么的情况并不少见。

对我而言,我在O级(英国学历)上的成绩很好,但是我对A级(该大学入读该学位的条件)一无所知。因此,我去了一个较小的地方攻读学位(结果是我原本不想的学位)。但是我坚持不懈(仍然不知道我想要的职业是什么),并且学到了很多电子和东西的知识,这是大多数软件人员从未学过的。在这段时间里,我是计算机游戏作家的自由职业者。

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

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

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

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

一定要看你的同龄人,看你的长辈,检查他们的选择和兴趣。但也请自己检查。通常,乍一看似乎疯狂/疯狂的是真正的交易。这样做,你觉得有趣的(而不仅仅是支付账单)的东西是SO更有价值。

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

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


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

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

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

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

18

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


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

17

遵循10,000小时规则。

为了成为某种事物的主人,您需要练习至少10,000个小时。因此,花费10,000个小时进行编程,您将成为它的大师。如果您没有花费10,000个小时进行编程,并且不觉得自己是精通技巧,就不要灰心,只需花更多时间进行编码即可。

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


1
并且您必须确保一次又一次地不在同一小时内工作!推动自己继续学习。
Froome

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

14

如果可以的话,请考虑一下。

温迪说,一个人可以获得CS学位,但对编程实践却一无所知。这不是很大的困扰,甚至令人恐惧吗?这就像在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岁,也是一直编程的人之一,所以我没有问题,但是我看到很多我认识的人比我更擅长抽象(来自微积分,DiffEQ和物理课, ),以及他们对完成针对他们的程序的全部痛苦。”

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

-皮特


我对这个讨厌的观点感到厌倦。
Andres Jaan Tack

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

来自codinghorror.com的@ Icplben,Pete或Jamaal?
扎基

14

首先,挂在那里!

其次,以下是一些对我有所帮助的事情:

  1. 使您的工作搜索超出您感兴趣的区域。绝对可以重新定位。出去看看新地方的好机会!
  2. 由于经验不足,我认为面试官要确保您是一个对工作和解决问题感到兴奋和充满活力的人。所以我确保我对公司的编码感兴趣。我是;)
  3. 向面试官提问。研究公司并在面试中准备好一些材料。您使用什么设计模式?为什么用X技术代替Y技术?我认为这使您在面试中成为一个整体,并给了您休息的机会。
  4. 在家玩乐的代码!它不一定要成功,而只需编写可能利用您已了解的技术或数据库等技术的代码即可。

第三,当我再次毕业时,我和你在一条相似的船上,挂在那儿继续寻找。你的第一份工作在那里。


14

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


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

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

13

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

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

我发现,即使您没有工作,您也不会感到无所适从,这对雇主具有很大的价值。证明你到那里去并做了一些项目,最好是可以在面试中炫耀的项目。


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

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

13

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

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

12

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

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

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

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

如果您想在台式机上做一些事情,可以看看pygame。


我以为Google的第一版是在很短的时间内完成的?像是整个夏天或类似的事情
厄尔兹(Earlz)2010年

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

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

11

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

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

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

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


9

好吧,这是我的两美分...再加上其他来源的报价。

当面试时被要求执行基本编程任务的申请人中,即使是拥有计算机科学硕士学位和博士学位的申请人中,也有令人惊讶的很大一部分。

丹·凯格尔(Dan Kegel)通过杰夫·阿特伍德(Jeff Atwood)

http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

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

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

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

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

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

祝您好运!

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.