体验瑟谷

English Version

关键词:

瑟谷学校,瑟谷模式,巴学园

简介

回忆了本人在波士顿附近的瑟谷学校几天的访问和观察,真实的体验瑟谷环境以及带来的一些思考。


这次访美有幸在瑟谷学校参观了两天。虽然知道瑟谷学校已经十多年了,也通过各种途径读过他们的书,网上的文章,或者看过他们的视频,以及了解不少跟他们比较类似的学校如夏山,但是亲自在瑟谷待上几天,感受还是不一样的。刚到学校这天,校长就跟我说,来这里就是要全身心的体验瑟谷。我也决定放下以前关于瑟谷所有的知识以及好的或者坏的意见,我就是在这里纯粹的感受。

这所波士顿附近的瑟谷学校,是那所最早创立的瑟谷学校,68年创立至今已有约50年历史了。空间很大,主体是两个相隔很远的房子,其间是大片的草地和间或的树木。主房后面就是那个有名的池塘。

sudburymain

主房两层楼有大概十几个房间,分作各种用途。楼上有一间是办公室。其他有给3到6,7岁小孩玩耍的房间,有很多这个年龄阶段喜欢看的书和各种玩具,有ipad。在这个房间里常能看到很小的孩子在读书,经常还是几个小孩一起读。另外有一个艺术室(Art Room),有画笔画板,有做陶器(pottery)的工具等等。还有许多关于艺术的各种书。我看了一下,有绘画,摄影的书,有介绍古希腊艺术,古罗马艺术,日本艺术的书等等。有一个房间是厨房,有各种厨具。《瑟谷传奇》里有专门一章节讲他们的厨房。当时他们有一个很专业的厨师在这当老师,所以厨房办得有声有色。但据瑟谷的老师说,那位老师已经不在了,所以现在厨房的活动没有以前那么多。不过我们在那的时候,还是看到了几次厨房在做东西。厨房做东西时,两边的门上会挂上牌子,告诉大家现在厨房正在做食品,没有厨房使用资格的人不能进入。瑟谷所有的设备旁边都有个名单,名单上是有资格使用这些设备的人,包括教职工。打印机旁的名单最长,估计除了最小的几个学生,其他人都可以使用。其他的房间还有电脑室,并且不止一个。另外有讨论室。希望讨论各种话题的人可以在这个房间里落座。我听了几段他们的讨论,有深有浅的各种主题的讨论都有。比较深的如关于美国大选候选人的资金来源的话题。生活性的话题如咖啡的种类等等。讨论很随意,基本是随着大家的兴趣展开。还有好几个安静室(Quiet Room),希望安静的人可以在这里。我想那些希望考SAT的学生可能会在这里自习吧。

我注意到这间学校的一个很大的特点,就是每个房间里都有很多的书。靠着墙壁都是书架,上面摆满了书。书都有分门别类加了标签,如文化,政治,哲学,艺术等等。我每个房间的书柜都大致扫描了一下,书的种类确实很多,有些书我能够识别的是很不错的书,更多的是我识别不了的书。我留心了一下一个放满了关于中国和中国文化的书架,感觉里面的书都是我自己很想看的书。我心想,如果能在瑟谷待几个月,光看书就很不错了。略有失望的是,我在瑟谷的两天,看到在读书的孩子似乎没有我想象的多。刚才说到的最小的那些小孩倒是经常在找书看。还看到一个大概10岁左右的女孩,捧着本很大的哈利波特一个人很专心的在看。

主房旁边就是《瑟谷传奇》里说的那个篮球场。真的是一天到晚都有人在打篮球。大孩小孩都在一起玩。

和主房隔着整片草地的是个活动室。有较大的表演厅。瑟谷的老师说话剧表演会在这里。另外舞会也是在这。活动室里还有一个专门的游戏机房,以及一个感觉相当专业的音乐室。音乐室是隔音的,并且一面墙是用玻璃隔开的,这样在另一个房间里可以欣赏音乐室里的演奏,象电台的播音室一样。音乐室里音乐设备很全,足以配备一个摇滚乐队了。看了几个孩子的即兴表演,个人感觉水平很不错!

001JOzg1ty72lVTaGXd3f&690

瑟谷学校有两张签到签出表。一张是所有人包括教职工的。所有人到校后都需要签到,离开时要签出。我询问了一下,这张表的主要的目的是为了满足麻省州对学龄儿童的学习时间要求,即每个学龄儿童需要保证平均每天5个小时的学习时间。另外一张表是给超过13岁的学生并且需要经常到校外活动或实习的。瑟谷希望不把超过13岁的学生限制在学校这片地上,给这些学生充分的自由去校外活动。不过并不是只要满13岁就可以自由出校活动。他们需要申请获得出校的资格。如果满13岁并有出校资格,每天出校时只要在这张纸上签出即可,并注明可以联系到的电话。这些学生也需要保证自己有学校电话,有事随时可以给学校打电话。记得《瑟谷传奇》里讲过,瑟谷学校会经常帮助学生联系在社会上做学徒的机会。确实大一点的孩子不应该被限制在学校里的。

整体的感觉,瑟谷是一个帮助孩童寻找自己人生的地方。有书,可以画画,做陶艺,可以玩音乐,可以打篮球钓鱼等等,尽量提供丰富的环境给孩童,让他们在这里发现自己。孩童也有足够的时间,可以发呆,可以“思考人生”,可以与其他(不同年龄的)孩子或者老师交流。可以到校外去寻找各种实践的机会。老师的角色就是帮助学生去做他们自己的探索。

瑟谷每周开一次全校大会(school meeting),每天开一次法律委员会会议。法律委员会会议每天早上11点开始,一般大概一个小时。法律委员会处理学生老师提出的complaints。比较大的事情,比如我们在那里碰到的有人complain音乐室的地上有很多木屑,似乎是打鼓的时候震下来的,但是没有人收拾。法律委员会先要核实事实,专门派了一个人去音乐室查看。并找来使用音乐室的人询问。因为事情比较大,形成了初步的报告给学校大会进一步讨论决定。complain的比较小的事情如签到忘记签了,或者签错时间了。complain比较多的是学生之间的打闹或纠纷。小孩之间总会有很多的纠纷,尤其是男孩更是如此。有些孩子很小,很难说清楚事情的原委。比如一个5,6岁的小孩提交了一个complaint, 当法律委员会问他陈述事情来由时,他说他忘记了。委员会只好问有没有其他在现场的人,叫来询问一下。我在那里坐着,看着法官们在判案,心里思绪万千。法律委员会的事情,我早就读过,知道其可以说是瑟谷的核心。我也理解其重要性。但当你身处其中时,很多问题还是会涌上来。委员会每天花大量的时间解决这些“鸡毛蒜皮”的事情是否值得?法律委员会只是在模拟成人社会,给孩子们一个了解成人社会的机会?只是一个孩子们过家家的游戏?如果在其他学校,这些纠纷会如何处理?一般就是一两个成人稍微听个两句就很快决断了吧?在自己的孩童时代,会希望这些问题如何解决?

我想这些孩子间的纠纷,也许在成人看来,不是个事。但是在孩子的世界里,就是很大的事情。而瑟谷的法律委员会,如果说是一个创新性的实验的话,这个实验至少证明了孩子们可以自我去管理他们之间的事情,孩子们可以通过这样的方式去解决他们之间的纠纷。而这个解决的过程,正是他们最重要的学习。这个法律委员会,不是模拟成人世界的游戏,不是过家家。它本身就是孩童世界里一个严肃的事情,是孩童世界里正常运转的一个机构。

两天时间里,我参加了两场法律委员会的会议,旁观了6,7个complaints的调查和判决,见识了孩子们的独立思维能力,思辨能力,表达能力的展示。每一个过程,会问询在场的所有人是否还有意见要表达。当申诉人表达模糊,总是用“我觉得他们可能”等语气时,会被告知要表述有确凿证据的东西,表述事实而不是猜测。如果委员会表决一致通过认为被起诉人确实违反了校规时,被起诉人需要认可并签字。然后进入量刑阶段。一般先是警告。几次警告后就必须有处罚。一般是罚钱,比如5块。如果自己认为家里条件不好,可以接受其他处罚,如倒垃圾。看着这些,我觉得其他学校里的学生,不管学习好还是不好,都是各种freak,都不是身心健康的,有着种种的问题。虽然是法律委员会,虽然是解决学生的各种纠纷,但是我却感觉到一种和平参与的气氛,一种富有生命力的感觉。

很多人都有感觉,现代学校与其说是学习的地方,不如说是方便老师管理学生的地方。老师相当部分的时间和工作都是在管理教室。但是就是从管理的角度来讲,瑟谷模式也展示了另一种管理方式的可能性,这种管理把学生当做人,而不是要把人变成机器。并且这种管理方式的成本并不高,基本上依靠学生们的自我管理。这种管理是非机械性的,是简单粗暴式的,是在人们的心中孕育和平的,是和甘地在印度的乡村建设以及中国30年代的乡村建设运动的精神是一致的。我也相信它是不难学习复制的,因为它是符合我们每个人的人性的。学习这种模式就是学习了解我们自己。

我自听说过瑟谷以来,就很喜欢瑟谷这样的模式,觉得很亲近。但是以前我可能更接近unschooling一边。在瑟谷两天,我感觉到瑟谷学校才是真正的学校,瑟谷的老师才是真正的老师。其他学校的老师虽然成为了老师,但是却没有老师的耐心。而瑟谷的老师才是在做着老师该做的事情,并且很有耐心。瑟谷不光是现在所需要,瑟谷也是未来。这是我当时跟瑟谷创始人说的原话。这次瑟谷之行,更坚定了我想创立一个学校或者学习中心(Learning Center)的想法。

瑟谷的教职工都需要接受学生们的投票的。投票在学校大会举行并将结果公示。我看到瑟谷的创始人也在其中,被投了几个反对票。(老师如果不能通过学生的投票会被解聘的。)我们这次有幸参加了学校大会。学校大会很透明,由比较年长的学生主持。有事先打印的会议议程计划,并公示于学校公示栏里。我们参加的这次正好有关于学校收入支出的报告,也是公示透明的。如果有关于校规的讨论,也是在学校大会上讨论。比如校长提出的,只有违法了校规才能complain。不能什么事情都complain。所以委员会处理时,需要先判断是否违反了某个校规。

两天的时间是完全不够的。比如我还有一个问题并没有得到完全的解答:瑟谷的学生是否在充分的学习?或者说是否在最快最好的学习?这是我一直在问的问题。这个问题部分得到了回答,因为我可以看到瑟谷的学生确实在学习在健康的成长。但是是否充分调动了他们学习的所有积极性,他们是否没有浪费时间充分的学习?我还没法完全回答这个问题。我知道一般学校的问题,从小我就知道学校学习是浪费生命的。但是至少一般学校的学习有这样一个优势,即不管现代教育制度设计的目的(我现在很肯定现代教育的目的就是服务于机器大生产的,但这里暂不论),它有意无意的形成了一个全国范围内的竞争机制,并且是一个高度竞争的活动。在这个全国性的“竞技”活动中,学生们能有个参照物,即有个反馈机制,并在高度竞争的活动中学会如何去安排自己的时间,这也是一个了解自身的过程。当然我们也应该看到,这个竞争活动是很单一的,仅仅从很单一的一个方面去评估人。

瑟谷学校应该是不反对竞争的,虽然瑟谷一直强调不给学生任何外在的目标或奖励。记得瑟谷创始人Dan Greenberg似乎说过,瑟谷里的竞争是真实生活里的那种竞争,即不是敌对性的,而是在竞争的同时又有合作,就像竞技体育一样。瑟谷追求真实生活的竞争,但是要创造出那样的真实的竞争似乎不容易。瑟谷学校的学生人数还是太少了。我拜访的这间瑟谷学校大概有5, 60人(更新:5,60人是在校园里看到的学生数量。我在校园里没有看见多少高年级的学生,估计他们中的大多数都是在校外追求他们的“学业”。所以整体的学生数量可能远多于60人。根据Peter Gray在他的著作Free to Learn里的记述,这个第一个瑟谷学校在几年里基本上维持着130-180的人数。这个人数我觉得其实不算少了。从个人体验来讲,我小时候的子弟学校也是差不多这么多人,平时的感觉是很热闹的,而且那时候我们的子校跟瑟谷一样,不同年纪的小孩都在一起玩的。像现在的学校,人很多,但不同年级间又很隔绝,反而让人感觉非常冷漠孤独,并不是一个丰富的学习环境。)。如果有更多的学生,有更多的多元性和丰富性,会好很多。或者当瑟谷模式成为主流,到处都有瑟谷学校的时候,我相信学生们会形成很多的真实生活里的竞争活动,而非考试这样单一性的竞争活动。

如果你对瑟谷学校不了解,瑟谷是没有课堂,没有作业和考试的。学生如果对某件事情感兴趣,可以向老师提出要求,老师可以安排课堂时间。课堂的时间长短也取决于学生们的兴趣。不过,这次在瑟谷,我并没有看到任何上课。我询问了一下,老师说这些年都很少有上课。可能是因为现在互联网的发达,学生大多在互联网上就可以找到能够满足他们求知的资料或视频,所以比较少有要求老师上课的需求。从这点看,瑟谷因为完全从学生的需求出发,倒是很自然的就适应了时代的发展,不需要自上而下的去人为调整。

这次去美国,也参观了另一所曾经的瑟谷学校。据其校长说,十年前这里就是完全的瑟谷模式。但慢慢的他们开始融合进去一些其他元素。比如在瑟谷学校,是完全没有课堂的,但是在这里他们会事先调查学生的兴趣,再根据学生的兴趣来设计相应的课程。比如我参观的当天就观摩了一节辩论课。这里瑟谷模式作为了一个track,学生可以选择在哪个track里。即使选择上课track的学生也可以要求暂时进入休学期,这样可以暂时不用参加任何课程。校长以前跟我说过,他们的改变也是不得已,主要是学生自己的要求。因为看到其他学校的小孩都要上课考试,这里的孩子感受到压力,担心自己是否在虚度光阴,提出要上课的要求。但是在这点上,我个人可能比较接近瑟谷模式创始人的意见,就是任何模拟的环境都比不上真实的环境。我想,问题还是如何让这些孩童安全的接触真实生活。

我如果要办学校或学习中心,我个人感觉,我会基于瑟谷模式上再增加三样东西。我不确定这三样东西是否画蛇添足。这里姑且拿出来跟大家讨论一番。

其一,增加更多的指导年青学生成长的讨论。瑟谷反对按年龄分班,反对任何课程大纲(curriculum), 我感觉主要还是在解构服务于机器化大生产的传统学校。但我觉得我们还是需要一些建设性的东西,比如以前我讲过的关于人成长的三个阶段这样的东西,来给年青学生更多的方向感和指导性。以前我们比较缺乏这方面的开放性的讨论,并且很多科学研究被机器化大生产的目的所绑架,创造了“科学”理论来为传统学校服务。但是现代社会,我们可以更开放的讨论这些事情,到底年轻人的成长是哪些方面的成长。这些讨论,只是为学生提供一些参考,不具备任何的强制性。就好像学生去读社会学书籍或者小说来了解人生一样,这些参考性的书籍仅仅是给学生提供参考。我希望在这方面有更丰富的讨论帮助瑟谷模式里的学生更有方向感,好像一个架手脚一样,先有一些可以依赖的东西,再慢慢在自己的实践中根据自己的经验去纠正。

其二,我会增加更多的社会性,让学校跟社会有更好的融合。比如可以通过互联网的方式,帮助学生更好的找到做学徒的机会。或者能有更好的游学(field trip)的机会。或者做一个网站,让各行各业的职业人士可以在上面放上自己可以开放的时间和相应的资源。比如说我周五下午可以开放出来,大家可以来参观我的工作室,了解我是怎么工作的,还有问答时间。这个方面,其实也是瑟谷一直很重视的。比如瑟谷的老师会花费很多的时间帮助学生在社会上找做学徒的机会。我希望互联网的发展,能够给瑟谷模式提供更多的和社会接触的方式。

其三,我会增加打坐反思的活动。学校的目的应该是帮助学生去了解自我,打坐反思是很好的了解自身的工具。在美国,已经有很多学校把打坐融入到教学中去。比如这次在纽约,我就读到当地报纸上有报到纽约的中小学里有每天的打坐,来帮助学生静下心来,并提高学生的反思能力,进而明显提升学生的学习能力。正好我在纽约与一个朋友聚餐时,他也提到他儿子在布鲁克林的学校由David Lynch的基金资助的一个项目就是每天学生打三次的坐,早上中午下午各一次。我记得以前读到过美国一些大学里也有专门通过打坐来提升学生的学习能力,并有这方面效果的学术研究。打坐并非佛教或禅宗才有的东西,在佛教之前的印度就已经有打坐形式的瑜伽练习。犹太教,基督教等都有打坐。我们只需要把其提炼出来,作为一个学习了解自我的方法。

EDU_Meditation_small

最近两年的经验,我更加确信现代学校教育是为机器大生产的目的而生的。最近工作中做物联网,会接触到硬件方面的生产。硬件的生产真是制造业,跟软件很不同,非常受物理世界的限制,比如受工厂的限制。硬件设计时,也一定要设计成非常傻瓜式,这样流水线上的工人只要不停的按两三个键就可以了。制造业是一定要减少工人出错的几率的,因为那直接就转化成次品率和生产效率上去了。在机器化大生产这样大规模生产的社会,你可以想象他们会需要什么样的人。任何健康完整的人愿意在流水线上一天到晚就是按那两个按键吗?为了大规模生产的需求,一定要让大多数人都成为愿意在流水线上变成机器一部分的工人,决不能让他们胡思乱想,决不能让他们觉得他们的人生还有其他出路。如何做到?现代学校教育制度就是答案。现代学校是完全模拟工厂的。即使是知识工人,也只是在狭窄的领域做些熟练的操作而已,而非探索性的工作。机器化大生产时代,所有的理论,不管是管理还是教育,都是为流水线服务的。

最近有机会参加了一个水库清淤泥的工作。很多人排成流水线,把铲出的土倒掉,又把空桶传递回去。可以体会到在流水线上工作是什么感觉,流水线上每一个环节都不能慢,有一个慢了就影响整条流水线的速度。也可以想象基于流水线的管理应该如何去管理。如果有机会真的去工厂里工作一段时间,应该会体会更深吧。当然我们在水库的工作还是偶然的临时的,但是想象一下如果这种流水线的生产方式是大规模的,是最主要的生产方式,并且是市场竞争的,会对我们人类的社会生活有什么样的影响。教育,自然是要为这个最主要的生产方式服务的。

我这两年在珠三角工作。珠三角是典型的制造业文化,可以很深的感受到这种文化和互联网文化的迥异。但是就像珠三角的制造业在不断迁出,珠三角的企业需要不断升级一样,制造业在未来在国民经济中的比重一定越来越低。更别说象富士康一样,流水线上的工人越来越多的被机器人取代了。现代学校教育制度是不能够适应未来的(即使我们承认它很好的支持了制造业,成功的把很多完整的人变成了走投无路只能在流水线上干活的人)。现在的孩子,在学校里接受了16年的教育,等他/她毕业以后,会发现学校教育培养他/她去从事的工作,已经都被机器人做了。

001JOzg1ty72lWDWnvp97&690

人工智能这几年发展非常迅猛,上面所说的完全可能发生。人类的教育制度,不改不行了。我们到底想要什么样的学校?人又应该学习什么?我相信瑟谷不仅仅是现在所需要的,瑟谷也是未来。

发表在 科学研究, selflearning | 2条评论

Recent efforts

Here are our recent efforts, you are welcome to be part of this open process towards future learning, which we think should be self-learning for everyone! In a way, the current discussions there help summarize what we have learned in Open Source Learning. And we believe it will soon turn into concrete implementation, which will be open source as well.

发表在 未归类 | 留下评论

Why people don’t work hard with good social welfare

People often say that countries with good social welfare lose the drive for economy because people don’t have incentive to work hard anymore. The inherent assumption is people are naturally lazy so they don’t work if they don’t have to.

However, I always think good social welfare is probably not the cause. The cause might be the outdated education system. Because if you look at the kids, they work their asses off trying to be good at something although they are in very good social welfare–their parents take care of them. However, the education system, which is designed for the industrial age to serve mass production, take children’s curiosity away, together with their ability to learn. You need that for mass production because you need a lot of people to work on the assembly line to be part of the machine.

But times have already changed. We are already deep in an information age. And a lot of developed countries already have the luxury to provide good social welfare for its people. But their education system are still locked in the industrial age. They need a new kind of education, which lifts the scaffold that the current education system puts on people.

The current education system is like ancient Chinese footbinding bandages. It should be thrown away a long time ago. Let children learn and grow themselves. Keep their curiosity alive. Keep learning continuously. So I am sure they will continue to work hard even in a high social welfare country. Just like they have played so hard when in childhood.

I kind of think the great innovation in software in north European countries have a lot to do with the fact that people there enjoy lives better and have less pressure to make a living.

发表在 selflearning, 未归类 | 留下评论

New Generation of Textbooks

Recently I wanted to review the “knowledge” I have “learned” at schools. There is a lot of that kind of “knowledge” that was “learned” but never practiced. I am thinking that I need to review my old textbooks and notes. However, I don’t have them with me now. So I think I probably can just look them up online. They might be scattered here and there online. But I think that should be fine for me. I don’t have to learn them all at once. Also I only hope to gain a better overall understanding of what kind of things I have learned in the past. I have no intention to go very deep into any field without any hands-on project to practice with. So learning can be fragmented and layered. Fragmented is ok as long as you can achieve a layered understanding in a period of time.

And I feel the materials and my understanding gained along the process might just be a good collection of learning materials for others. So everyone can review their past “dormant” knowledge from time to time instead of having them locked in deep memory. Also this way can also be used to write new kind of textbook online. Nowadays the textbook has been extremely outdated with latest industry knowledge. For example, in the software field, the knowledge is updated so quickly that it is very hard for traditional textbooks to keep up. We need digitized knowledge and digitized process of knowledge production.

If we are able to digitize the kind of “knowledge model” that everyone is continuously constructing in their minds and testing against others’, the best quality of those models might be used as “textbooks”, and I can see this field in more fluidity and not as divided as it is now. For example, industry professionals can be knowledge producers as well, instead of waiting for those specialized professors to translate knowledge into textbook with very long production cycle.

发表在 实验 | 留下评论

From Agile to Life Centers (Draft)

Dijkstra said in the 70s that the irreversible damage is done once we have named this subject “Computer Science”.

“…the topic became —primarily in the USA— prematurely known as “computer science” —which,actually is like referring to surgery as “knife science”— and it was firmly implanted in people’s minds that computing science is about machines and their peripheral equipment, which is not true””–from Wikipedia.

Now we see the damage.

Those of us who work in the software industry know that there is a huge divide between tech and product people.

There is a general distrust of engineers:
1. engineers cannot manage, not even manage themselves. So they need to be managed
2. engineers don’t care about products and don’t know about design

Both of these are not true. My experiences told me otherwise. Engineers dislike management, mostly because management doesn’t understand software and so the management is a lot of obstacles to software engineers. Since software engineers don’t see the hope of changing the situation, they would rather stay in their corner and be happy to just focus on engineering. I know this is true for a lot of software engineers.

As for caring about product, software engineers care about product and design greatly if you give them the chance. When I was working as CTO for a company, I had a design session that goes along with weekly meetings. The software team members take turns to share with others what they see as a good design or a bad design in their daily lives, and why it is good or bad. So engineers discussed toilet, road/subway signs, light switches, power sockets, organization structure, and so on. I take the opportunity to introduce to them various related design topics when we are discussing design of one thing. And engineers get very excited about design of various things, including organization management, social policies, and so on. Who said they don’t care about product? Who said they don’t know about design?

The engineers in the above example is from a conventional company that is going online. They have shown disinterest in company product and management, and are believed by the company management as cannot be trusted on responsibilities (sounds familiar?). They didn’t care because the management didn’t want them to care and didn’t give them the time to care. For a change, I let engineers take Friday afternoon off to just focus on product. I don’t assign any engineering tasks to them for that half day. And they just use the time to play with company product. And with inner source environment I built up, engineers can initiate projects that they deem important for company product. And we have important projects sprung up because of that. For example, an IM product/software for our eCommerce platform.

If you give them the chance, they will care, because that is what software programming is about.

These two assumptions are not true probably for all engineers. But particularly, it is not true for software engineers at all because of the uniqueness of software.

However, for the general public, people assume the above two misconceptions about software engineers, due to the misnaming of this subject—Computer Science, and more in depth due to the fact that software is complex and invisible. (You can only see it if you do hands-on practices. Very much like society or sociology is invisible, and you have to “see” it with your hands-on practices.)

“We have everything ready, we just need a programmer!” is the typical expression that reflects the common mass’ perception of software engineers.

When there is a divide, usually it is because it is difficult to possess both qualities. Since we called this subject “Computer Science”, it is believed to be a purely engineering major. So then there should be people who study liberal arts majors to manage these software engineers, because typically we believe engineers are narrow minded, not able to communicate well, and don’t care about management and product. And we know our schools taught these two groups of people like they are totally different, and there are generally no much coverage of liberal arts for engineering students.

Thus we have product people and engineering people in every company. And very often they fight each other. Surely a lot of decisions have to be made on the whole since product is one whole piece and is not separated by product vs engineering. So very often we see the boss or one of the founders sit on top to make the important decisions, even though s/he is not capable of making those decisions. It is assumed that it is easy to understand what is in software. And there is no understanding that great skills and years of experiences are needed to plan product and software together and it is very strategical for a company whether it can plan the software/product well.

“Dijkstra was the first to make the claim that programming is so inherently complex that, in order to manage it successfully, programmers need to harness every trick and abstraction possible. ”–from Wikipedia.

Complexity of software demands ability in both liberal arts and engineering. Society is complex and invisible, thus you need to do a lot of hands-on social practice and do very extensive reading to help you “see” things and understand human society. Similarly, as software is essentially a digitization and innovation of human society, it is also complex and invisible. You needs hands-on practices, e.g. coding to “see” things and understand it. Since it is about digitization and innovation of human society, you also needs a very strong liberal arts background. Not the kind of liberal arts education you get from college, but more street-smart liberal arts capacities achieved only by a lot of social practice and a lot of extensive reading. For a small example, knowing of the human history helps you innovate better.

So maybe now it is easy to understand why such a divide between product people and engineering people. We can say that is because product people are not really product people, they don’t possess the true liberal arts capacities, and cannot think logically. They are just chatty. And our engineers are not true engineers because they focus so narrowly only on the engineering aspect of the software programming, and cannot grasp the vast realities and possibilities outside of engineering domain. Or we can say we just need people who educated themselves in liberal arts and have a lot of hands-on experiences with coding. Since software programming is so big and encompassing so many things, it is challenging for an individual to learn all these things and be good at all of them. But it is reasonable to expect a general good grasp of both and be a little leaned towards one side or the other from time to time, with the ultimate goal of achieving the level of greatness in both regards.

And that is possible. We have seen great examples of people who have achieved that greatness, and we believe it is a path that everyone can try.

I believe Jeff Bezos, Larry Page, Steve Jobs, Bill Gates, Mark Zuckerberg, Linus Torvalds, Guido Van Rossum (for Chinese ones: Huateng Ma, Xiaolong Zhang, Lei Ding, Bo Yang from Douban…) are these good examples. And we also see many other smart creatives as touted by Eric Schmidt’s book “How google works”. I believe all great software companies understand this and know how to build up organization accordingly to tap into potentials of software engineers, such as google, amazon. And those who don’t, disappear after a while even if they can have a short period of success.

We have to bridge the divide. Without bridging the divide, there is no real solution for the industry. We have to point out a path and show the examples.

Without detailed elaboration, just let me briefly outline my understanding of this path:

  • emphasize caring of product, emphasize responsibility for full life cycle of the software like amazon has practiced (Douban as an example as well). Give developers dedicated time to care about company products. Give them rights to initiate products on their own (like Douban has practiced, and inner source environment can legitimize, empower and reward such behaviors.);
  • emphasize on programming as the core. Like the core curricular in college, programming should be the core skills you have to learn no matter you are developers, QAs, devops, product managers, and so on. In the words of facebook director of engineers, if you are doing any software related job, your best way to prepare yourself for that job is to learn how to program. Build up an inner source environment with rich projects of various scales and difficult levels that people can pick best projects that suit their current capabilities. People including non-engineers can be free to contribute to any inner source projects and learn various programming skills. Remove the artificial barrier that blocks communication between developers, QAs, devops and product managers;
  • emphasize on design skills training. Such as the design sessions that I practiced in my previous companies. Such design skills are inherently connected to architecture and management skills. In a sense, it is a more advanced level of coding;
  • give people ownership in those independent projects of various scales. That is how people learn of programming, design and management. They need to feel the whole and develop the sense of it. The wholeness is essential to programming and here I use the word programming as something that is very broad.

So we do have a path that can connect liberal arts with science/engineering and making them mutually benefiting each other. You don’t have to struggle between whether you should go product direction or engineering direction. You just try to be good at both, and make the two Ying and Yang of one whole body. They are parts of the whole thing of digitizing the world and making the world a better place with great and kind innovations, thus truly making software programming the greatest ever invention of human history, an invention that empowers us to break the long time barriers to equality and happiness of mankind.

One great person who has been trying hard to bridge liberal arts and science is Christopher Alexander, whose design pattern theories in the 60s, 70s have greatly influenced software community, and directly brought up the design pattern, OOP, extreme programming, and agile programming movements. However, during a speech of Christopher Alexander, when asked to comment on his influence on software community, he said that in his observation, software community has only scratched the surface of his theory, quote “Software Programming’s use of patterns have so far just been a neat format that is a good way of exchanging ideas about programming, but lack in the two other dimensions: MORAL CAPACITY in producing a living structure and the GENERATIVITY OF THE THING and that is capability in producing a coherent whole.” (http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=795104) His latest theoretic framework, as summarized in Nature of Order, has used concepts like life centers and degree of life to push his works to a whole new level. However, software community has barely touched on these and probably have no idea how to tap into it.

So by bridging the gap between product and engineering, and realizing the true nature of software programming, I hope not only that we can resolve the great divide in our software industry and help the industry grow more healthy (as we see software nowadays is really expanding to all corners of human society, literally “eating the world” according to Mark Anderson), we can also to bring up a new (real) kind of software engineering that seamlessly bridge liberal arts and science/engineering, tap into the great potential of Alexander’s great theoretic framework that bridge the gap between subjectivity and objectivity, and make complete the modern science.

发表在 Software | 留下评论

Software is Unique

Software is the bridge btw the human world and the physical world. It is the bridge between human science and physical science. It is about giving ideas concrete forms. It is about digitization of life. It is about creating life.

  • Software is broad. You have a large variety of lives, so you have a large variety of software. Life manifests itself in different forms in various software. How many species of plants and animals you have on this planet?
  • Software is deep knowledge about human world. Since software is digitization of various life forms, if you understand software, you understand better of life.
  • Software takes many years of continuous hands-on learning.
  • Software is complex, just like life can be very complex. So we try very hard to make it as simple as possible, but not simpler. Software is about taming complexity.
  • There is no software architect who doesn’t do intensive programming anymore. Maybe it is ok in other disciplines to have architects who don’t do hands-on work anymore, but not in software.
  • Software planning is strategic. Like a soccer team needs a coach to plan things strategically and build up the team, so is a software team. If you have a software architect in the company possessing those comprehensive skills, cherish her/him, let her/him make the decisions and be responsible for them.

If this list is too short, I hope people can keep it in their minds to contemplate on constantly when working with software, and I hope this list is enough to turn around people’s common misconceptions about software.

发表在 Software | 留下评论

Software Management

I am trying to summarize a short list of what I deem the most important for software management.

  • Management is about the right people making decisions. It is about forming the trust and delegate chains.
  • Emphasis on programming skills. Everyone should try to learn programming.
  • Break the boundary. People should not be separated way too early into testing people, system admins, developers. They should try to learn the comprehensive programming skills, which include how to do testing and how to run servers and do deployment. Testing people and system admins are encouraged to learn programming.
  • Programmers’ time is the most precious.
  • Empower programmers instead of putting various kinds of restriction on them. Give them the best tools. Let them fly!
  • Programming takes a lot of learning. Understand this! Value employees’ learning! Build up a rich learning environment! Have architects who can mentor people.
  • Rich projects to build up a comprehensive learning environment. Projects of different size and difficult levels, many of which are independent projects that are not tangled with other projects. So every individual in a software team can find projects that fit her/him to improve step by step.
  • Emphasis on product. Everyone in the software team should care about the software that s/he is building. Thus everyone should care about the product. Dedicated time (for example, Friday afternoon) is allocated for software team members to do nothing but playing with the product.
  • Emphasis on design skills and cultivation of programmers’ architect skills. Design sessions are scheduled regularly, when team members take turns to tell what s/he has found in her/his daily life that has a good design or bad design and why. Various design topics will be covered during such design sessions.
  • Do pair programming and code review very often to help programmers improve programming skills.
  • Software planning is strategic. Like a soccer team needs a coach to plan things strategically and build up the team, so is a software team. If you have a software architect in the company possessing those comprehensive skills, cherish her/him, let her/him make the decisions and be responsible for them.
  • Hiring is an important window for a software company. Tech director should be in charge of hiring of engineers and pay attention to the details in the hiring process. Tech director should have the directions in how s/he wants to build up the team and how to build up a good public image of the company as a tech company in order to attract talented engineers.
  • There is no software architect who doesn’t do intensive programming anymore. Maybe it is ok in other disciplines to have architects who don’t do hands-on work anymore, but not in software.
  • Everyone is building stuff. Everyone is a builder. No one is just a talker, doing management only. This is from Spotify founder Daniel. And I understand it as an important way to cut down communication cost in software management. I think at least for software management, this should be enforced. It might seem radical to enforce this at the whole company level. But I would love to see that happen, and I tend to believe that should be a very good thing for the software company.

This list might not be comprehensive. They are what I can think of off the top of my head. Maybe they are what I deem most important. Or it might just be related to my recent experiences. Time will tell, I think. If it is short, I hope people can keep it in their minds and constantly get reminded in their management of a software company.

发表在 Software | 留下评论

Management and life centers

Management is about the right people making decisions. It is about forming the trust and delegate chains. It is about hierarchy. Don’t be afraid of hierarchy, because life is full of centers. To have something that is full of life, life centers need to be formed naturally. To have an organization that is full of life, life centers also need to be formed. The forming of life centers in an organization is exactly about “right people making decisions” and “forming the trust and delegate chains”.

So don’t be afraid of hierarchy. Every organization has hierarchy. The right question is how many levels of hierarchies there are in an organization, there are too many or too few, whether there is natural flow btw hierarchies, whether there is transparency, whether there are still channels of communication across hierarchies, and etc.

This hierarchy is totally based on individuals’ ability to make the right decisions in this domain. And it it about making decisions and taking responsibilities for your decisions. It doesn’t extend to to your personal life (this part is usually quite difficult for people coming from the oriental world to comprehend).

I have seen startups where bosses seem to be afraid of hierarchies. They are afraid to delegate any responsibilities and authorities to other people. It seems they are trying to maintain a flat structure, but in reality, the bosses often become the sole authority in the company and make decisions on every level. A lot of micromanagement indeed.

Finding the right hierarchy, having the right people at the right positions and at the same time maintaining natural flow between hierarchies and transparency are what management is all about. In short, management is about center of lives.

I often say that software is about creating lives. Thus you can see why I say software and management are inherently connected. I don’t see a software engineer as a good software engineer if s/he cannot do good management. However, what we often see in the industry is that a lot of people tend to think that software engineer cannot do management, and thus management belongs to people who can not do software. It sounds bizarre. However, that is how many software companies are run today. What a tragedy if you run a company like that!

发表在 科学研究 | 留下评论

我是如何进行年度回顾总结的

English Version

我的不少朋友都是喜欢做年度回顾总结了。从去年年底起,一直到春节,就陆续看到他们的年度回顾登台了。我利用春节几天,也做了个年度回顾,因为平时自己一直记录学习笔记,所以这个年度回顾也是在笔记本上完成的。虽然有点姗姗来迟,下面也跟大家分享一下我是如何做年度回顾总结的。

首先给大家我笔记本上去年的一个年度统计数据,一共记了3176条笔记,其中有2007个便条,647个网址,515个网摘,7个知识包。 另外也统计了各年度最常用标签,年度产生的新标签等等。关于这个统计功能和页面,请看另一篇专门介绍新开发的统计功能的文章。

通过年度统计数据,可以很快的了解一整年的大概的情况。然后就是使用笔记本的日期过滤中的浏览去年功能,让笔记本只显示去年2014年里的笔记。通过快速浏览,可以大致发现这一年需要回顾的几个大的主题,比如管理,软件团队管理,产品管理,技术(包括其中具体的几个技术专题如git, python, shell, database),osl发展,notebook设计和开发。然后就是按相应标签组合来过滤出相关笔记对每个主题依次回顾。

整个过程是先确定回顾主题,然后快速获得每个主题积累的大概的经验信息,然后再深入细节,尤其对于一些有足够积累的领域去努力形成整体的知识。最后就是查缺补漏,顺便再整理一下笔记。

在这些主题里面,在管理方面,因为平时就注重随时的总结,已经形成一系列博客文章。形成了整体的知识和深层的理解。具体看个人中文博客:http://blog.sina.com.cn/happystone2009

而在技术方面,却是需要积累了足够的实践经验和重要信息片段(如带cheatsheet, tip标签的内容)后才合适进行整体的回顾,试图形成整体的理解。比如这次主要对git做了回顾总结,整理出一个大概的整体的知识,认识深度上也有很大的收获。详见:http://91biji.org/wiki/index.cgi/Git 另外,在shell方面也积累了足够的经验了,也该结集提炼出系统的知识出来了。

其他对osl发展, notebook的设计和开发这样的比较大的主题,不断组合出一组标签来侧重于某个方面进行回顾,来总结自己过去的工作,确定下个阶段发展的重点。另外对于产品设计,软件设计,旅游等比较小的专题也进行了回顾总结。

在回顾中的每条重要的感受和想法写也同样记录成便条,加上yearly review标签,供以后的反复回顾和参考。

用笔记本来对平时就随时抓取的学习瞬间(learning moment)的“重要体验”来进行比较长的一个时间段的回顾,是相当有效的学习方式。

一个是长期笔记记录,你可以注意到那些经常出现的东西,它们反映了那个时期的一个特征,能给你提供很好的反思基础;一个是过了很长时间后的回顾,没有了当时深在其中的某种情绪,可以更客观的审视当时自己的感受;一个是不同阶段的不同环境的比较,会有非常有意义的发现。

因为笔记准确的抓取当时的体验,并且客观的做了保留记录,你不需要在年底的时候凭借你的记忆效的来做模糊的有误差的回忆。并且所有的都已经形成文字可视化的呈现在你眼前,减轻了你的心智负担,避免一边要在大脑里缓存记忆,一边要对其做分析平衡和计算。

下面我就具体的对以上说到的四点,分别举几个例子:

第一个,对于长期里多次出现的,比如我发现有一个时期我的笔记里有很多关于人生的态度要像年轻的时候有那样的闯劲,继续乐观。这些出现的频率挺高,我意识到其实是有点人到中年在心境上有些变化,而这些笔记大概是意识到这些变化吧。

再举一个例子,我在回顾在现公司的管理方面的经验总结时,我发现所有的问题放在一起一看,很明显可以发现原因都是一个:组织太大了,造成了管理上的各个方面的困难。解决的办法:一个是把公司拆小,形成许多相对独立的小的个体,恢复类市场的机制;一个是利用web(互联网),把整个公司再变小。

关于第二点,比如通过各个公司的比较,其实各有各自的问题。似乎可以看开点,并且没有必要对自己当前的环境过于抱怨,把情绪化的东西去掉。

关于第三点,我在回顾时按照过去工作过的三个不同的公司来进行比较。按照在每个公司工作的时间段过滤提取出那个阶段的笔记。这些公司属于不同行业,管理文化,软件环境都很不一样,也是不同的公司规模。第一个最小,三十多人。第二个将近百人。第三个很大,十几万人。第一家是纯互联网行业,由美国硅谷回国创业者创办,在互联网界有一定知名度。第二第三家都是比较传统的公司,对于我来说,属于去帮助推进互联网的数字化进程吧。不同阶段的体验的集中碰撞出很多很有意义的发现。

比如我在浏览笔记的时候突然意识到第一家的管理和后两家的管理实际上是两个极端。第一家的氛围和美国公司很像,至少在氛围上还是相当平等互重的。员工,主管和老板之间都是名字相称。老板中午甚至非中午一样靠在椅子上打呼噜。公司的注册资料,财务资料等公开的放在柜子里不上锁。是相当的开放的文化了。但我个人认为问题是没有形成管理上的一定的信任层级。高管之间缺少创业团队的那种经常的正式非正式的交流和切磋。而很多重要的事情又一开始就放到整个公司层面去讨论。很多人其实还没有形成一定的能力时是不适宜揠苗助长的,对其成长并不利。而第二家第三家都有相当传统的上下级关系,各种总漫天飞,敬酒文化,吹捧文化非常重。而相应的在管理上的信任层级非常僵化,没有形成基于业务能力上的信任层级。

而我在浏览前面两个小公司的管理经验时,对比后面在大公司的管理上的感受,这个感受上的差异性,让我更理解小公司和大公司在管理上的深层次上的不同。比如在小公司比较容易形成主人翁意识,因为所有的事情都在你眼里。在大公司,即使本来主人翁精神很强的人,也很难形成主人翁精神,因为公司太大了,你看到的只能是很小的一部分。在小公司,对所有的一切都可以具体的感知,对管理很有具体的感觉。而对大公司就不那么容易把握了,很难去感受。当然意识到差别了,就会主动的去尝试把小公司里的主人翁精神带到大公司里去,以及如何利用web(互联网)把大公司再变小,让所有的事情发生在一个屋檐下面。这些对比帮助我思考把小公司里的管理体验如何运用到大公司的管理上。

还发现第二家公司和第三家公司一件很有意思的事情。虽然两家公司规模迥异,却在一点上非常相像。在第二家公司,由于老板是传统业界人士,不熟悉互联网,所以下面一堆高管忽悠老板。老板也对所有的人都抱着戒心,对谁都不信任。当然本身也没有认识人判断人的能力(我一直认为老板不懂业务问题不大,但一定要会看人。像刘备文不如诸葛亮徐庶庞统,武不如张飞关羽赵云,但是会看人懂得信任人)。而第三家公司因为员工数庞大,虽然老板和最高管理层相当优秀,但是最高管理层和基层之间隔了好几层,这些中层和基层的人就是基本上嘻嘻哈哈了。不是说他们不负责,不认真,但是工作文化在我看来是嘻嘻哈哈。为什么说嘻嘻哈哈,因为没有人真的当回事。缺少个体的兴趣就不会有真正的负责。

另外通过三个阶段的对比,可以发现比如哪些是职业发展中真正重要的机会,每个工作阶段技术长进的领域和程度,从而对自己的职业发展所需要的东西有个更清晰的认识。每个环境都给你不同的东西。如果你的目标是比较高的,你就需要去不断积累在不同方面的经验,需要结合自己当前的整体的情况,去最好的利用当前的环境,或者把握未来的机会。

我通过回顾后,会对每个阶段在各个领域的成长打分,最后算个总和,评估每一个阶段的成长值。比如下面这个便条:

2013,2014 achievement: tech 3; paas 3; inner source 3; profession of digitizing 3; travel 3; management:11; media and publishing industry: 1; translation industry:2; commerce: 4; medical 3; big company culture 2; SUM: 38.

这样通过时间段和相关标签的过滤,可以对每个阶段的某个侧面进行聚焦的回顾。通过笔记本来进行这样的回顾是非常有效的。其实我以前也经常做年度回顾,正是因为发现可以通过笔记本的方式让回顾更加高效的轻松的进行,才开发了笔记本。

记忆是不太可靠的。尤其是时间比较长的记忆。一般来说本周的事情你可能还是能够比较印象准确的,长了就有些模糊了甚至会有比较大的误差。这次回顾我就发现了好几次我的印象其实是不尽然的。幸亏通过当时的笔记,忠实的找回了正确的印象。

另外,我们在很久以前对自己的人生做的决定,当时一定还是有许多的考虑的。这么长的时间过去了,你也走过了这段路,你是否还记得当初的选择,是否仍然不忘初心?比如我在近两年前特别希望增加在商业和产品管理上的锻炼,以及带团队,积累公司管理的经验。如今回头看,我已经达到了目标,已经自信自己可以带好一个软件团队,甚至管理好一个上百人的公司。现在我觉得自己则更需要专注的是在实际的技术上继续再走深走广更多细节和更加过硬,在技术上基本达到自己当初开始时对自己的期许。不忘初心,清楚自己的成长,更明白下一步的方向。

此文献给跟我同样喜欢通过笔记方式来管理自己学习和知识的学友们,献给所有擅长反思喜欢学习的朋友。我们都是自学者,让自学更简单一些!

另外会写一文,介绍笔记本的统计发现功能,比如过去每年的统计结果,各个阶段的统计结果,该阶段的常用标签和新标签,每年的笔记数量重量平均值等的比较分析。

发表在 selflearning, 使用示例 | 一条评论

New features

We have a few new features released to help you better manage your daily learning:

Swapping of book:

If you go to a note list page, for example
http://3exps.org/social/leon/bookmarkbook/notes/?q=t%3Atip+%7C+t%3Acheatsheet+%26+t%3Agit&all=
, you can see on the right upper corner of the page, there is a dropdown list of book names in red font, you can try switching it to another book name such as note, you will be directed to
http://3exps.org/social/leon/notebook/notes/?q=t%3Atip+%7C+t%3Acheatsheet+%26+t%3Agit&all=
It will swap out the book name part of the url while keep the rest the same.
Screenshot available soon.

More date range filters:

First when in a note list page, press alt+p to open up the display filter. You will see that now you can view notes of last year. You can also view by a date range, by entering a request parameter in the url like this date_range=2014-08-20—2014-12-29. Date range filter is set for the session. So for all note list (snippets, bookmarks, scraps, frames, notes, personal or social) you will have this filter applied. To reset it, simply choose date range to all.

Clicking on desc to expand and collapse a note:

In a note list page, you can click on the desc (description) part (it is the second part. So it can be url part for bookmarks ) to expand the note. Clicking on it again will collapse it. For personal notebook, for now you can only expand it. For social and group notes, you can expand and collapse.

Support for passing page_size parameter:

In a note list page, you can pass the parameter page_size to change the default page size. The maximum you can set is 200. This is also stored per session. So you have this page size for all note list pages.

Fixed menu bar

In a note list page, the menu bar of the notes will become fixed to the screen when you scroll down enough. So it will be convenient for you to select some notes for bulk edition without having to scroll back to the very top.

Screenshot available soon.

Simple frame display:

For frames that has no child frame, we build a simplified template for displaying. So it looks better. For example, you can view this frame (in Chinese):http://3exps.org/social/leon/framebook/notes/note/9174/

发表在 新功能 | 留下评论