大学级和企业级编程之间有什么区别?[关闭]


28

我刚刚完成了IT领域的学士学位课程。我对编码非常感兴趣,并且真的想成为一名专业人士。现在,除了大学课程外,我还自己学习编程(C#)(大学级编程太基础了)。现在我觉得我需要更多时间来接近专业程序员。但是我的一些前辈说,公司世界编程与书呆子编程有很大不同,因此浪费时间没有任何意义。(他们本身不是程序员,这可能是他们听到的)。

通过提高C#的水平会受益吗?还是由于中等水平足以打破面试,对公司而言,较高的水平并不重要,因为它们纯粹依靠培训来教授企业环境中的工作方式,而学到更多对我没有多大帮助?请问是否有一些专业的程序员可以提供帮助,我保证这是每个对编程感兴趣的学生都想在我的阶段提出的问题。“您实际上如何从编程领域的学习者变成专业人士?” -不断学习直到您变得完美为止,或者一旦涵盖了基础知识就必须加入一家公司?


24
学校从来没有为您提供找到工作所需的技能。这是为您提供寻找工作所需的工具。没有什么可以代替现实世界的经验,但是您仍然需要上学。
罗伯特·哈维

5
我认为标题提出了一个有用的问题,但是问题的实质是要寻求职业建议,这是该网站上的主题。
Bryan Oakley

您可能会发现Programmers.SE(白板)的聊天频道是一个提出此类问题的有用场所-那里经常有人在公司领域拥有各种技能。


3
等候接听???这不是在寻求职业建议。是的,这个问题与讨论无关,但可以回答。这个问题有很多不错的答案,除非stackexchange的内存不足,否则不应该删除此问题或采取其他措施。查看接受的答案。它提供一些职业建议吗?
vish213

Answers:


32

在学校和现实世界中编程之间存在许多差异。我不确定是否存在企业编程之类的东西。

根据您实际工作的地方,会有很大的差异。根据手头的任务,差异也很大。

但是,仍然存在一些常见问题。

  • 现实世界的代码生命周期与大学作业完全不同。在现实世界中,编程通常是在一些现有的代码库上进行的。最大的问题之一是避免破坏与客户(可能是内部客户还是外部客户,取决于您的实际工作场所和案例)使用的代码的兼容性。您编写的代码也可能会在以后使用多年(这取决于:网站或某些设备中嵌入的代码的问题不同)。如果您想为此做好准备,请养成为每段代码编写单元测试和功能测试的习惯。现实世界中的代码并非总能做到这一点,但它可以使您在大学和企业界的生活变得更加简单。

  • 在现实世界中,设计/需求通常比在大学氛围中要模糊得多。在编写专业代码时,必须定义代码的目的,而不仅仅是给您带来玩具问题甚至是众所周知的问题。早晚进行设计的可能性很大!客户通常不知道自己想要什么(即使他们知道自己想要什么,可能也不是他们想要的),而经理通常只是描述大局,而给程序员留下了许多细节和选择。根据所采用的方法(“敏捷” -vs-“ V循环”等),选择和详细的问题定义可能迟早会出现,但是您至少应该保持开放的态度,并想知道自己是否在实际执行操作是必须的。如果正在进行的任务太难编写代码或效率低下,您还可以考虑更改需求。无论如何,您最终可能会写出无用或过于复杂的内容,因为客户或您的经理没有理解您的观点,或者他们不同意您的观点。不过,您应该始终对要求提出质疑(这是一种生存技能)。还请记住,需求可能在任务的中间发生变化,因此您应该为此做好准备。

  • 在大学里,当您接到作业时,通常应该编写一些代码。在现实世界中,通常首先要检查是否可以改用现有代码:重用或更改项目的一部分,使用或购买库等。如果找到适合任务的现有代码,则可能最终使用它是否可以(可能存在维护问题,性能问题,版权问题,甚至价格问题),但通常应考虑重用现有代码的选项。

显然,还有许多其他问题与团队合作,项目规模等有关。但是以上几点是您很可能在公司环境中遇到的问题,而不必在大学分配中考虑。


公司编程是指公司中的编程环境。好的回答顺便说一句:-)
vish213

3
好答案@kriss。我要补充一点,重要的是学习用客户的语言而不是“程序化”的语言说话。这将对您的客户和您都有帮助。
Paddy Landau

38

公司编程和大学编程之间的主要区别是规模。在学校里,您永远不会遇到一个人在一个学期之内无法完成的作业。作为专业人士,您可能会与数十名其他程序员一起开发可以持续数年而未完成的软件。

从微观上看,工作没有什么不同。毕竟,如果两者相差太大,那么大学学位对公司将毫无价值。但这有点像烘烤12个饼干和烘烤12,000个饼干之间的区别。您可能真的很擅长前者,而完全不了解后者。

在学校中,您主要关心制定正确的程序。在工作中,仅靠软件是不够的。它必须是可维护的,可测试的,高效的,并且必须由多个人同时进行。那是学校试图教的东西,但是除非真正做到,否则你不可能真正地完全学习它。


以我的经验,大多数“企业代码”都没有努力保持可维护性,可测试性和效率,而是足以在短时间内解决手头的问题。在许多情况下,代码甚至不是“正确的”,而仅仅是“足够正确的”。
西蒙

26

该问题基于无效的假设:

“您实际上如何从编程领域的学习者变成专业人士?”

您通过获得报酬而成为专业人士。您永远都不会停止学习。如果这样做,您的职业生涯就结束了。

走出世界,找到一份工作。您的学习热情是一种财富。


4
这些都是很好的建议,但并不能真正回答问题,对吗?
Bryan Oakley

6
我同意专业的程序员永远不会停止成为学习者-但是,获得薪水会让您成为专业人士。我遇到了许多业余爱好者,他们付钱编写可怕的代码。专业人士的意思是正确地完成工作,并且正确地完成工作,而不是为了获得报酬来编写代码。
2013年

@Bevan也可以说这就是“程序员”和“开发人员”之间的区别。不过,我不确定我站在哪里。
Izkata

3
@Bevan:“专业”一词确实模棱两可;维基词典条目中列出的感官包括“属于某个职业,与之相关或根据其(通常是较高的)标准”和“这是为了金钱而进行的,尤其是作为生计”。自动获得报酬使您成为后一种意义上的专业程序员,即使它对前者没有任何意义。
ruakh

12

简短的回答,是的-公司世界与许多大学环境完全不同。

也就是说,公司知道这一点。我们希望大学毕业生几乎没有用。如果您花时间在自己的编程学习上,那太好了。您无需申请就非常出色,但要了解,保持平庸并不会减少它。

您不会自己学习很多业务需要的东西。尽快申请,同时继续自己学习。


4

通过提高C#的水平会受益吗?

否。我们希望学生在闯入他们的几个月后会变得毫无用处。学位只是赌注。您学习和遵循指示的热情是您的最佳资产。在面试大学毕业生时,我希望有一个适合团队的成员,而不是干扰团队的热门话题。

...更高的水平对公司而言并不重要,因为它们仅依靠培训来教导事物在企业界的运作方式,而学到更多知识对我没有多大帮助?

每个公司的情况都不尽相同,但一般而言,大型公司将接受更系统的培训。这是您的第一个重大决定,您是否喜欢正规培训和高度结构化?如果是这样,请寻求提供该工作的工作。

在编程领域,您实际上是如何从学习者变成专业的?

通过找工作,您可以从学生变成专业人士。我建议老年人通过您的学校与一家公司合作。这是使您的脚湿透并摆脱新职业焦虑的最佳方法。

不断学习,直到您变得完美为止,或者一旦涵盖了基础知识就必须加入一家公司?

找工作,别等。紧张是很常见的,但是对自己的技能诚实,不要掩饰学习更多的热情。多次更换公司是很常见的,尤其是在您职业生涯的早期。

恭喜您完成学位并祝您顺利进入专业编程之旅。


1

我想说的是,公司级编程与大学级编程之间的根本区别在于,公司级编程更多地是一种协作过程,而不是在课堂上遇到的过程,并且重点是产品开发,而不是教学法学习。


1

如果您真的希望企业世界编程将是高级的高级编程文化,那么我想您会感到失望。企业界的编程更多是关于对您编写的代码负责并保持其可维护性。

但是对你的问题

在编程领域,您实际上是如何从学习者变成专业的?

这与公司和大学级别的编程无关,而与总体编程无关。如果您真的想学习开始构建自己的软件,则需要构建一些东西或开始在开源软件项目中工作。问您面对的问题。并阅读他人的代码。


1

卡尔关于规模的答案是正确的。您不必对包含15个数字的数组进行排序,而必须对一百万个(例如,帐号)数据集进行排序。

数据结构和算法类可能会告诉您十二种不同的排序方式。在实际的应用程序中,您可能会抛出order by子句,并让数据库对其进行优化。

至于为企业界做准备,我建议有两种方法:a)进行实习,即使是低薪或无薪的实习也可以让您看着别人工作。b)在所有应用商店中,您都可以尝试编写应用并将其发布到Apple / Google / MS商店。这将帮助您更好地了解工作流程,测试的价值,设置正确的环境和工具的需求等。


1
除了应用商店外,您还想添加一个东西,您可以尝试自愿参加一个小型项目。我的第一个任务是帮助母亲的工作地点提出假期和加班报告:)
SidJ 2013年

0

在公司编程中要做好的主要工作是耐心和与不了解技术的用户进行交流的能力。确保使用单元测试,版本控制,仔细调试并使用正确的跟踪/记录。语言可能会发生变化,但保持镇定并仔细查找问题将始终有效。


-1

除了提供的出色答案外,“企业编程”还涉及不清楚或变化的要求。

如果您的教授在必须交付前两天改变了编程作业的要求,该怎么办?

在行业中这很普遍。

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.