大学里做不出好软件

软件正在吞噬这个世界。尽管年景不好,">Facebook还是创造了650亿美元的市值。这样一个仅仅2000名开发人员的小公司竟能抵得上一个汽车制造公司。

大部分的教授很少编程。因为他们不编程,他们就不会特别强调像代码审查或单元测试这样的好的开发方法。不相信我说的吗?那去GitHub上找找你最喜欢的教授的作品吧。他能充满自豪的在上面展示他开发的代码吗?

因为很少有教授编程,所以你也应该不会吃惊于学校里很少有软件发布途径来供那些想展示自己软件作品的人使用。于是,这也就意味着,即使你开发出高质量的软件,也难有同行来欣赏。

大多数学院里的软件都是由学生写成,他们缺乏经验,缺乏写出好软件的动机。你也许会认为,在学校里花了4年时间,上了无数堂课,做了无数的编程作 业后,大多数计算机科学/工程的学生都应该成为不错的程序员了。但这不是我看到的。部分的原因是学校教育是一个模仿老师的过程。我相信,如果大学四年你是 跟着李纳斯·托沃兹(Linus Torvalds)上课,你一定会成为一个相当不错的操作系统内核编程高手。然而,Linus 不会、也不喜欢当一名大学教授。大学教授不花很多时间去编程,他的学生也会这样。

所以,学校里的软件很烂,是因为学校里的人不善于编程。但这其中还有一些其它因素:

编程可以像煎鸡蛋或建一个鸟窝那么简单。你也知道,写一个PHP脚本把数据库的内容展示到浏览器里并不是那么的难。但要开发出一个不凡的软件则需要程序员表现的像一个创造者。然而,你们的编程课程也许会教如何去煎一个鸡蛋(比喻),但他们不会教你如何设计一个给四星级饭店用的菜肴。创造出新奇软件的门槛也许比你想象的要低。根据一个论文里的算法,我们可以有十几种实现方法,但大部分都是低效率的。即使是已经有原型伪代码提供了, 你仍然需要大量的工作经验在身,才能给出正确的设计。判断如何能正确的实现一个算法也许比你们想象的要难的多。理论家很少有认可这点的,他们通常相信最困 难的部分是用缜密的理论知识设计出算法。他们不知道在两个相同计算复杂度的算法会在软件实现上产生成几个数量级的速度差别。事实上,假设有人告诉你了作家 Stephen King的下一部小说的大纲,你就能写出一部能和King写的一样好的小说吗?很值得怀疑。软件开发也类似。执行是一切。再好的策划也无效。

大多数的学院里的研究者是为自己写软件。 就像烹饪一样:“只给自己写软件的人不知道给别人写软件时有多少工作要做。”相比起在饭店里当一个厨师,给自己做饭要简单容易的多。这两者之间的难度差异 如果说有两个数量级太大,那至少也不在一个数量级上。学术界里很少有人会认可这些。他们基本上写的都是写完即丢的代码:写好程序,使用它,然后忘了它。诸 如维护和文档之类的问题,虽然在一些课堂上也讨论过,但在学院里,鲜有用于实践的。

那么,将来会如何?我对学校里的软件保持悲观态度。也许会有例外,但看总体情况,我不抱太大希望。因此,当我审查一个学生的研究报告或论文时,我会 先假定实现这个理论的软件做的不怎么样。我希望招聘那些新程序员的人也要这样想。鉴于我这样的悲观论调,实际是有一些事情可以做的:如果你想在 Facebook找到一份软件工程师的工作,你就应该多花一些时间在GitHub上,少花一些时间在课堂上。如果你幸运的话,你可以说服学校就你的开源作品给你一些学分。

[本文英文原文链接:On the quality of academic software ]

时间: 2024-10-21 12:30:10

大学里做不出好软件的相关文章

numpy-在Python 的while循环里做不出图,是何原因

问题描述 在Python 的while循环里做不出图,是何原因 因为我前端读取数据花费的时间比较长,我需要在数据读取完毕之后作图,所以选择了while 循环来完成这件事情.但是在while循环中,并不能做出图来,现在我把问题找到,并简化成下面的样子,哪位能帮我分析分析具体,该如何修改. import numpy as np import matplotlib.pyplot as plt x=np.linspace(0,2*pi,20) y=np.sin(x) z=np.cos(x) while

图片-本人菜鸟,我看到视频里老师敲出texts 之后就出来下面的内容,怎么弄的?

问题描述 本人菜鸟,我看到视频里老师敲出texts 之后就出来下面的内容,怎么弄的? 解决方案 一般都是改为ALT+/ 呵呵,主要还是一个人使用eclipse代码提示的习惯了. 用alt+/.需要做两件事. 1,windows-->preference-->workbench-->keys 下设置Content Assist 的快捷键 2,windows-->preference-->workbench-->keys 下设置wordcomletion 的快捷键 改成其它

在不学成风的大学里顶风而上

[来信] 尊敬的贺老师: 我们学校是河南省的一个普通二本高校.通过<逆袭大学>这本书有幸得知您.我是一个软件工程大二在校生,也是CSDN高校俱乐部的在我校的主席.我个人在专业方面学的还算可以,但是我们系院学习的风气特别的差,很大一部分学生每天上课敷衍了事,最近办了一个活动,是关于编程的一个比赛.我们晚上上晚自习,去了各个教室,大二软件工程专业五十多个人只剩下20多个,计算机科学与技术五十多个人剩下了6个.怀揣着想要对系院的学习风气的改变的憧憬,但是现实还是无情地把我打击到了.我不知道该怎么办.

中国人为什么做不出自己的操作系统

前不久在巴塞罗那移动电信世界大会上,业界的关注点从手机硬件转移到了手机操作系统:Mozilla发布了Firefox OS并得到了几大运营商和手机厂商的支持,而Tizen.Ubuntu.Sailfish等操作系统也都在跃跃欲试. 而中国厂商又一次集体缺席.我们能做出漂亮的手机,做出好用的App,却做不出操作系统--近日,工信部电信研究院发布的<移动互联网白皮书(2013)>显示,截至2012年底,Android已经占到中国手机操作系统增量市场的86.4%,苹果的IOS占了8.6%,而国内自主操作

中国人为什么做不出自己的操作系统 基础研发实力缺乏

前不久在巴塞罗那移动电信世界大会上,业界的关注点从手机硬件转移到了手机操作系统:Mozilla发布了Firefox OS并得到了几大运营商和手机厂商的支持,而Tizen.Ubuntu.Sailfish等操作系统也都在跃跃欲试. 而中国厂商又一次集体缺席.我们能做出漂亮的手机,做出好用的App,却做不出操作系统--近日,工信部电信研究院发布的<移动互联网白皮书(2013)>显示,截至2012年底,Android已经占到中国手机操作系统增量市场的86.4%,苹果的IOS占了8.6%,而国内自主操作

vb-请教一个VB做的出入库代码问题

问题描述 请教一个VB做的出入库代码问题 我在用VB做一个出入库的程序,我想在出库的时候让药品按有效期的长短来出库(注:库里有不同批次的药品).比如我想一次出库20盒,库存里有三种批次的药品,第一个批次是2013年的2盒,每二批次的是2014年的10盒,第三批次是2015年的30盒:这样,我想先出每一个批次的2盒,再出每二批次的10盒,再出第三批次的8盒,(三个批次共20盒),该如何写代码.谢谢! 解决方案 如果库存量不大于2就出库2盒,如果大于2并且小于10就出库10盒,如果大于10就出库8.

在做java编的软件的时候涉及到民族文字,怎么处理啊!怎么定义,急!

问题描述 在做java编的软件的时候涉及到民族文字,怎么处理啊!怎么定义,急! 解决方案 解决方案二:用XML文件然后键值对定义解决方案三:楼上的朋友,我是做的<词频统计软件>要怎么定义呢?能在eclipse里直接定义吗?解决方案四:你说的处理是什么含义啊?无法显示么?用GBK应该就可以了解决方案五:可以参考国际化处理方法,直接用UNICODE编码去比较统计

肯德基奶茶里竟喝出甲虫最悲惨是还嚼了嚼

原标题:奶茶里竟喝出甲虫 最悲惨是还嚼了嚼甲虫的身体已经被嚼得变形了"我们口渴买饮料喝,喝到最后,居然吃到一只甲虫!"12日,佛山市南海区的一位市民向羊城晚报爆料,称自己在南海新天地广场的一家肯德基餐厅喝奶茶时居然吃到了甲虫.对此,肯德基表示对顾客的不愉快用餐道歉,并且带顾客到医院做身体检查.8月11日晚上8时左右,郭先生和妻子阳女士一家四口如往日一样在家附近的广场散步.妻子阳女士说,当时由于天气特别闷热,一家四口散完步后就打算到广场附近的肯德基去喝点东西,于是点了四杯"巧克

看我如何在大学里赚到第一桶金

很 多人说,随着大学越来越多,其教育水平也在每况愈下.如今的大学生,再也不如八九十年代那般有含金量.大多数的大学生,上课迟到.早退已成为家常便饭,而真正能在大学中学到东西的人越来越少了.而我在大学里混了两年,突然醒悟到,如果继续这样下去,等我毕业出来,就会像新闻报道的那样,成为百万大学啃老族中的一员.顿时,我感到惶恐不安,想要找到让自己 摆脱困境的方式.两年的玩乐,让我难以跟上大学课程的进度,想要学以致用,在时间上远远不够. 和舍友商量了一段时间,我们决定创业,先做点小买卖.或许我们没有技术,