it-swarm.cn

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

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

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

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

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

1050
wp123

哇...很多有趣的评论都很好。

我自己学习了编程,但这并不意味着您必须这样做。我儿子正在上大学,即将毕业。刚毕业时,找工作总是很困难。

当您在上课时编写简单的程序时,您喜欢它们吗?如果您一开始就这样做,那么您可能就在正确的地方,如果您不喜欢输入文档,那么可以考虑做一些要求。

听起来您想了解更多,因为您不喜欢仅将事物粘合在一起的iPhone体验。那是一个好兆头,而不是一个坏兆头。

接下来要找到工作取决于您是在大城市还是在乡下居住。

通过创建自己的小网站来学习HTML。选择一种网络语言...(PHP,ColdFusion,DotNet)构建一些简单的站点。

从事任何可以为您提供工作的Web开发工作或编程工作。首先不要担心$$。您的目标是在工作编程上。很难在您自己的项目上在家编程。但是,在工作中,当您需要完成某项工作时,您往往会更加努力地工作,如果发现这样做不好玩,请选择其他IT职业。它确实发生了。

从事任何工作...您将学到...如果您愿意,它将克服。

我从不觉得自己会编程,这是一个很好的信号。我讨厌与那些觉得他们知道他们倾向于编写所有代码并且不记录所做工作的人一起工作。

希望我的评论对您有其他所有出色的评论有所帮助。

1
Nathan Stanford

您将以计算机科学的基础并获得学位证明开始您的软件开发职业?!太棒了!

虽然您可能会担心找工作而没有软件工程所需的技能withCS学位,但请想象在同一地方CS学位。那正是我一年前的样子。

通过使用VBA在Excel和Access中创建单片宏,我在编程中不遗余力,并且在此过程中设法学习了一些SQL。大约一年前,我决定要开始从事软件开发工作,但是我无法想象如果没有CS学位(我在所有事情上都有哲学学士学位)并且零专业开发经验。谁在他们的头脑中会雇用我?

我决定专注于找到一份专注于编写业务应用程序的工作,因此我决定磨练.NET和C#的技能。在9个月前之前,我从未编写过任何一行.NET代码。但是我沉迷于然后我就抬起头来。我挣扎着;我去了尽可能多的用户组。我读过有关编码的博客;我为自己的堆栈溢出感到尴尬(现在仍然如此);我只是听了许多播客,所以我可以熟悉那里的内容。仍然,我感到落后,但是我终于克服了我无法做某事的恐惧。

2.5个月前,我找到了第一份专业开发人员的工作( 我写了一篇关于如何找到我的工作的博客 ,以备您感兴趣。我现在使用VB.NET,VB6和javascript进行编码,并且继续每天学习大量有关编程的知识。但是,如果我能找到工作没有CS学历,我相信您可以建立自己的技能并找到自己的技能。

1
Ben McCormack

我不知道这是否真的可以阅读,但是我觉得有必要把它放在那里。

大学没有教我很多东西。一些基本的编程和数据结构。没事但是它确实向我展示了我如何学习得最好。我从中学到的方法与这里的许多帖子是一致的。我还了解到,我喜欢通过代码创建东西,就像木工喜欢用木头来创建东西一样。因此,在这两件事之间,我花了一些时间来学习它。

雇主知道他们从大学毕业生那里得到什么。他们知道毕业生并不了解很多。但是,有些雇主喜欢这一点,因为这样他们就可以根据自己的文化和思想习惯塑造新人。他们会教您如何使您滚动。准备学习吧。这有其起伏。

不要流汗。 IT行业是最近经济下滑影响最小的行业之一。有工作。我工作的公司刚刚雇用了许多新毕业生。诀窍是找到它们。

祝好运。

1
Tony

您刚刚表达了我对自己的感觉。我几乎要毕业于计算机科学专业,而且我们当中许多人刚刚学习了理论算法,并且很少开发有趣的项目。但是正如基思·尼古拉斯所说

我发现倾向于做得更好的人是那些在职业生涯的早期就致力于在自己的时间发展技能的人。通常是因为他们对软件开发充满热情。

我错过了这一要点,而我刚刚完成了他们要求我在大学里做的事情。这将是我迈出的第一步。

就目前而言,当我尝试做更多事情时,我和您所说的一样:

我觉得我主要是将其他人编写的几乎不了解其机制的库粘合在一起。

我感谢您的帖子以及他们写给“我们”的许多回答,建议和链接。

1
soneangel

检查 http://greatmaps.codeplex.com/ 。一开始我不知道该怎么做;}因此,您只需通过执行操作即可。

PS。我没有“官方”学位,浪费时间。

1
radioman

+1。兴趣非常重要,有时编码需要更多的耐心!

1
Fisher

请记住两件事:

  1. 您不会学习如何在计算机科学程序中进行编程(应用程序)。现实生活中的应用程序不是一两周的“小规模”家庭作业问题。要启动并运行真实的应用程序,需要进行大量的计划和协调。与以往不同,这是一种不同的心态,但是请相信我,您会成功的。

  2. 也许现在情况有所不同。但是当我上大学时,实际上只有两到三位教授是程序员(本科生和研究生)。因此,也许您为应用程序编程感到无准备,因为您被教导是从未在实际应用程序上工作过的人。这并不是说您学到的东西是没有用的……创建应用程序比编程要涉及的更多。这只是意味着您还有很多要学习。没关系,您正在进入一个永不停止学习的领域。

1
Giovanni Galbo

只要继续学习,您就会获得自信:)

1
joven

大约一年后,我将与您的朋友同舟共济(大约在2011/2012年毕业)。在我们学校用Java讲授开发知识的同时,我将大量的业余时间用在其他语言上,例如ASP.NET,PHP,Ruby,TDD,MVC,DDD等,因为我很喜欢它。关于获取代码并将其成型为可以潜在地帮助数百万用户,同时使您赚钱的东西的能力。如果你问我,那就像一门艺术。

通过练习,您只会变得更好。在任何给定的时间,我都会同时执行Web项目,winform项目,WPF和更多项目,因此我不会感到无聊。这些项目甚至不必销售产品(但可能是)。它们主要是帮助我学习不同的技术。

祝你好运!

1
Jack

我是另一个建议加入一个或两个个人项目的人。

我个人没有任何官方编程资格,除了为非计算机科学专业的学生提供的两门本科课程之外,我的专业领域实际上是机械工程。

我之所以这样说,是因为我实际上目前是一家大型研究机构的软件工程师,编程是我的唯一职责。怎么样?因为我积累了大量的经验,只是将编程作为一种爱好。我无法承受太多的业余时间修补工作,这帮助我找到了工作。

我要传达的是,您将在实际编程中学到的东西是您可以获得的最有价值的经验之一-不管是正式课程的一部分,还是只是闲着闲逛都没关系时间。

这也不是说您在课程中学到的并不重要-它确实为您提供了宝贵的经验基础。我当然知道,如果拥有正式的计算机科学背景,我会变得更好-我已经记不清我被简单的事情困住了多少次了,或者我对老板在说什么却一无所知,这仅仅是因为那不见了。

我认为您在“现实”世界中会做的很好。您将通过工作简单地获得经验,任何体面的雇主都知道这一点,并且期望您付出最大的努力和对从经验中学习的承诺。许多雇主(包括我的雇主)专门利用研究生和导师和培训计划来照顾他们的应聘者,以增强他们的经验。而且,如果您觉得自己可以使用更多的经验,那么我衷心建议您在业余时间进行一些修改。

最后,我指出我们永远不会真正停止学习。您可能只是开始您的职业,但是您将继续通过您的工作,您的雇主,您的导师以及您自己来学习并获得经验。不要担心您还没有学到一切-尚有很多时间来积累经验。

祝您未来事业蒸蒸日上!希望能很快找到与工作相关的问题的沼泽地SO!

1
Mac

请注意,在您已经收到的其他明智答案中,我缺少一些东西。如果您遵循有用的建议“做某事”,那么我建议您使自己的事情变得简单。我喜欢开个玩笑,“如果两者都冻结,那么在水上行走和从规范开发软件很容易” ...

因此,如果您决定要“做某事”,

  • 决定程序要做什么(要求)
  • 它将以哪种方式表现(功能)
  • 您将如何实施(技术)

并写下来!

如果您在播放过程中更改文件,请不要忘记检查级联的结果。

玩得开心,并准备变得(非常)耐心。

1
mariotomo

首先,如果您感觉自己还没有做好成为专业程序员的准备,那就是正确的感觉。这就是我即将获得CS学士学位的一半时的感觉,并且如果我不通过大学学习,我会越过不合格的阶段从纸袋中编码的资格。

但是当您获得第一份工作并开始从他人那里学习如何完成“软件工程”工作时,您将相当快地提高技能,甚至可以预见到一点。成功的关键是要了解自己将向他人学习,包括您可能不同意或相处不好的其他人。在我的CS事业的顶峰时期(此后我开始从事其他工作),我领导着一个由12位开发人员组成的团队,负责一家主要软件供应商。所有新员工都认为他们真的很聪明。听得很好的人和一直认为自己真的很聪明的人没有。

但是足够了。让我与您分享我从事软件业务31年后的看法。

刚开始时,我遗忘了代码。那是很正常的-您在uni中的大多数工作可能都非常小,这就是很多人在做小型编码项目时所做的事情。他们坐在电脑旁,不断打字直到问题解决。这没什么不对,如果您开发了一些良好的快速原型制作技能,那么吊索代码的能力将来将得到丰厚的回报。

大约五年后,我从事了相当多的工作-其中一些工作是开源的(我们过去称其为“公共领域”-在源代码中贴上一个告示,上面写着“该软件属于公共领域”),其中有些是“不得用于商业用途”或“您可以做任何事,但可以出售。”没有GPL。但是大约五年后,我了解到我的代码很烂,因为我无法理解几年前所做的任何事情。从中您将发现注释是您的朋友-我在80年代末编写的代码具有不错的代码与注释比率。 80年代初的代码-没那么多。但是,这使您对问题有所了解-四年制大学学位不足以了解您做错了什么。

十年后,我开始需要以我从未想到的方式重用自己的代码。有些代码行得通,有些代码行不通,在接下来的几年里,我厌倦了重新编写代码的过程,并学会了如何成为一名软件架构师。我在开源世界中已有代码,现在已有23年的历史了,某些原始结构仍然存在。好的设计和坚固的架构就是这样的样子-经过时间考验的旧代码,因为当今的计算机与23年前的计算机完全不同。我的手机比20年前的PC更像一台计算机。因此,您将开始学习如何实际design软件,而这实际上不是您在每周一次的3个小时的14至18周的CS课中可以学到的。对?当我是一名架构师时,我会花几个月来设计将在下一发行版中开发的软件。因此,开始寻找模式-这是面向对象语言的特征之一,这使它们更具吸引力(如果使用得当)。他们使您思考更多。每次您写点东西时,都要思考未来。

从15到25年,我领导一个开发团队。有些是新员工,有些是经验丰富的人,我不得不处理自己所拥有的东西,因为我不是可以只雇用我想要的人的经理。这是您将必须学习处理的地方–团队中的不同人员将具有不同的技能和能力。我有一些具备良好的网络技能的人,具有良好的多线程技术的人以及只是通用开发人员的人。在事业上前进的人是与他人相处并能够向他们学习的人。当您获得第一份工作时,请找到一名导师。不要追求最聪明的人,要找一个对你足够高的人,这样你至少可以理解你所教的知识。但是无论您做什么,都要向周围的人学习。

在过去的几年中,我厌倦了从事软件业务的业务。我仍然在开发软件(我目前的应用程序大约是100KLOC Java-全部由我自己编写),但是我主要在软件行业以外工作。这是一个伟大的职业领域,已有30年的历史是一次不错的旅程。

1
Julie in Austin

一个奇妙的问题。从某种程度上讲,您的问题使我思考了我大​​学毕业时的想法。

既然您说您了解C和Python,我的建议是开始参与使用这些语言的任何开源项目。转到sourceforge.net或code.google.com并搜索使用C或Python的项目。一些项目也将有导师。开源项目的优点在于,您可以从自己喜欢的任何地方开始做出贡献,并从那里开始成长。随着您对代码的熟悉程度提高,您可以承担更多任务。

祝您事业顺利。我相信您会找到一些需要您帮助的尼斯项目。最好的部分是您获得经验,并且可以在找工作中证明这一点。

1
yasouser

编程是一种工具。大多数CS学位只是教您如何编程。这就像学习如何使用锤子而不学习如何构建任何东西一样。如果您对问题的领域一无所知,您将很难编写程序来解决问题。您将提供的真正价值在于解决问题,而不是成为程序员。

大学毕业后,我买了许多与公司工作的问题空间相关的书。现在,我被认为是与计算机科学学位无关的领域的“专家”。

1
dwayne963

我认为您应该继续努力。每个成功的人都经历了这个过程,我的意思是你现在正在感觉,但是坚持不懈的努力无疑带来了心灵的美。一次专注于特定问题,通过计划搜索解决方案以有效利用您的时间。

1
Subodh

我同意蒂莫西·怀特曼的观点。获得认证!

我建议[链接文字] [1]。互联网技能是绝对必要的,他们的基础考试将对您进行基础测试。然后,Javascript和Perl考试将为您获取其专业证书。

另外,下载Microsoft的免费Web开发人员和sql Server Express版本,并建立网站。练习和练习,然后获得MS教科书,并参加其70-536和70-562的考试,以获得MCTS(MS认证技术专家)证书。

祝好运。

[1]: http://ciwcertified.com/certifications/program.asp CIW

1
Hal Noyes

首先,我认为我们大学毕业或找工作时都会有这种感觉。经验并非一overnight而就。

但是,可以帮助您快速获得经验的是天生的好奇心和乐于助人的自我开创性。如果您花时间自己学习并发现可以提高自己技能的个人爱好,您将很快学习。总是愿意学习,您会走很长一段路。

如果您目前正在寻找工作,建议您创建一个包含投资组合的个人网站。根据您所学的知识上传已完成的项目。使它看起来很酷。我还会在您的搜索中推荐Indeed.com。

1
MattB

我已经花了一个月的时间找工作,但是我的技能(C,Python,Objective-C)相对较浅,在当地市场上并不是很理想,因为那里对C#,Java和Web开发的需求更高。

您的技能可能比您想像的更有价值。查看Web框架Django。它是围绕CPython构建的Web开发框架。它相当易于使用,功能强大,并且被许多知名公司用于快速开发。

1
SC Ghost

如果您想开发逻辑并进行编程思考,请学习使用诸如C之类的语言进行编程。

阅读并理解Kernighan&Ritchie的C书籍中的示例。搜索谷歌,你会发现电子书。

如果您愿意考虑解决问题(小型编程问题)的方法,则可以尝试学习不同的工具,框架或其他方法。

您也可以尝试准备SCJP考试并阅读所有主题。试用您遇到的所有小程序并进行试验。如果您在SCJP资源上阅读Sun网站,则会发现许多小程序,请尝试理解它们,并尝试自己编写类似的程序。然后,当您习惯于摆动时,可以使用JSP,Servlet,Struts或Spring或其他工具。您首先需要一个很好的基础。

您可以咨询与ACM编程竞赛有关的编程问题,并尝试解决它们。如果不能,请其他人查看解决方案。这样,您将建立强大的逻辑和思考能力。

当您感到舒适时,您可以尝试记住图书馆并对此进行练习。

http://justetc.net/knowledge/index.php?table=Articles&categoryID=32&category=Java

尝试构建一个应用程序。考虑一个小的个人或业务问题,并尝试为此编写一个完整的应用程序。

也许您可以投资于更好的CS计划

1
Sayed

仅仅因为您获得了计算机科学学位,并不意味着您必须为其余职业编程。您是否曾经上过系统分析和设计的任何课程?

1
Dan

当我采访了初级程序员(即刚毕业的大学毕业生)时,我总是问他们正在从事哪些项目,特别是涉及多人团队的课堂项目。毕竟,这是他们通常在实际工作中要做的工作。

如果一个人从未在项目上与其他程序员一起工作过,那可能需要陡峭的学习曲线。

学习如何编程的方法就是学习几乎所有东西的方法:练习实践。很多。

1
David R Tribble

请记住,从第一步开始就是一千英里。一切都是从开始大学学位开始的,只是将您带入人生第一步的桥梁。因此,您才刚刚开始,将所有动作放入您制定的每一个计划中,有一天您会在自己想成为的地方。祝你好运,我的朋友。

1
Vicheanak

毕业于计算机科学专业时,我有同样的感觉,但我一直在读书(从Visual Basic 6开始),然后是Oracle和Java。阅读的内容越多,您就会知道尝试更多。经过四个月的阅读和练习,我解决了那些毕业后很差的算法。

1
pakhtana

嘿!
您的问题很好,对于许多刚刚接受检查的学生来说,这都是现实生活中的情况。我也刚毕业,在整个教育期间,我觉得学校给了我很少的有价值的知识,并且给了我很多毫无意义的信息。

大学的事情是没有时间给你很深的知识。在大多数课程中,您只有时间专注于区域内某个特定区域的基础(是的,就是那么蓬松)。方法要么是,要么只是尝试向学生提供有关该领域的整体知识(当然,这取决于课程的难度)。

毕业后,我自己有幸获得一份发展工作。许多人认为这是不公平的,因为我不是一个不可思议的程序员。我了解基础知识,并且对某些领域有更深入的了解。我通常认为我擅长的是人们应该如何获得知识。据我说,这是学校给我的最重要的知识。就像许多人说的那样,您不能一无所知。重要的是,您最终确实会知道自己应该知道的。因此,比起一开始就知道,了解如何获得所需知识更为重要。

不应低估的一件事是社交技能的价值。您可以成为一名真正的优秀程序员,但在社交方面有残障。您不知道如何提升自己或与他人合作。特别是最后一件事,与人一起工作。在一个项目中,(大多数时候)您被迫与他人一起工作。如果您对此有很大的问题,并且确实找到了工作,那么您可能会很难住在那里。

非常有趣的主题!

1
user373455

拍摄月球,您将落在星空之中。不要犹豫,申请大公司,您永远不会知道他们在寻找什么,我相信,当您刚毕业时,您对任何事情都不了解,您将获得大部分的工作经验。赶快加入,您将成为一名出色的程序员。

1
Harry

使用者30997:

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

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

我不知道我是否可以完全同意你的意见。我确实从我自己在软件工程课程中的亲身经历得知,情况并非如此。在这些课程中,它似乎期望我们会自学对项目需要知道的所有知识,而我们的教授则坚持教UML图,而通常在实际开始编码时,我们通常会扔掉这些图。

但是,我猜测您的学校可能与我的学校不同。我只是想指出,学校项目并不总是像您想象的那么容易。这仅取决于教授及其教学风格。

1
Liars_Paradox

但是,我知道为什么OP想要研究算法。对于刚毕业的计算机科学专业的我们,我们不仅在相互竞争,而且还在竞争那些不选择计算机科学,要么上大学编程或者自学成才的人。对于我们来说,我们的优势不会是我们知道多少种语言,甚至我们是否会很好地了解这些语言。对于计算机科学家来说,他最大的优势将是解决问题的一般能力。如果需要,您以后总是可以查找特定的类或特定的方法。如果您还记得某种语言中的所有知识,那实际上并不重要,因为如果您不知道如何使用它,那么您就不会完成工作。

创建了新语言而旧语言发生了变化,但是编程背后的一般原理(即解决问题的总体原理)保持不变。

1
Liars_Paradox

我注意到您的技能包括Objective-C iPhone和iPAD的开发现在风行一时。购买Mac或获取Mac OS X的VM)图像并开始构建。考虑一下游戏或您希望在iPhone上安装的东西,并将其作为一项爱好项目。我工作的一位研究生开发人员开发了一些iPhone游戏并获得了这份工作,现在他是我们.NET,Java,PHP,Objective-C开发团队的宝贵成员。

正如每个人都说的,不要放弃,只是继续申请所有工作。

1
Nickz

要记住的最大事情是,您去学校获得学位,而不仅仅是教您如何编程。在学校里,他们教您如何思考和解决问题。成为一名优秀的程序员取决于您:),并且需要大量练习。

1
damstr8

首先,请拍打自己的背,因为您的情况并非如此。许多CS毕业生都有这种认识。但是,您需要评估以下几点:

  1. 您浏览Google之类的网站并考虑其实施
  2. 你很诚实

好奇心是您的动力,尤其是在需要不断学习的领域中,好奇心可能被视为资产。

诚实会很有帮助。在小组中工作时,诚实对于小组的成功至关重要。

要学习编程,最好不要一次吸收算法的所有细节。这似乎是一项艰巨的任务。而是选择您喜欢的任务并逐步改进代码。

您精通两种不错的语言:C和python。您可以选择涉及其中任何一个的项目,阅读开源项目的代码,然后尝试对其进行修改以使自己受益。阅读API并将库组合在一起使它们工作很容易;但请尝试了解API背后的设计原则。

最近,当我接受一个新项目时,我开始对其进行背景阅读。我必须将重要的URL保存在文件中,以便我可以将其推荐给我的朋友。然后我想到在浏览器中有一个按钮,单击该按钮会将当前选项卡的URL附加到带有可选注释的预分配文件中。这不是一个很大的任务。但这对我和我的朋友很有用。我还没有做但是我已经和一个朋友谈过,他会尽快做。

1
dknight