新闻资讯

大学水平和企业编程有什么区别?

日期:2018-06-19 浏览:10

这个问答是每周发布的一系列帖子的一部分,这些帖子强调了技术爱好者遇到的常见问题,并由100多个问答站点组成的免费社区网络Stack Exchange的用户回答。rdasxy问:

当他们毕业并得到第一份工作时,很多学生觉得他们不知道如何编程,尽管他们在大学里可能是优秀的程序员。

学术环境中的编程和现实世界中的编程有什么不同?

请参阅此处的原始问题。

编程本身并不是程序员做出迈克尔的回答( 54票) :

在传统的本科计算机科学程序中,你只学习编程。但现实世界并不需要仅仅是程序员的人。现实世界需要真正的软件工程师。我知道很多工作描述似乎没有表达这种区别,这只会混淆事情。在现实世界中,当需求不是直接提供给您时,您需要能够:

收集和分析需求。设计和分析具有无限可能性的建筑。制定测试计划并付诸实施,以评估和提高系统的质量。与一个背景和经验不同的团队合作。即使你不知道要建什么,也要估计和计划工作。与需求不同但不一定一致的利益相关者进行有效沟通。谈判时间表、预算、质量和功能,而不要让利益相关者失望。哦,是的,而且你也必须能够编写代码,尽管这平均只需要40 %到60 %的软件工程师时间。

所以,新培养的计算机科学专业本科生并不知道如何编程(很多人实际上是非常优秀的程序员)。他们中的许多人不知道如何做别的事情。在vacumeback 2dos答案中的

代码( 22票) :

在大学,你的老师给你:

一个定义明确、孤立的问题,它的解决方案可以在一个短且定义明确的时间范围内提供(以后将被丢弃)。在为解决方案的质量分配明确的度量之前引入的一组定义明确的工具,通过这些工具,您可以轻松确定您的解决方案是否足够好。在现实世界 :

这个问题模糊、复杂,并且嵌入到上下文中。这是一组随时间变化的相互矛盾的要求,您的解决方案必须足够灵活和健壮,以便您在可接受的时间内对这些变化做出反应。工具必须由你挑选。也许你的团队已经有了10年的代码库,也许有一些开源项目,或者商业图书馆会有它。或者,也许你得自己写。要确定软件的当前迭代是否是一种改进(因为您几乎从未真正完成过软件项目),您需要进行回归测试和可用性测试,后者通常意味着模糊、复杂、矛盾、嵌入上下文的需求再次发生变化。结论学校的编程和现实世界的编程与实际上几乎没有重叠的地方有着本质的不同。CS会让你为现实世界的软件开发做好准备,就像体育训练会让军队备战一样。学校很简单迈克邓利维的答案( 6票) :

好答案。让我补充一点,学术编程在规模上几乎是玩具般的。这对教学有好处。作为一名老师,你正在努力最有效地传达思想。缺点是现实编程在质量上是如此不同,很难弥合差距。

一个不同之处在于性能分析。我写了很多文章试图指出这一点。性能分析只是对算法和测量的肤浅分析。要真正有效地做到这一点,你必须把它当作一个调试过程来对待。

另一个不同之处是可维护性。这涵盖了从风格到特定领域语言设计的所有内容。除非你真的知道你在尽量减少什么,否则你不可能有效地做到这一点。

这些东西没有教过,它们对生产力产生了巨大的影响。

现实世界codedimitris mistiotis答案( 5票) :

更新:好像有人在读心术: 毕业生期望与现实

我的看法,还有两个因素:

问题大小:在学术界,我大部分时间都得从头开始开发软件这意味着我遇到的最大程序是我写的最大程序。这就不强调处理和处理由不同软件相互作用而产生的复杂性的必要能力。如果我意识到需要努力去理解复杂性,我可能会选择完全不做这个行业。

读与写:问题大小的另一个副作用是,在现实世界中,我们经常会接触到他人写的作品,或者是为了维护目的(我在学术界没有维护过任何地方)、扩展或者只是分工。因此,读代码比写代码重要很多倍。

改善编程教育的建议:学术界应该让我们更多地接触现实世界,而不是退回到职业培训。医生不得不在某个时候面对一具尸体,看看他们是不是为此而做的(我听说过人们在经历了这种经历后放弃了这门课程的故事)。如果我在20多岁的时候看到一个包含不同编程风格的20K LOC项目,我不得不在一天之内理解,在三天之内修正一个错误,我可能会考虑其他的职业选择——尽管可能不会。

相关: 我的第一份编程工作应该期待什么?

找到更多答案,或者把自己的答案留在原来的帖子里。在程序员处看到更多这样的问答,这是对软件开发概念问题感兴趣的专业程序员的问答网站。如果您有自己的编程问题需要解决,请登录程序员并提出问题(免费)。



联系方式丨CONTACT

  • 全国热线:
  • 传真热线:
  • Q Q咨询:
  • 企业邮箱: