这里的想法是让更好的程序员从大学毕业。
我想我必须使用算法,它不是你可以很容易地自己掌握的东西,我认为它可以让你更深入地看待软件的效率和正确性。
我也相信教授实际编程可能会有所帮助,但我学到了我在工作中学到的大部分编程知识,这让我认为其中一些编程课程块(不是全部)可以更好地使用。
这些结果将成为我想写给我以前学校的 CS 部门的一封信的一部分,我认为我参加的很多课程根本没有帮助,还有一些我认为非常宝贵的课程。
这里的想法是让更好的程序员从大学毕业。
我想我必须使用算法,它不是你可以很容易地自己掌握的东西,我认为它可以让你更深入地看待软件的效率和正确性。
我也相信教授实际编程可能会有所帮助,但我学到了我在工作中学到的大部分编程知识,这让我认为其中一些编程课程块(不是全部)可以更好地使用。
这些结果将成为我想写给我以前学校的 CS 部门的一封信的一部分,我认为我参加的很多课程根本没有帮助,还有一些我认为非常宝贵的课程。
我还没有找到一门很好的 CompSci 课程,可以让软件工程师为工作场所做好充分准备。如果您找到具有以下内容的软件[尽管我怀疑它是否可以称为 CompSci,它更像是真实世界的软件设计,它是一种非常不同的野兽]。
计算机科学是一门更具理论性的学科,具有非常现实的世界意义,但在学术方面更有用。例如,算法设计对软件工程师非常有帮助,但对消费者并没有真正的直接帮助。例如,知道如何构建快速排序算法,或者理解链表遍历并不是真的如此在当今的软件工程环境中很有用——当然,理解理论有助于为工作选择正确的工具,不要误会我的意思。作为开发人员,我们中的许多人依靠计算机科学世界的输出来改进我们的开发工具,事实上,如果没有它们,许多开发人员会陷入困境,但是把计算机科学专业的毕业生放在用户面前,让他们设计一个对他们来说有意义的软件和学术知识将分崩离析,因为两者使用完全不同的语言。
对于软件工程师来说,更有用的课程将包括我能想到的尽可能多的[甚至可能更多]以下组件:
即使你确实设法在你的课程中学到了所有这些,我敢说你仍然会在一个体面的软件开发咨询公司实习三四个月,而不是在整个课程中学到更多。在获得学士学位后的前 6 个月里,我学到的东西比我整个 3 年课程中学到的更多。诚然,如果没有我在该课程中学到的许多东西,我会面无表情,但是有太多不必要的内容可以用更有用的内容代替。
你暑假在一家实际的公司编写软件的课程。
说真的 - CS 课程并不是为了培养优秀的程序员。它们旨在培养计算机科学家,作为副作用,他们也可以编写软件。
计算机科学!=编程。
如果您正在寻找更好的程序员,请寻找具有 2 年制大学课程教育且专门专注于此的人。
实际上,从第一天开始,您就不会被期望成为一名高级开发人员。实际上,学习一些编码基础知识肯定会让您走很长一段路,但是随着时间的推移,我看到不少计算机科学专业的学生在现实世界中挣扎因为他们并不真正知道自己在第一天会做什么。他们在业务领域中挣扎,并理解他们为什么要做他们所做的事情。他们不知道该与谁交流。
没有什么比通过构建项目获得的知识更好的了.
你只能通过“编程”成为更好的程序员,而不仅仅是学习课程并获得高 GPA。
最重要和最相关的不是 CS 课程。你需要好好沟通。无论您上什么课程,您都可以成为更好的听众/读者和更好的作家/演讲者。
这是一个很难回答的问题,但我认为在许多 CS 程序中阻碍程序员的一件事是缺乏动手编码。了解计算机科学的理论很重要,但我认为很多理论性很强的 CS 课程因为不需要在课程中进行编程练习而失败。例如,我见过很多需要研究和论文的 AI 类,但不需要代码。在我看来,理解计算机科学的理论非常重要,但能够应用它也同样重要。
我认为学术的空白应该由学生组织或独立的学生项目来填补。
在我的大学,我们有专门针对 CS 学生的计算机协会学生分会,我们还有一个致力于视频游戏开发的学生组织。这些组织通过从行业中引进演讲者并强迫学生相互合作,帮助向学生传授“现实世界”。
如果学生对领先的软件团体感兴趣,或者如果学生想要在技术上更加熟练,那么我还建议主修计算机科学辅修商业的学生,他们辅修文科。我知道这看起来很奇怪,但我这样做了,我发现它实际上教你如何在纯粹的技术和数学视角之外进行思考,以及如何将人类思维应用于软件开发。
我想说这是数据库系统和软件工程项目课程之间的联系。在我的学校,这两个课程都不是本科学位所必需的,但本科生可以参加。对于大多数程序员来说,掌握一些数据库知识可能比算法更重要。在项目团队中工作,甚至在课程项目中,可以帮助您了解团队动态以及如何在团队环境中工作。
另一方面,我坚信对基础计算机科学主题的良好理解,包括数据结构、算法、操作系统等,对于准备一个程序员成长是至关重要的。
我在谢菲尔德大学的软件工程学位中与工作场所最相关的两个是第二年的 Software Hut 模块,该模块涉及在一个学期内为现实世界的客户生产软件产品的团队。我认为有三个不同的客户,团队相互竞争,为他们生产最好的系统。
然后在第四年,三分之一的成绩来自经营一家软件公司,同样是为现实世界的客户服务。虽然不完全像经营一家实际的企业,但由于我们生产的任何产品都受到知识产权限制(因为我们还是大学的学生,他们拥有这项工作),但我们确实参与了经营公司的大部分方面——禁止任何会计/合同写作。
数据库设计
函数式编程
面向对象编程
x 驱动设计
我的看法(作为一名英语 IT 主管)是,办公室的一天值得在学校呆一周,因此,如果你能找到一种获得一些经验的方法,那将是值得的。
除此之外,只要对自己的能力充满信心,发挥自己的优势,并准备好用谷歌搜索任何你不知道的东西!
如果您想从普通的 IT 人群中脱颖而出,那么请确保您能够正常沟通,因为令人惊讶的是有多少“顶尖”毕业生无法做到。
这一切都取决于你想要编程什么以及你对什么样的问题感兴趣。
显然,一般的组合
离散数学(你的逻辑、图论、一些数论和递归)
算法设计(学习各种解决问题的模型、设计范式、思考计算机资源)
像这样的软件工程(管理软件项目、使用现有组件、成对或成组工作、版本控制、模式等 )
编程强化课程(我参加了这门课程),教你解决问题的一般思路,在编写一行代码之前收集你的想法,接触不同的编程范式
将为您应对大多数编程挑战做好准备。
之后,这一切都取决于您要在哪个域上工作。问问你的导师、你大学的前辈和教授,和他们谈谈你的目标和兴趣。他们会比这里的任何人都更好地为您提供建议。
但是不要忽视批判性思维,写作课。参加可以让您展示自己的想法并为公开演讲做好准备的课程。
大学毕业就成为更好的程序员?直到学校开始教授内聚、耦合、良好的编程实践、版本控制、配置管理、现代开发模型等概念——我不这么认为。我通常看到的是自学者希望自己做正确的事情,或者如果他们幸运地被雇用到一个宣扬和实践好的事情的组织中。
我认为我学到的最多的课程是数据结构和算法。知识独立于技术的进步,它提供了各类程序员使用的基本工具。
我们需要一门课程来构建某种社区服务项目。这要求我们使用和学习整个软件工程策略。
尽管如此,除非老师决定在课堂上放一些古怪的东西,目的是让事情变得尽可能困难,否则这样的课程将大大缺乏......
本科期间的数据结构和算法课程对我的工作有很大帮助