大学毕业后我应该立即成为一名优秀的程序员吗?


28

可能重复:
我已经获得了计算机科学学位,但是我感觉自己甚至还无法成为一名专业程序员

我最近刚从大学毕业,从那以后我加入了一个开发团队,是迄今为止我最没有经验的开发人员,也许有几个工作条件。同时,团队的其他成员正在摇摆5-10年的经验。

在瓶装作业和测试方面,我是一个非常好的学生和一个非常好的程序员。我已经在一些项目上取得了成功,但是现在我正在使用更大的代码库,学习曲线也更高。

我想知道还有多少其他开发人员开始团队合作,而后如履薄冰。什么时候改变?我如何加快这一过程?我的前辈正在帮助我,但我现在想变得出色并展示自己的价值。

Answers:


50

关于软件开发的有趣的事情是,无论您有多出色,总会有一个更好的人,或者至少有足够不同的人来教您一些东西。不管您的经验水平如何,几个月前写的代码都认为它很烂也很常见。

对我来说,一旦我意识到自己的技能和同事的技能之间的差距,我就开始学习,就像以前从未学过的一样-阅读其他人的代码,博客文章,书籍,关注同事如何完成工作等大学为我准备了计算机科学,但实际上没有为软件开发做准备。差不多4年后的今天,我是一个比以前强大得多的软件开发人员。因此,只需挂在那里,向周围的人学习就可以学到很多。会好起来的。


+1。我也非常喜欢成为团队中的一员,这迫使我调整自己的知识。

27
+1University prepared me for computer science, but not really for software development.
乔治·玛丽安

1
我希望我在完成uni并获得编程业务的第一份(哦,等等)后也能获得同样的经验。
gablin

4
@George:更糟糕的是,现实世界中的许多软件开发都归入“ IT”范畴,这通常归结为将丑陋的用户界面推到数据库表上。:(不完全是一些大学所能为你准备。
亚当潘德

@adam绝对。尽管我有时理解它的必要性,但“足够好”的方法使我发疯。
乔治·马里安

23

不。在我离开大学后的头六个月中,与往年相比,我学到了更多有关编程/软件工程的知识。但是,这并不意味着大学是在浪费时间,它准备了我的思想并提供了可以继续学习的背景知识。

再说一次,现在回想起来,我仍然真的不知道六个月以来我在做什么。


4
好说,我的教授们总是说:“工业界和学术界之间存在很大差距。” 难以置信,直到您进入现实世界并意识到那里确实存在!
克里斯,2010年

这个。这就是为什么无薪实习或您能得到的任何东西如此有价值的原因。地狱,即使是非编程实习,在经验上也比任何一个班级都有价值得多,因为您会学到与人共事的一些陷阱。
2012年

10

教育为您提供了基础,但并不能为您在现实生活中进行软件开发做准备。那是经验。当我第一次开始为工作编程时,我肯定和你处于同样的情况。只要您继续学习,阅读书籍,博客文章并在工作中运用所学知识,您就将得到改善。关键是运用所学知识。只是阅读无济于事,您必须积极应用新知识。


+1应用您所学。我忘了提到那部分。:)
Adam Lear

7

我肯定以为是,但不是。

相信我,在您的职业生涯的某个时候,您将回过头来处理您编写的某些代码,但是多年没有接触过,并且迫切希望没有其他专业开发人员能看到该代码或知道您编写了该代码。那意味着你正在成长。


4

在某些方面,选择一种编程语言很像选择一种自然语言。您可以在学校学习大量的理论。您学习了语法和词汇表的基本要素,并认为自己相当不错,直到与母语为母语的人进行真正的交谈,然后完全迷失了方向。

真正学习语言的方式,就是可以与母语人士进行对话的方式,是每天每天实际讲一种语言。这通常意味着要住在说话的地方。那是一件有趣的事情发生的时候。尽管您在学校学到的东西一无是处,但就其本身而言,在外国的大街上,却为您提供了良好而坚实的理论基础,使实际的语言学习变得更加容易。(至少这是我在西班牙语方面的经验。)

编程是相同的方式。您在学校学到的东西并不能为您做真正的程序员所要做的工作做好准备,但是(假设您所在的主管学校不会为了普及而愚弄一切)可以帮助您做好准备。您的想法,这样当真正学习成为一名优秀的编码人员时,您所需要的基本概念已经到位。(至少那是我的编程经验。):-)


2
好的答案,但是我不会说“我在学校学到的东西毫无价值”。我知道您的目标是什么。
gablin

4

大学计算机科学学位中有很多优秀的程序员,其中大多数与他们相同。

正如人们在上面讨论的那样,关于计算机科学的问题是,它与编程不同。我在大学学习的很多东西我基本上都还没准备好-当我听到关于这方面的演讲时,有很多东西看起来像是在胡说八道的学术废话,但几年后我希望我后来我再次学习了一堆我认为毫无用处的东西,因此更加关注了它。我实际上认为,如果那是您想要做的,那么可以在开始获得计算机科学学位之前先在商业环境中进行几年编程。

另外,我认为在大学里,您不一定会学习。我从错误中学到的东西或从其他开发者那里学到的很多东西肯定是我的讲师和研究生在大学时所知道的,但是我不知道理解它们会很有用。向人们询问您在学习做某事时遇到的问题(这实际上适用于任何事情),使学习过程更顺畅,痛苦更少。您可以为自己或他人学习的大多数东西-鉴于我为自己所学的许多课程都是从痛苦的错误中吸取的,因此我会选择向其他人学习...


2

我会引用Brian Hurt的帖子

计算机科学和编程是分开的东西

他还引用了Joel Spolsky的本科课程 和《谁杀死了软件工程师》的精彩文章

所有这些讨论都很好地描述了现实,我认为您的问题回答为“否”,因为大学并不会使您成为一名优秀的程序员。您需要自己使自己成为一名优秀的程序员。

我没有CS学位,但是我从事软件的专业编程和开发已有8年了。我已经掌握了所有编程技能,而且已经学会了自己。


1

完全没有,我假装自己是一个程序员,并且很难学。我以自由职业者的身份赢得了第一个客户,并且在C / C ++方面表现不佳,最终获得了胜利。我记得花了几个小时才了解在结构上执行malloc不足以同时为结构中的指针分配内存。


你最初的学位是什么?您的辛苦终于得到回报了吗?
rwong

我是一名电子工程师,我在Matalb方面表现不错,但是对C / C ++和Java的了解很少。信不信由你,我的第一项真正的编程工作是为Windows CE编写驱动程序并将其移植到此设备:eurotech.com/EN/innovation.aspx?pg=wearable。在公司的帮助下,我得到了一些帮助,但是基本上我是一个人在家里工作,浪费了很多时间做很少的事情。但是您敢打赌,我没有忘记任何事情!我仍在学习,但现在我拥有一家初创公司,在做一个非常大的程序……所以它得到了回报。
martjno

1

大学毕业时,我是一个相当不错的程序员。甚至在毕业前几个月,我就获得了一份令人眼花offer乱的工作机会(我拒绝了,甚至获得了一个更加时髦的工作机会)。

关键是我作为业余爱好者做了很多工作,在学年期间从事网络开发工作,并在IBM 进行了优质的夏季实习(“ ExtremeBlue speed-teams”和“ ExtremeBlue”计划适当)。良好的专业经验将使您在毕业后略过入门级课程。

(也就是说,在头六个月左右的Real Job(tm)编程方面我仍然好得多。不是我后来做的,而是那时候确实表现出很多。)


1

当我从高中直接上班时,我可以给你一个相反的答案。我开始以自以为是的程序员的身份工作,而我几乎立即在老板给我的项目中取得了成果。我有一些同事拥有新的计算机科学学位,而他们根本没有生产力。

随着时间的流逝,一些毕业的同事大大提高了他们的技能,而另一些则没有,这与他们的GPA无关。


1

大学不会教您成为现实世界的程序员。我猜这与他们的学位课程相比在很多工作上是相似的。我不会说我没有获得学位,但是这比实际花4年工作要有用得多。

不过没关系。我开始的每项工作都可能使我不合格。如果您对自己的能力充满信心并致力于学习,那么您可以加紧工作。


1

我认为我没有学到任何关于编程的事实,至少我没有在大学里接触过。当然,我到处都学习了新的编程语言,学习了新的API,新的代码库和新的工具,但是一般概念都是在学校外就出现的。

您所获得的经验是一种本能,它可以加快您缩小所报告的错误的范围,或者直接带您进入编写新代码的最可靠方法。当您是新手时,仍然可以修复相同的错误或实现相同的功能,但是花费的时间更长,并且您更有可能不得不回过头来解决不可预见的问题。

因此,重要的是要有更多有经验的同事来指导您。去他们那里说:“我认为应该这样处理。您能想到更好的方法吗?” 这给您带来的好处,既有为自己解决问题的经验,也有从他人的经验中学习的经验。


0

我是一个比大学老师更好的程序员。

然后,当我开始工作时,我学到了很棒的编程实践。


0

一个好的程序员总是在学习……学习一种不同的方法或者更好的方法来学习。无论您的其他程序员必须教您什么,我都会听。


0

没有人提到的一件事是,故意给您解决在学校要解决的问题,以使您轻松了解如何将其用作所教的特定技术。您通常会知道应该针对该特定问题使用哪种技术,因为这是您在课堂上刚刚介绍的那种技术。整个学期的项目虽然有些许麻烦,但与现实世界相比,其范围和复杂性仍然有限。

现实生活中的项目是混乱的,并且会经过多年的发展(我们的软件已有十多年的历史,并且在那段时间一直在不断变化),并且受到许多具有不同技能水平的人的感动。您可能仍在使用10年以前的数据库版本,并且根本无法使用任何更新的SQL技术。您可能使用的是8年前很棒的工具,但是由于它已经被其他东西所取代,所以您在学校没有学到任何东西。但是该公司不想花数月的开发时间来完全替换它。

您陷入一个世界,在这个世界上,开发时间受到客户所要支付的费用以及有时(通常是合理的)人工期限的严重限制。

您可能会被迫使用客户明确要求的工具。您可能有含糊的要求或毫无意义的要求。您可能正在处理一个非常复杂的业务领域,而您对此一无所知,因此甚至无法判断这些要求是否合理。

现实世界中的问题绝不能与他们在学校给您带来的干净的问题相提并论。如果您在第一年的大部分时间里都不感到困惑和不适,那么我会为您担心的。


0

比那更糟的是……在工作了几年之后,您将对所学到的东西感到非常满意。但是随后您将换工作,新公司(甚至同一公司内的新集团)的工作方式将有所不同,您会觉得自己回到了第一方。将有不同的代码,不同的编码标准,不同的工具和不同的过程,经过两天的时间,您会想知道自己在上一份工作中是否真的学到了什么。这次您将更快地克服掉水里的鱼,但是它仍然会花费比您想要的更长的时间。

每次切换工作时都有一个适应期。随着经验的积累,它会越来越短,但始终存在。

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.