我最近刚从大学毕业,从那以后我加入了一个开发团队,是迄今为止我最没有经验的开发人员,也许有几个工作条件。同时,团队的其他成员正在摇摆5-10年的经验。
在瓶装作业和测试方面,我是一个非常好的学生和一个非常好的程序员。我已经在一些项目上取得了成功,但是现在我正在使用更大的代码库,学习曲线也更高。
我想知道还有多少其他开发人员开始团队合作,而后如履薄冰。什么时候改变?我如何加快这一过程?我的前辈正在帮助我,但我现在想变得出色并展示自己的价值。
我最近刚从大学毕业,从那以后我加入了一个开发团队,是迄今为止我最没有经验的开发人员,也许有几个工作条件。同时,团队的其他成员正在摇摆5-10年的经验。
在瓶装作业和测试方面,我是一个非常好的学生和一个非常好的程序员。我已经在一些项目上取得了成功,但是现在我正在使用更大的代码库,学习曲线也更高。
我想知道还有多少其他开发人员开始团队合作,而后如履薄冰。什么时候改变?我如何加快这一过程?我的前辈正在帮助我,但我现在想变得出色并展示自己的价值。
Answers:
关于软件开发的有趣的事情是,无论您有多出色,总会有一个更好的人,或者至少有足够不同的人来教您一些东西。不管您的经验水平如何,几个月前写的代码都认为它很烂也很常见。
对我来说,一旦我意识到自己的技能和同事的技能之间的差距,我就开始学习,就像以前从未学过的一样-阅读其他人的代码,博客文章,书籍,关注同事如何完成工作等大学为我准备了计算机科学,但实际上没有为软件开发做准备。差不多4年后的今天,我是一个比以前强大得多的软件开发人员。因此,只需挂在那里,向周围的人学习就可以学到很多。会好起来的。
University prepared me for computer science, but not really for software development.
在某些方面,选择一种编程语言很像选择一种自然语言。您可以在学校学习大量的理论。您学习了语法和词汇表的基本要素,并认为自己相当不错,直到与母语为母语的人进行真正的交谈,然后完全迷失了方向。
真正学习语言的方式,就是可以与母语人士进行对话的方式,是每天每天实际讲一种语言。这通常意味着要住在说话的地方。那是一件有趣的事情发生的时候。尽管您在学校学到的东西一无是处,但就其本身而言,在外国的大街上,却为您提供了良好而坚实的理论基础,使实际的语言学习变得更加容易。(至少这是我在西班牙语方面的经验。)
编程是相同的方式。您在学校学到的东西并不能为您做真正的程序员所要做的工作做好准备,但是(假设您所在的主管学校不会为了普及而愚弄一切)可以帮助您做好准备。您的想法,这样当真正学习成为一名优秀的编码人员时,您所需要的基本概念已经到位。(至少那是我的编程经验。):-)
大学计算机科学学位中有很多优秀的程序员,其中大多数与他们相同。
正如人们在上面讨论的那样,关于计算机科学的问题是,它与编程不同。我在大学学习的很多东西我基本上都还没准备好-当我听到关于这方面的演讲时,有很多东西看起来像是在胡说八道的学术废话,但几年后我希望我后来我再次学习了一堆我认为毫无用处的东西,因此更加关注了它。我实际上认为,如果那是您想要做的,那么可以在开始获得计算机科学学位之前先在商业环境中进行几年编程。
另外,我认为在大学里,您不一定会学习。我从错误中学到的东西或从其他开发者那里学到的很多东西肯定是我的讲师和研究生在大学时所知道的,但是我不知道理解它们会很有用。向人们询问您在学习做某事时遇到的问题(这实际上适用于任何事情),使学习过程更顺畅,痛苦更少。您可以为自己或他人学习的大多数东西-鉴于我为自己所学的许多课程都是从痛苦的错误中吸取的,因此我会选择向其他人学习...
完全没有,我假装自己是一个程序员,并且很难学。我以自由职业者的身份赢得了第一个客户,并且在C / C ++方面表现不佳,最终获得了胜利。我记得花了几个小时才了解在结构上执行malloc不足以同时为结构中的指针分配内存。
我认为我没有学到任何关于编程的事实,至少我没有在大学里接触过。当然,我到处都学习了新的编程语言,学习了新的API,新的代码库和新的工具,但是一般概念都是在学校外就出现的。
您所获得的经验是一种本能,它可以加快您缩小所报告的错误的范围,或者直接带您进入编写新代码的最可靠方法。当您是新手时,仍然可以修复相同的错误或实现相同的功能,但是花费的时间更长,并且您更有可能不得不回过头来解决不可预见的问题。
因此,重要的是要有更多有经验的同事来指导您。去他们那里说:“我认为应该这样处理。您能想到更好的方法吗?” 这给您带来的好处,既有为自己解决问题的经验,也有从他人的经验中学习的经验。
没有人提到的一件事是,故意给您解决在学校要解决的问题,以使您轻松了解如何将其用作所教的特定技术。您通常会知道应该针对该特定问题使用哪种技术,因为这是您在课堂上刚刚介绍的那种技术。整个学期的项目虽然有些许麻烦,但与现实世界相比,其范围和复杂性仍然有限。
现实生活中的项目是混乱的,并且会经过多年的发展(我们的软件已有十多年的历史,并且在那段时间一直在不断变化),并且受到许多具有不同技能水平的人的感动。您可能仍在使用10年以前的数据库版本,并且根本无法使用任何更新的SQL技术。您可能使用的是8年前很棒的工具,但是由于它已经被其他东西所取代,所以您在学校没有学到任何东西。但是该公司不想花数月的开发时间来完全替换它。
您陷入一个世界,在这个世界上,开发时间受到客户所要支付的费用以及有时(通常是合理的)人工期限的严重限制。
您可能会被迫使用客户明确要求的工具。您可能有含糊的要求或毫无意义的要求。您可能正在处理一个非常复杂的业务领域,而您对此一无所知,因此甚至无法判断这些要求是否合理。
现实世界中的问题绝不能与他们在学校给您带来的干净的问题相提并论。如果您在第一年的大部分时间里都不感到困惑和不适,那么我会为您担心的。