现在的位置: 首页 > 综合 > 正文

代码工养成计划之选择作坊篇

2013年08月04日 ⁄ 综合 ⁄ 共 2377字 ⁄ 字号 评论关闭
刚看完Heroes第一季大结局。原来Heroes是一思想品德教育之青少年励志节目,告诉我们家庭不可替代,爱心战胜一切,骄傲导致失败,粗心酿成大祸。这点还不如Nicolas Cage的新片Next。Next好歹告诉我们一连串的局部优化不一定让我们得到全局最优结果,比如贪婪算法只适用某些情况,比如敏捷开发推崇的频繁迭代不能保证得到稳定适用的架构。

 
我想说什么来着?对了,代码民工养成计划。前两天在Reddit上读到Mark Tarver一篇颇有意思的文章,Hackers and Fighters。文章回答了新闻组上提出的一个问题:对于从事编程这门有前途的手艺,是一桌一椅一电脑自度即悟,还是在学校里若干年才能明心见性,师度成佛?
 
在Mark Tarver看来,靠大量编程横练出来的高手们是实战派,好比街头打架出身,讲究招招见血。学院派的好比武馆出身,往往拳头不如嘴硬,搞不好就成了只讲究"寸止",被泰国人打得满地找牙的传统空手道。一般来说街头喋血的老大们可以轻松干掉武馆的毕业生。但能够开宗立派,睥睨武林的,还是骑墙派:既深研武道,又身经百战。文章挺好看,于是俺又顺藤摸到作者另外一篇火力猛烈的帖子:俺为哈不当教授鸟。文章痛诉Mark当年所在大学迫于政府压力降低教学标准迎合大众。课程要松,所以编译原理这种课就免了。打分要宽,不然学生明年不修你的课,你就只好去教Word For Windows。:-D。Mark比较了1992年和1999年他教的人工智能课。1992年的课有6次作业,最后一个作业实现一个Prolog解释器。而1999年的课只有一个作业,用八周写12行(!)Prolog程序。以至于后来高年级学生可以大大咧咧走进Mark的办公室要求做不需要编程的毕业项目。这两篇文章让我联想到到底什么样的教育项目才真正对学生有益。刚好刘未鹏老大谈到学习编程的方法,朱少民老师也对现在研究生教育质量担忧。俺也就来凑凑热闹。
 
俺其实不算合格的研究生,成天三心二意,还没有拿得出手的成绩,所以只能谈谈心目中学校CS教育的起码要求。想哪儿说哪儿。排名不分先后。
  • 钱,足够的钱。学校学风再好,没有足够的资源还是白搭。钱不需要很多,但至少学生不用为了抢自习教室的座位打架;学校不至于为了省电限时供电;网络中心的老师看人的眼神不用比看贼还凌厉;图书馆里的书龄不用比教授的都高;找台计算机不用比中科大的老大们找个女友都难。。。。我相信大多数学生都是普通人,不用指望在胜似西南联大的环境里变成杨振宁。

  • 课程涵盖足够的理论深度。学校教算法分析和设计么?教计算理论么?教数理逻辑么?教信息理论么?教编程语言么?所谓的编程语言课,不是Java类库大全,Struts/JSF/Spring速成一类的职业培训,而是深入编程原理的基础:各种范式的优劣,语言设计的考量,语言实现的细节。。。最起码,讨论函数编程和逻辑编程么?系统编程课上,讨论系统构建的原理(比如并发理论)么?这些课程不一定在工作中直接派上用场,但能开启我们的心智,培养我们从纷繁扰乱的现象中抽象出计算本质的能力。好比没人靠剑诀杀人,但风清扬全力教给令狐冲的,也就是那3000字的总诀。再说有了理论垫底,以后看论文读专著才有效率,第一时间化学术界黑话为工业界利器才有可能不是?
  • 课程要求编程,大量的编程。精专理论的老大们对这条肯定不屑一顾。不过我们在谈代码工人养成计划,不编程怎么行嗫?对在工业界一线作业的老大们来说,写出漂亮代码才是王道。上学是表象,得到足够的训练才是本质。再生猛的抽象也得通过具体实在的代码表达。一流的编程能力只能靠无数次实战锤炼。专家级的直觉还是来自真刀实枪的搏杀。打不出木人巷、踏不平铜人阵的只怕在江湖上也混不长久。不是剃个光头就能自称少林和尚。光有满腹经纶,不过让夜航船里多点谈资。何况对我们手艺人来说,不动手,怎么能真正理解理论的趣味和思想?
  • 课程够难。嗯,黄荆条子出好汉,野兽课程教人才。程蝶衣销魂唱腔玲珑身段背后是师傅噼啪乱响的板子,和徒弟血痕遍布的勾子(用四川话读哈)。嘿嘿,一不小心露出自己的狰狞面目,还是换个文明点的马甲。俺其实想说,挑战性的作业才能让我们大脑高度兴奋,深刻体会学业的精髓。再说许多人对难度都有本能的适应能力。课程难度低了,我们也不自觉地降低对自己的要求。也就是说,难度低的课程,也能让人叫苦不迭。既然这样,还不如修有点追求的课程。而且读书时记忆最深刻的美好时光,恰恰是那些最辛苦的日子。我还记得修计算理论课时和同学在地下餐厅的冰冷椅子上为BPP = BPPA一类问题通宵达旦;修系统编程课时凌晨三点在机房旁边的休息室里对着匹萨饼狼吞虎咽;为了写出完美的Prolog数据库,我们不惜多用一个周末生成上百页的测试文档,就这样还非用当时半懂不懂的C++模板实现另外一个作业,结果不得不连续两天几乎不合眼才勉强赶完;修系统模拟课时凌晨两点还和同学在ICQ上为马可夫链的细节纠缠;修算法课时,在图书馆面对满纸符号,数次想到放弃,结果作业到期前一小时突然顿悟,一下觉得本来了无头绪的Universal Hashing其实脉路清晰,不由狂喜。。。偷个懒,搬运卓别灵翻译的《阳光小美人》里的对话来总结:“(普鲁斯特)是个法国作家。彻底的失败者。一生没工作,情事不断还是个同性恋。花20年写了一本没几个人看的小说。但他也许是莎士比亚之 后最伟大的作家。晚年回首人生,他发现那些难熬的日子才是一生中最好的时光,因为那些日子造就了他。而快活的日子全是浪费时间,没有任何收获。你想一觉醒 来就到18岁,觉得这样可以跳过高中时期的苦。但高中是你一生中最重要的苦难时光,你不可能经历比这更好的苦难了。”
  • 教课的老师仍然从事一线研究。这样的教授往往有热情,有见地,有感悟。铺陈基础知识的同时,兼顾学科前沿。不仅授业,更传道解惑。

抱歉!评论已关闭.