How Many Programming Technologies Can You Really Master?

Andrew Wulf , Aug 6, 2015

I keep seeing companies or their recruiters advertising they are looking for people “with significant experience developing iOS and Android applications from scratch and will have a mastery of modern mobile and web technologies, including Java, HTML5, CSS3, JavaScript, JSON and AJAX”.

There is no such person. You can master one and be mediocre in the others; you can master one and then move on to another and forget a lot of the prior; you can simply fool enough people into thinking you can do it and hope you can figure it out just in time.

Programming today in any major area is highly complex, constantly changing, and generally done with a lot of time pressure. None of these allow you to devote a lot of non-programming time to learn even the most recent changes, much less master everything from scratch. You can really only learn a new environment by doing real projects, and how many people can simultaneously write large native Android, native iOS and responsive web clients all at the same time?

During my 34 years being a programmer I’ve only rarely worked in more than one major area. My first job was on a supermini and then 6502 assembly on Apple and Pascal on a PC, my two startups were for Mac in C, I worked some more for other people (including Apple) for Mac in C, a little C++ then Objective-C/WebObjects transitioning to web in Java on both client and server though only rarely both, some JavaScript, then C++ game programming on Mac and Windows and finally Objective-C and iOS. For each transition it was a lot of learning on the fly followed by years of mastering all the new stuff.

If for some reason someone can actually do both Android and iOS—much less web—at a real master level, they should be making way more money than most companies are willing to pay. What companies want is to hire few people who are then able to do everything and at the lowest pay level they can get. Yet I cannot fathom anyone being able to be an expert on so many things simultaneously and how they can write multiple apps in multiple technologies and keep up. I’ve known people who were incredibly brilliant but I can’t remember anyone being so good they could actually juggle unrelated technologies at the same time and produce masterful applications.

Maybe there are exceptions. But I still think most people can’t do it. People can of course master one thing then move on to master another but in the process you inevitably forget things from the first. Last year during my months of not having anything to do waiting for my layoff (I was one of the last layoffs for no apparent reason as all of our technology was already replaced prior to the final sale of the brand) I spent a month working on C++, then node.js and finally Swift. Going back to each this year (since all I had done in my new job was Objective-C) I found I had forgotten much of what I learned. If you don’t use something regularly the memories seem to fall out the back of your head. In rewriting this blog engine in PHP I got all those languages mixed up in my head.

Now if you are writing in Objective-C and then Swift on iOS at least there is some overlap. But Android is not just a different language from iOS, everything is different from the tools to how you do layouts to supporting multiple major OS releases to the 24,000 or so different devices. Just keeping up with all the new changes in this years WWDC in June is taking a lot of effort; not helping is that sample code Apple released then is already uncompilable in the latest XCode beta. Even if you wrote no code and just watched videos and read documentation and sample code all day, how could you say you are an expert with a straight face?

Add to two different mobile OS environments all the complex mess that is modern web development, especially with Javascript frameworks that appear one day and then vanish the next. You’d need three heads to keep up with it. The Javascript programmers I worked with couldn’t do more than keep up with one (in this case AngularJS).

So finding a single person who can write iOS, Android and mobile/desktop web in Javascript, using modern APIs and yet supporting older OS versions, understanding the plusses and minuses of different approaches to design and UI and the subtleties of all the different browsers and Android devices especially, and deliver bug-free results in record time, is fantasy. Oh yeah and work for less than market rates.

When I started programming things were extremely primitive and I only had to know one language and one OS and no frameworks at all. Even during my two startups I only had to master C, Inside Macintosh and some occasional 68K assembly. Today is not then. Yet we still only have one brain and brains aren’t subject to Moore’s Law. They can’t be upgraded.

So if you (honestly) can do Android, iOS and mobile web simultaneously and deliver masterful results, I salute you! But I sure hope you are making 3X money too.

创业不等于职业生涯加成

作者:余晟

微信公众号:余晟以为

 

最近面试了很多技术人员,其中不少之前的工作履历还不错。但是,因为他们之前的创业经历,我并不能发offer。

看到这里先别着急下结论,让我仔细说说理由。

这样的人员的经历比较类似:在大公司做过五六年,有了比较充分的工作经验和工作习惯,具有一定的管理能力——然后出去创业,过了不到一年,开始找工作。

刚开始我很好奇,为什么刚创业一年就找工作呢?答案几乎前篇一律:营销不行、产品不行。辛辛苦苦做了大半年,技术上的问题都解决了,可就是找不到用户。找不到用户就没有收入,没有收入就难以证明商业模式。加上如今风投行情渐冷,拿投资的难度高了很多,不得已,只能出来找工作,希望做回原来的角色。

于是我问起专业技术的问题,然后只能遗憾的发现,创业的经历对这些候选人来说并不能加分。虽然身处创业公司,他们的角色和之前大公司并没有太多差别:定技术架构、管技术团队、盯开发进度。对他们来说,这些任务已经像条件反射一样轻车熟路。于是,下面的问题也很难答上来:

  • 基于你们公司的具体情况,在选型和技术架构上有什么需要特别考虑的吗?
  • 你们在具体工作中有没有遇到之前没遇到的技术问题,这种问题是创业公司的通病吗?人家是怎么解决的?
  • 你觉得产品不好,营销不好,那么你觉得从产品和营销上可以做哪些改进?你和产品、营销的负责人谈过吗?

如果问这些问题得不到满意的回答,多半可以判断这段创业经历对候选人来说没什么特别,本质上是平移之前的工作经验和解决方案,虽说换了环境,做的还是同样的事情。既没有深入思考不同场景下的技术方案,也没有了解行业的情况,更没有展现出创业公司需要的所有者意识。这段经历给他们留下深刻印象的是:资源太少,工作太累,什么事都要自己做。

更加不幸的是,即便对专业技术,这段创业经历也没有太多的加分。做开发的还是做开发,充其量对不熟悉的领域有了一些了解,却因为忙碌而不够深入。而且因为行政管理上花了不少时间精力,对基础技术已经不再敏锐,与新技术、新思维也拉开不小的距离。

最终的局面就相当尴尬:创业经历对他们来说,技术上没有什么提升,业务上也没有什么提升,只是多了一些行政管理的经验而已。然而一旦离开创业公司,他们期望拿到更高的薪水,相当多的人有“我有创业经历”或者“补偿创业期间低薪损失”的想法;结果甚至无法保持自己创业之前的薪酬水平,因为这样的技能组合并不是非初创公司迫切需要的。对这样的职业生涯经历,我们只能称其为“失败”。

所以我通常还会问最后一个问题:“你当时为什么决定去创业呢?”

因为我想知道,是什么诱使这些候选人做出了职业生涯的重大牺牲。可惜的是,答案五花八门:想勇敢尝试的,想帮同学和熟人忙的,之前领导叫自己一起的,其他人给画了一张大饼…… 只有极少数人能回答“我想清楚了,我就想做这件事情”,这种答案是要加分的。

从公司的角度出发,我们很难和这样的候选人谈得拢;从行业同仁的角度出发,我想郑重告诉大家创业的风险很高,创业本身成功率就很低,更可能耽误自己的职业生涯发展,赔了夫人又折兵。根据我的经验,这里有几点建议给大家参考。

创业是风险极高的投入。媒体上渲染的成功者有几十几百,你看不到的失败者就有几万几十万。而且,那几十几百成功者的素质,未必强过失败的几万几十万。运气这回事,成功者不愿意承认,媒体不愿意总结,但又是任何创业者都必须面对的。所以在你决定投身创业之前,一定要做好直面运气、承认运气的准备。

投入创业最好以自己认同创业目标为前提。除非你已经有了相当的资本或者积累,否则“帮朋友忙”这类理由根本不足以支撑做出创业的决定。因为在创业过程中,身处绝境、走投无路乃是常事。如果没有对最终目标的坚定信念,半途而废是常见的结局。

创业是对人品和人性的严峻考验。不要以为这只是“能共患难不能同享福”那么简单,更不要天真地以为靠制度就可以保障自己“同享福”的权益。而且退一步说,很多时候大家还没到享福的阶段,就已经因为计较彼此对患难的承担“不公平”而分崩离析了。这种计较未必只源于他人,自己身处煎熬之中会是怎么表现,只有亲身经历了才知道,谁也不能预知。稍好一点的情况是,虽然度过了最艰苦的时期,大家没有撕破脸皮,内心却留下了抹不去的阴影,长期来看这种心理状况并不健康,自己生活也不会快乐。当然,如果你自己极度认同创业目标,或许能避免这种风险。

即便在创业公司也不应当忽略自己的职业生涯建设,避免出现“两头不沾”的悲剧。与上面提到的那些候选人不同,我见过一些经历过创业失败的人,他们或者掌握了跨领域和部门沟通协调、全面解决问题的经验,或者具备了从整个行业观察和思考的能力——总之,创业经历对他们来说是大大加分的,由专变能,具备了解决复杂任务的能力,这种机会在规范公司并不常见。结果即便创业不成功,他们再出去找工作,也可以得到比之前更好的职位和待遇。相反,如果忽略职业生涯建设,在创业公司事情做了不少,却只积累了一堆不相干的打杂经历,拿不出更有力的职业技能组合,又没有收到应有的回报,这是最大的悲剧。

身为普通技术人员,如果不具备产品、管理、营销等经验,在投身创业之前应当仔细读读与创业有关的书籍。即便它们不能保证你怎样能成功,起码能让你知道怎样做不会成功。“辛辛苦苦把产品做出来,却根本找不到用户”这样的悲剧,已经发生过很多次了,我们作为后人应当尽量早地发现,尽量早地避免。

当然,我不是希望给大家的创业激情泼冷水,我只希望大家在投身创业之前能仔细思考。尤其是在各项社会保障不健全,行业又高速发展的情况下,创业的风险可能被放大若干倍,作用到自己身上。所以,如果你只是“为创业而创业”的话,一定要谨记:创业不等于职业生涯加成。

 

内容转载自公众号

余晟以为
余晟以为

 

算法与算法工程师,技术与技术人员

作者:伯乐在线 – 水石头stone

网址:http://blog.jobbole.com/89500/

点击“阅读原文”,加入伯乐在线专栏作者

在和刘同学长谈之后,我再次对前一段时间的想法进行了反思,结合聊天中的新感受,整理在这里。

(注:标题里的算法,指机器学习算法,或者说“算法工程师”这个职位名称里的“算法”,不是“算法与数据结构”里的那个算法。谁能告诉我有没有什么更好的名字来区别这它们,或许是“机器学习算法”与“传统算法”?)

算法与算法工程师

先来一段我在知乎里回答“做算法工程师是一种怎样的体验?”的答案(其中的思想并非原创,而是山寨自新加坡某大学一门Quantitative Investment课程的ppt)

理想中的算法工程师:提出假设->收集数据->训练模型->解释结果。

实际中的算法工程师:提出假设->收集数据->预处理->预处理->训练模型->调试->调试->重新收集数据->预处理->收集更多数据->调试->调试->调试->…->放弃。

这个答案被点了几十个 zan,在24个答案中排在第二位,说明具有一定的普遍性。排名第一的有 100+ 顶,而他的观点是:每天最重要的就是跑数据!

这不是段子,而是事实。为什么“高大上”的算法工程师实际上是个数据民工,要寻找这种理想与现实的差距的原因,首先要理解一个事实:只有人能够理解数据,机器不能。

不管我们用什么机器学习算法——无论是LR,SVM,k-means,EM——对于它们来说,输入数据都是一堆浮点数组成的矩阵而以(如果说的更本质一点,只是一堆01序列)。如果有一个特征是“小时”,而它出现了25,任何一个智商正常的人类都能明白,这是一个错误,然后在数据清洗的时候把这样的数据排除。但是机器就无法理解这一点。要具备小时的概念,又要理解什么是时间,一天有多少个小时…机器怎么能自动化完成这样的数据清洗工作?更进一步,如果人发现“小时”这个特征中大部分数据是0到12,而混入少量13(但13的数量又不是太少以至不能被当成离群点排除),人就会怀疑,是不是使用了12小时制而13是一个错误。机器目前是无法做到这一点的。

再说人肉特征。一个是特征变换,比如需要一个特征是某两列数据的比率,这种除法是线性模型不能涵盖的。当然可以增大模型的假设空间,但是太小涵盖不了需要的变换,太大又容易过拟合。另一个是加特征,比如我认为点击率和屏幕分辨率有关系。于是我去找屏幕分辨率数据加入特征,如果没有还要想办法采集。这些机器都做不了。

但是,人一但把数据准备好,接下来就是机器学习算法发挥的时候了。但是,算法工程师的主要工作不在这里,这是因为软件有个特点,可以近乎无成本的复制。只要这个世界上有一个人实现了LR(知识产权的问题这里不考虑,更何况开源软件很多),其他需要用LR的人都可以拿过来用了。显然,这些算法工程师们也正是这么做的。

然而,等算法输出结果以后,又需要人的工作了——怎样用结果解释实际问题,应用到业务中去。显然这个过程和前面数据清洗、人肉特征的性质类似,都是只有人能完成,机器做不到的任务。

做过数学建模的同学对这个过程可能很熟悉——如何把一个问题描述成数学问题,再如何把结果应用到实际问题上。这有点类似于通信中的“最后一公里”问题,主干网的光纤建设的很强大,而最终用户的接入却成了一个麻烦事。对于机器学习的应用问题来说,算法和相应的软件包都是标准化、通用化的,像骨干网;而数据如何“接入”,则是只能由人完成。因为,只有人能够理解数据。

技术与技术人员

这个问题可以推广到整个计算机领域。把算法工程师代换成程序员,把机器学习算法代换成软件,这个观点就变成了:大部分程序员所解决的,是通用的计算机工具和具体的实际业务之间的“最后一公里”接入问题。

为什么这么说,我们先来看历史:计算机技术发展了几十年,程序员的入门门槛是逐步降低的。最初的程序,要在裸机上写汇编。后来有了unix,c语言,程序员至少不用亲自调度进程了。java出现之后,连内存都不用管了。而(世界上最伟大的)php出现之后,网络编程的门槛进一步降低,任何人都可以在短时间内搭建一个网站。

原来的那些问题去哪儿了呢?被少数造“”轮子的程序员们解决了——那些写操作系统、编译器、虚拟机、运行时环境、框架…等等的程序员们。这个趋势一直在持续——新兴的rust、golang等语言试图解决多核时代出现的并发问题,hadoop、spark、mesos试图屏蔽分布式系统底层的细节……可以预见,以后的并行编程和分布式编程门槛将会大大降低。这个过程是必然的,因为一项技术的发展,就是为了让更多的人能更方便的使用它。

而这些计算机工具不能直接应用于业务,因为计算机不能理解人类的语言,所以就有了大量的程度员存在,把人类的语言“翻译”成计算机语言。这些程序员是使用“轮子”的。当然这之间并不是非黑即白的,一个软件在多大程度上可以被称为轮子,取决于它的复用性。如果一段代码只能在一个地方使用,它显然不能称为轮子。而事实是,大部分为具体的业务逻辑所写的代码,复用程度很低。

对于把通用计算机工具应用到具体业务这个过程,中间到底有多少问题是技术性的?大部分技术困难被操作系统、编译器、虚拟机解决掉了,剩下的主要是大型软件(如果这是个大型软件)的复杂性控制——而这个问题又主要由少数高级别的架构师负责。对于写具体代码的程序员,剩下的技术性困难已经很少了。

举一个我供职过的公司,这是一家互联网公司,整个网站99%的代码是php,基本上没有java。没有专门的前端工程师,php、html和javascript代码混在一起。测试几乎等于没有,基本都是开发人员自测。上线流程只是个形式,质量控制部门唯二的作用就是向服务器上同步代码和出现事故之后给开发人员定责任。我曾经和另一个部门合作,他调用我提供的接口,而他在我的接口没上线的时候就上线了,导致一场事故。我本来是算法工程师,写php只是客串,而在这个过程中,没有任何上线依赖的控制,连提示也没有,甚至没有人对我进行上线流程的培训。然而,这是一家中等规模的互联网公司,己经发展了十来年,占据了所在细分市场领域的头号份额,并且己经上市。

我举这个例子并不是要黑它,而是想用事实支持上面的观点:大部分程序员,大部分所谓的“科技”公司,所面临的技术问题比想象的要少的多(这也许是那家公司没有CTO的原因)。

这不是个别情况,大多数公司都存在类似的问题——从技术角度看,它就是个渣,你会很奇怪它怎么还没死。然而事实是,它不但没死,反而活的生机勃勃,甚至上市了。公司的拥有者们早已实现了屌丝逆袭迎娶白富美的理想,而辱骂他们的程序员们还在苦苦的为房贷或者首付挣扎。这里面,有大量的非技术因素起着关键作用,尽管它们都自称科技公司。

越来越多的人意识到了技术的局限性。年初,一个同学找工作,他向来是个“纯技术流”的工程师,曾经写过很好的技术博客,甚至发起过开源项目。然而这次他说,“不想再做最底层的工程师了”,希望能做一些“高层的、能看到项目整体的”、以及“和人打交道,能够把自己的想法向外推动,并产生价值”的工作。于是,他去某公司负责带几个小弟去了。当我把这些转述给另一个同学的时候,他的反应是“我最近也有这样的想法”。还有个同学,说写了几年C++,技术上没学到多少,反而是接触的业务知识比较多。再比如我之前的leader,他是数学博士出身,曾经对算法有一种近乎天真的信仰;在我离职的时候,他已经完全转型为业务和产品导向了。而某个几年前就开始淡化技术,聚会时大讲“软实力”的同学,早已在BAT做了Team Leader,生活滋润,终日以跑步为乐。为何?其实原因很简单:公司里没有那么多技术问题需要解决。

《代码大全》里有个比喻,如果你的问题是给自己的爱犬造一个小窝,那么动手做就是了,如果出了什么错误,大不了重做一个,最多浪费一下午的时间。而造一个摩天大楼就不同了。所以,如果写一份“狗窝”级别的程序,算法、数据结构、设计模式这些又有多大意义呢?甚至违反了DRY原则也没关系,反正一段代码也拷贝不了几次,出了bug就改,大不了重写一次,最多浪费一下午。而且,说不定这个项目两周之后就被砍掉了。如果你做的是一份“造狗窝”的工作,就算你有造摩天大楼的技术,和屠龙之技又有什么分别呢?唯一的“好处”就是你会据此向老板提出更多的加薪要求,以至于老板对你“另眼相看”。

程序员应当破除对技术不切实际的幻想——这不是说技术不重要,而是说要实事求是的分清,哪些是造狗窝的工作,哪些是建普通楼房的工作,哪些是造摩天大楼的工作。

再谈算法

同理,算法工程师应当破除对算法不切实际的幻想,把注意力集中到数据的理解、清洗、预处理、人肉特征、业务应用(而这些往往和屌丝、苦逼等形容词联系在一起)上来。

未来,机器学习工具将更加标准化、平台化、通用化,并且进一步降低使用门槛。与算法本质无关的工程细节,比如数据存储方式、梯度下降过程、并行化、分布式计算等,将被制造“轮子”的程序员们屏蔽。算法工程师可能只需用类似Hive的方式,写几个类似SQL的语句就可以完成模型的训练、交叉验证、参数优化等工作。

而机器唯一不能替代的就是对数据的理解,这是算法工程师存在的价值。而数据是和业务强相关的,算法工程师将更加接近产品经理的角色,而不是程序员。深入理解数据、业务和产品,寻找模型和它们的结合点,将成为算法工程师的核心竞争力。

插一句,相对于本文的观点,Deep Learning在某种程度上是一种的例外。它试图解决特征工程的问题,也就是在某种程度上代替人提取特征。当然,它还比较初级,另外它最多只能解决特征变换问题,仍然处理不了数据清洗和预处理中需要用到领域知识的情况。

这里刘同学提出一个问题,那就是算法工程师对算法需要理解到何种程度?事实是,即使从算法的应用出发,工程师也需要掌握模型的优缺点、适用场景、模型选择、参数调优等技术。这是毫无疑问的,从这一点上说,算法工程师需要一定的技术能力,这点又和产品经理不同。

但是这就有另外一个问题:模型选择和参数调优技术,是否是通用的?还是和具体的数据高度相关的?比如,是否存在这样的现象,同样的调优技术,在(比如说)电商数据上表现很好,到了社交数据上就不行了?这个问题我暂时没有答案,如果谁知道,请告诉我。不过,一个现象是,目前做机器学习模型相关的项目,在改进的时候,基本上都采用试错的方式,就是先做出改动,然后上线观察效果;如果不好,就换种方法;如果效果有所改进,也往往没有人知道为什么。如果存在一种通用的判断模型优劣的技术,我们为什么还要采取这种近乎穷举的方式呢?

从“IT精英”到“IT民工”或者“码农”,这种称呼上的转变并非笑谈,而是真实的反应了计算机编程领域门槛逐步降低的过程。所以,我们应当给听上去高大上的“算法工程师”或者“数据科学家”起一个类似的外号,比如“数据民工”、“机农”或者“蒜农”之类,以免不明真相的孩子们被“高大上”的称号吸引而误入歧途。

其它

看的出我是一个比较纯粹的技术人员,因为对于非技术的东西,我了解不够,说不出那是什么,只能用“其它”一词概括。

这“其它”,基本上是“人”的问题——比如前面提到的“如何推动自己的想法”,“软实力”之类,大的包括机遇,小到“发邮件应该抄送给谁”这种细节。

当然,如果你是个对技术本身感兴趣的人,这些讨论不适用,因为对于这类人,技术本身就是目的,不是手段。这里的视角,仅仅是社会普遍意义上的职业发展角度。无论是想在公司内部获得升迁,还是通过跳槽而得到晋升,还是自行创业而实现人生目标,技术都只是你的一种技能。如果再想想大部分公司里提供的是一份“造狗窝”级别的职位,这种技能起的作用又有多大呢?

不过多说一句,要求程序员“对技术感兴趣”,甚至“在业余时间以写代码为消遣”,是一种相当荒谬的事情。试想,招聘销售人员的时候,从未有人要求求职者“对喝酒应酬感兴趣”;招聘财务人员的时候,也没有人要求“对加减数字感兴趣”;招聘外科医生的时候,也绝不会要求“平时以解剖人体为消遣”。为什么程序员这种职业就要搞特殊?

究其原因,大概是大家还沉浸在对技术的一种非理性崇拜之中(当然崇拜和亵渎往往并存)——“技术改变世界”这句话常常被提到。这句话没错,但是要搞清楚,“技术改变世界”不等于“每一项技术都能改变世界”,更不等于“每一个技术人员都能改变世界”。其实,程序员这一行和其它任何一个需要专业技能的行业没什么区别,只是一种谋生的手段而已。

大部分所谓的“科技公司”也并不是真正的科技公司,最多是“使用科技的公司”。其实,在金融领域,对IT的要求要高多了,各大银行也有自己的软件开发部门,但是没人把它们归到IT行业,而是属于金融行业。然而,那些开商店的,开饭店的,卖房子的,给人说媒的,集资的,他们似乎只要做个网站,就成了“科技公司”了,这难道不是很荒谬吗?(当然,像亚马逊这种从一个卖书的起家,居然后来搞起了云计算、推荐系统、无人飞行器等技术创新的,不在此列。)在这些公司当中,技术到底起多大作用呢?

也许相当一部分程序员们会自以为技术很重要,他们沉浸在对技术的憧憬和信仰中,内心深处坚定的相信自己可以通过技术能力的提升,来谋取更高的职位,走向人生巅峰。然而,大多数时候这只是一种自欺欺人的幻想罢了。天朝的程序员们有一种矛盾心态,一方面自称“民工”,认为编程是一种只适合30岁之前的年轻人从事的体力劳动,而另一方面却又把技术看的非常重要,甚至在业余时间也喜欢大谈技术,或者以攻击其他程序员使用的技术为乐。如此抱着技术不放,并不是因为多么热爱技术,而是因为他们只会技术。没有人愿意在别人面前展示自己的劣势。把技术的地位抬的越高,仿佛自己就显得越重要,而那些在需要人际交往、推动自己的想法、和产品经理讨论需求的时候所表现出的能力低下,似乎就不重要了。

这是人性的弱点——对自己某种能力盲目而过分的自信,甚至把它作为自己的精神支柱。也许他在这个方面的确很擅长,但是自我评估却比实际更高。诚然,自信是必要的,也是人生存和立足的精神基础之一。然而自信是把双刃剑——不切实际的自信(也许应该叫自大了),会蒙蔽人的双眼,扭曲事实。

那么我们应该怎么做呢?首先比较悲观的一点是,如果你从事着一份技术上处于“造狗窝”级别的工作,那么很遗憾,提高自己的技术水平恐怕对于在公司内部的职业发展没什么帮助。

如果你是一个真正对技术有兴趣的人,可以考虑一下《黑客与画家》里提到的一类“真正的程序员”的工作方式:他们求的一份“白天的工作”,这份工作仅仅用来生存,而在业余时间写一些“真正有价值”的代码。

恐怕大部分程序员都不是对技术有兴趣的吧?如果你的目标是事业上的发展,无非是跟人混和创业两种方式。跟人混,要么内部晋升,要么通过跳槽。前者需要老板认为你牛逼;后者需要别的公司的老板认为你牛逼。注意,这里有个关键词“认为”,因为人的主观印象和客观事实之间总是有差距的,而且这个差距往往超乎人的想象。所以重点是制造一种“牛逼”的印象,而实际上牛不牛逼并不重要,牛逼更好,不牛逼也可。

如果你想走技术路线,可以考虑去找一份“建造大楼”级别的工作,在那里,技术成为决定产品成败的主要因素。这种级别的项目,一般只有大公司做的起。老板对于员工技术能力的评估,还是比较容易做到客观的,因为代码在那里,牛不牛逼,一运行便知。但是对于所谓“软实力”,往往就不好评判了,主观性很大。

也正因如此,往往有很多人觉得自己很牛逼,而老板不这么认为(错的不一定是老板,也可能是这个人自大),所以一怒之下走上创业的道路。自己给自己当老板,终于不用在意老板的印象和事实之间的差距。然而这条路往往更为艰难,它对人的综合素质要求比较高。如果一个程序员在工作中不能和同事顺利的合作,那很难想象他能够满足创业者所需要的各种素质。所以,要走这条路,得有心理准备。

总结

技术是为人服务的,IT业的发展过程,是在逐步降低计算机的使用门槛,使得越来越多的人能够使用这种工具。这是好的,但它同时也降低了程序员这种职业的技术含量。如果真的想做技术,那么去做一些真正的技术。否则,就需要多多关注技术以外的东西,单纯寄希望于技术,只能用来安慰自己,而不能获得真正的职业发展。

什么样的电子积木,让硬件创业变得如此简单?

2016-04-28 硅谷密探 硅谷密探

今天,小探要介绍一款电子积木。

咋一看,像乐高玩具。但其实,学问大了。

这款电子积木套件叫mCookie,是一套可编程的芯片。mCookie的每一片电子积木都有自己的功能,譬如WiFi模块,蓝牙模块,声音模块,GPS模块,等等。

先来看看怎么耍

mCookie的边框有着磁性化材料设计,因而,你在拼接时,不再需要焊接电路,而是直接把一个个mCookie粘贴在一起。

拼接,折叠,翻转,是如此的轻巧自如。

然后,把mCookie的模块(控制,感应,机动等模块拼在一起)装载到乐高积木,或者四轴无人机模型上,

本身不会动的模型就可以飞起来了!

想想看,从前到后,就是把需要的几个功能模块拼起来,再套上模型,就可以完成一个无人机这么复杂的智能硬件了。真的很神奇啊!

没错,mCookie可以帮助你最轻量化地制作智能硬件的原型产品。

譬如,这个音乐盒,只需要7个mCookie积木就可以制作完成:

而这个小型气象站也就是四五块积木就拼接完成了:

因而,mCookie无论用于电子电路及编程的教育,还是硬件创客的实践上,都是非常轻量级高质量的工具。而其实,mCookie又只是 Microduino 旗下的最新系列产品。

 那么,什么是Microduino?

Microduino是完全兼容Arduino的开发板,功能与Arduino无异。只不过,它们更小巧,有着许多功能模块。

Microduino有多牛?

清华大学专门开设了一门2个学分的课程,让学生学习使用Microduino。

Microduino还应用到了拯救秃鹫这一濒临灭绝的物种的挑战中,Discovery探索频道也报道了。

另外,雀巢咖啡也用了Microduino的产品做了一次很好的推广营销。

如今,Microduino的用户已经覆盖了六大洲,现在就差南极洲一个就能集齐七大洲了。(不知道会不会召唤出神龙呢?)

核心创始人也是大有来头

Tiki Wang,Bin Feng是复旦大学的同学,96年电子材料专业。后来Tiki去了清华读了电子设计的硕士;而Bin Feng则去了UCSD(加州大学圣地亚哥分校)念研究生,后来走上了市场和销售的道路。

两条完全不同的发展道路,却又最终有了交集。他们再次相聚,决心一起做翻事业,于是,拉上了朋友老潘,三个人培育了Microduino这个项目。

老潘也是个牛人,据说曾经有个团队做了3个月也没搞定的电路板,老潘一人一天就搞定了。神一般的技术达人!

How much math do I need to know to program?”

Source:  http://inventwithpython.com/blog/2012/03/18/how-much-math-do-i-need-to-know-to-program-not-that-much-actually/

Here are some posts I’ve seen on the r/learnprogramming subreddit forum:

Math and programming have a somewhat misunderstood relationship. Many people think that you have to be good at math or made good grades in math class before you can even begin to learn programming. But how much math does a person need to know in order to program?

Not that much actually. This article will go into detail about the kinds of math you should know for programming. You probably know it already.

For general programming, you should know the following:

  • Addition, subtraction, division, and multiplication – And really, the computer will be doing the adding, subtracting, dividing, and multiplying for you anyway. You just have to know when you need to do these operations.
  • Mod – The mod operation is the “remainder” and its sign is usually the % percent sign. So 23 divided by 7 is 3 with a remainder of 2. But 23 mod 7 is 2.
  • The even/odd mod test trick – If you want to know if a number is odd or even, mod it by 2. If the result is 0, the number is even. If the result is 1, the number is odd. 23 mod 2 is 1, so you know 23 is odd. 24 mod 2 is 0, so you know 24 is even. If x mod 2 is 0, you know that whatever number is stored in the variable x is even.
  • To get a percentage of a number, multiply that number by the percent number with the decimal point in front of it. So to get 54% of 279, multiple 0.54 * 279. This is why 1.0 often means 100% and 0.0 means 0%.
  • Know what negative numbers are. A negative number times a negative number is a positive. A negative times a positive is negative. That’s about it.
  • Know what a Cartesian coordinate system is. In programming, the (0, 0) origin is the top left corner of the screen or window, and the Y axis increases going down.
  • Know the Pythagorean theorem, and that it can be used to find the distance between two points on a Cartesian coordinate system. The Pythagorean theorem is a^2 + b^2 = c^2. What this usually means in programming is the distance between coordinate (x1, y1) and (x2, y2) will just be sqrt( (x1 – x2)^2 + (y1 – y2)^2 ).
  • Know what decimal, binary, and hexadecimal numbering systems are. Decimal numbers are the numbers we’re used to that have ten digits: 0 to 9. It’s commonly thought that humans develop this system because we have ten fingers and counted on our fingers.

Computers work with binary data, which is a number system with only two digits: 0 and 1. This is because we build computers out of electronics components where it’s cheaper to make them only recognize two different states (one state to represent 0 and the other to represent 1).

The numbers are still the exact same, but they are written out differently because there are a different number of digits in each system. Because hex has 6 more digits than the 0-9 numerals can provide, we use the letters A through F for the digits above 9. The easiest way to show these number systems is with an odometer. The following three odometers always show the same number, but they are written out differently in different number systems:


See the Odometer Number Systems page in a new window.
You don’t even have to know the math of converting a number from one number system to another. Every programming language has functions that can do this for you.

(On a side note, hexadecimal is used because one hexadecimal digit can represent exactly four binary digits. So since 3 in hex represents 0011 in binary and A in hex represents 1010. This has the nice effect that the hex number 3A (which is 58 in decimal) is written in binary as 00111010. Hex is used in programming because it is a shorthand for binary. Nobody likes writing out all those ones and zeros.)

And that’s about it. Other than the number system stuff, you probably already knew all the math you needed to know to do programming. Despite the popular conception, math isn’t really used that much in programming. You would need to know math in order to write programs that do, say, earthquake simulators. But that’s more about needing to know math for earthquakes rather than needing to know math for programming an earthquake simulator.

Advanced Mathematics in Some Areas of Programming

There’s a few areas of programming where some additional math knowledge might be needed (but for 95% of the software you’ll write, you don’t need to know it.)

3D games and 3D graphics – 3D stuff will usually involve knowing trigonometry and linear algebra (that is, math dealing with matrices). Of course, there are many 3D graphics libraries that implement all this math programming for you, so you don’t need to know the math.

2D physics (like Angry Birds) and 3D physics (like many popular 3D games use) – To do programming that involves physics, you’ll need to learn some physics equations and formulas (specifically mechanics, which is the type of physics with springs, gravity, and balls rolling down inclined planes.) However, there are several physics engines and software libraries that implement this stuff for you, so you really don’t need to know the physics equations to make a game like Angry Birds.

Cryptography – And really, by cryptography, I just mean RSA. In which case, you’d have to learn some math about how prime numbers work and doing the Greatest Common Divisor (which is a dead simple algorithm, although plenty of programming languages have gcd() function that does this for you.) Other encryption ciphers are mostly moving data around in specific steps. For example, this Flash animation shows the steps in the AES “Rijndael” cipher. All the steps are basically substituting numbers for other numbers, shifting rows of numbers over, mixing up columns of numbers, and doing basic addition with numbers.

And that’s just if you want to write your own encryption ciphers (which you shouldn’t do, because there are already plenty of good ones and without expertise your cipher will probably suck and be easily cracked.) If you just want to write a program that encrypts data, there are software libraries that implement encryption and decryption functions already.

So even for the above situations, you don’t need to know the math to make programs with 3D graphics, physics, or encryption. Just learn to use the libraries.

What You Do Need to Learn to Do Programming

What you do need to learn is how to model data and devise algorithms. This basically means, how to take some real-world calculation or some data processing, and write out code that makes the computer do it. For example, in the game Dungeons and Dragons the characters and monsters have several different statistics for combat:

  • HP, or hit points, is the amount of damage a person can take before dying. More HP means you can take more damage before dying.
  • AC, or armor class, is a measure of the chance your armor has of blocking an attack. The lower the AC, the more protective the armor is.
  • THAC0 (pronounced “thay-co”), or “To Hit Armor Class 0”, is a measure of how skillful the person is at making a successful hit on an opponent. The lower the THAC0, the more accurate the person’s attack is.
  • The damage of the weapon is written out as something like 1d6+2. This means the damage is the amount from rolling 1 six-sided dice, and then adding 2 to it. A damage stat of 2d4 would be rolling 2 four-sided dice and adding them together. (Dungeons and Dragons uses 4, 6, 8, 10, 12, and 20-sided dice.)

To see if an attacker hits a defender, the attacker rolls a twenty-sided die. If this number is equal to or greater than the attacker’s THAC0 minus the defender’s AC, then the hit is successful and the defender takes damage. Otherwise, the defender has either dodged or blocked the attack and takes no damage.

Let’s take two Dungeon and Dragons characters, Alice and Bob, with the following stats:

  • Alice: HP 14, AC 5, THAC0 18, DAMAGE 1d6
  • Bob: HP 12, AC 7, THAC0 16, DAMAGE 2d4

So Alice has two more hit points than Bob and better armor (remember, lower AC is better). But Bob is more likely to make a successful hit (remember, lower THAC0 is better) and does more damage. We can tell Bob’s damage is better because 2d4 will result in 2 to 8 points of damage, while Alice’s 1d6 will result in 1 to 6 points of damage. (If you knew statistics math, you could calculate that Bob’s expected value of damage is 5, which is larger than Alice’s expected value of damage is 3.5.)

So would you bet on Alice or Bob to win in a fight? It’s hard to tell, they seem pretty evenly matched. Even if you knew a lot of statistics, doing all these calculations would be a pain. But you don’t need to know statistics in order to write a program that simulates Dungeons and Dragons combat (that is, models this process) and then run several hundred or thousand simulated fights and see who wins on average.

Here’s such a program written in Python: (Download source)

import random, copy

NUM_FIGHTS = 1
VERBOSE = True

# Lower thac0 and lower ac values are better. Higher damage & hp values are better.
aliceTemplate = {'name': 'Alice', 'hp': 14, 'ac': 5, 'thac0': 18, 'dmgnum': 1, 'dmgsize':6, 'dmgmod': 0}
bobTemplate   = {'name': 'Bob',   'hp': 12, 'ac': 7, 'thac0': 16, 'dmgnum': 2, 'dmgsize':4, 'dmgmod': 0}

def display(s):
    if VERBOSE:
        print(s)

def attack(attacker, defender):
    if random.randint(1, 20) >= attacker['thac0'] - defender['ac']:
        damage = 0
        for i in range(attacker['dmgnum']):
            damage += random.randint(1, attacker['dmgsize'])
        damage += attacker['dmgmod']
        display('%s (%s hp) hits %s (%s hp) for %s points of damage. %s is reduced to %s hp.' % (attacker['name'], attacker['hp'], defender['name'], defender['hp'], damage, defender['name'], defender['hp'] - damage))
        defender['hp'] -= damage
    else:
        display('%s misses %s.' % (attacker['name'], defender['name']))

aliceWins = 0
bobWins = 0
for i in range(NUM_FIGHTS):
    display('======================')
    display('Start of combat #%s' % (i+1))
    alice = copy.deepcopy(aliceTemplate)
    bob = copy.deepcopy(bobTemplate)
    while True:
        attack(alice, bob)
        if bob['hp'] <= 0:
            break

        attack(bob, alice)
        if alice['hp'] <= 0:
            break
    if alice['hp'] <= 0:
        display('Alice has died.')
        bobWins += 1
    if bob['hp'] <= 0:
        display('Bob has died.')
        aliceWins += 1

print()
print('Alice won %s (%s%%) fights. Bob won %s (%s%%) fights.' % (aliceWins, round(aliceWins / NUM_FIGHTS * 100, 2), bobWins, round(bobWins / NUM_FIGHTS * 100, 2)))

When you run this program, it produces output like this:

======================
Start of combat #1
Alice misses Bob.
Bob (12 hp) hits Alice (14 hp) for 6 points of damage. Alice is reduced to 8 hp.
Alice misses Bob.
Bob misses Alice.
Alice misses Bob.
Bob misses Alice.
Alice misses Bob.
Bob misses Alice.
Alice (8 hp) hits Bob (12 hp) for 5 points of damage. Bob is reduced to 7 hp.
Bob misses Alice.
Alice misses Bob.
Bob misses Alice.
Alice misses Bob.
Bob (7 hp) hits Alice (8 hp) for 2 points of damage. Alice is reduced to 6 hp.
Alice (6 hp) hits Bob (7 hp) for 6 points of damage. Bob is reduced to 1 hp.
Bob misses Alice.
Alice (6 hp) hits Bob (1 hp) for 1 points of damage. Bob is reduced to 0 hp.
Bob has died.

Alice won 1 (100.0%) fights. Bob won 0 (0.0%) fights.

But maybe Alice just got lucky in this one fight. Let’s reprogram this program to turn off the verbose output (displaying text on the screen takes a lot more time than running the simulation) and up the number of fights to 30,000 (this is just changing the NUM_FIGHTS variable to 30000 and the VERBOSE variable to False):

Alice won 12909 (43.03%) fights. Bob won 17091 (56.97%) fights.

So we can see that with the given stats, Bob is at a slight advantage. The computer just ran 30,000 simulated fights. If we were to play 30,000 fights of Dungeons and Dragons with pencil, paper, and physical dice, it would take months to calculate this. But my laptop had the results in less than 8 seconds.

But what if we increased Alice’s hit points from 14 to 20. Who would win then?

Alice won 19438 (64.79%) fights. Bob won 10562 (35.21%) fights.

We see that those 6 extra hit points turns the tables and gives Alice the advantage. How about if her hit points were only increased to 16 instead of 20?

Alice won 15176 (50.59%) fights. Bob won 14824 (49.41%) fights.

We see that just tweaking the stats by 2 hit points is just enough to even out the advantages that Bob gets from his higher level of damage.

And when you look at this program, the only math it uses is addition, subtraction, and multiplication and division to find a percentage. Even if we made the simulation more sophisticated to account for the effects of magic spells, healing potions, multiple attackers, and switching to different weapons in mid-combat, we wouldn’t need to know more math or have made good math grades to do the programming for it.

Sure, go ahead and learn more math. It can only help you become a better programmer. But how much math do you need to know to program? Very little, actually.

UPDATE: I guess I’d add basic algebra to the required knowledge, but only insofar as that if X * 3 = 12 knowing why X is 4.

(Here’s a list of other discussions on Reddit about this topic.)

你可以培养下一个乔布斯吗?

编者按:中西方文化和教育在很多方面大相径庭。海外的华人父母常常感概,不仅是孩子,自己也需要在文化适应方面作出大的努力。

如何培养孩子尊重规则又不失去创造和想象的动力,是很多父母面临的育儿难题。受幼年乔布斯故事的触动,一位旅美中国妈妈反思了对三个孩子的抚养,指出了传统教育中禁锢孩子潜在成长的相关问题。

文/ 李青原 (本公号创刊专栏作者) 三个充满了好奇心、能量无穷男孩的妈妈。 毕业于上海外国语大学,随后继续到美国深造。在北美金融投资业闯荡十五年后,终于在2014年决定辞去投资业工作,力争专心做个妈妈,且同时在寻找一份可寄予爱心和为社会做出更直接贡献的事业。


最近读了沃特·伊沙克森的乔布斯传,感触很深。苹果的创始人乔布斯是现代社会无可非议的创造力和应用想象力的代表。他不但将Pixer和苹果创建成为世界一流的公司,而且对个人电脑,动画,音乐,电话,平板电脑,电子发行六大行业做出前所未有的改革。

面对着书中那个桀骜不驯,藐视权威,玩世不恭的儿时的乔布斯,我不禁问自己:“如果我有一个这样的儿子,他是否能成为乔布斯?” 答案是,可能性很小。之所以这样想,是因为传统的教育模式和社会期望会让我把孩子的创造性和想象力给扼杀了。 换句话说,如果幸运的话,他也许会有一份不错的工作,但他很难成为像乔布斯一样的创新人物和社会进步的推动力量。

读到幼年的乔布斯的篇章,触动我反思自己的育儿方式以及东西方社会的教育理念。无论是中国还是西方的父母都可能碰到以下几个方面的问题和困惑。希望以此文,来展开对相关问题的讨论。

奖惩分明(关于奖励)?

大家常说,教育孩子应以奖励为主。当我们的孩子们做对了一道题,做好了一件事时,我们常会奖励他们,比如说一张粘纸,一颗星星,或者是加分。一旦他们做错了什么,我们就会严厉批评。奖励也就因此成为孩子做事的动力。

然而,现代心里科学研究却发现,频繁的奖励对孩子的创造力和情商有很大负面影响。 首先,奖励是外界刺激。一旦失去外界刺激,人的行为很可能又回到刺激以前的样子。关键是要理解孩子,激发他们内在动力,这样的结果才能长久稳定。第二,过多的奖励与创造力和冒险精神成反比。比如说,当他们知道一种解题方法能给他们带来频频奖励时,他们就不愿意冒险去尝试一个新的方法。第三,频频奖励会让孩子们计较得失,急于求成,养成了功利心。

成功的道路是漫长的,艰苦的,可能要经历无数次的失败。在奖励中成长起来的孩子,能有毅力和耐性承受住这样的寂寞与煎熬吗? 再者,有很多人为别人,为社会,默默无闻几十年如一日地做好事,做义工,而不求报酬。在奖励下培养出的、做任何事都可能有功力心的孩子,会有这样一颗无私心和博大的胸怀吗?

满满的时间表?

放学后,孩子要练钢琴,念中文,做补充作业,阅读和游泳。到了周末,他们的日程安排更紧张,做课外作业,参加球队训练,上中文课,上钢琴课,学跆拳道,上课外辅导班,学画画,学下棋….,我们没有为孩子们留下足够的时间以让他们自行去经历,观察,总结,幻想,去热爱并体验大自然。他们更没有时间投入到自己的爱好与特长中,做自己喜欢的事情。他们的大脑和身体都被紧紧地囚禁在我们家长制定的框架中。在这种环境下长大的孩子即使有乔布斯和比尔·盖茨的智商,也很难将自己的特长和爱好发扬光大,更别提有时间去钻研创造了。

敬畏师长?

我们总是要求孩子从小就要听话,要服从父母和师长,不能和长辈顶嘴,更不能说长辈是错的。我们到处找有关教育的书,目的之一就是能让我们的孩子听话。作为家长的我们也为有尊师守纪的孩子而欣慰,为不听话的孩子而焦虑。 我们最常用的批评孩子(特别是对男孩子的)的话就是:“你怎么那么不听话!”

有一次我对四岁的二儿子说他应听话,因为听话的孩子人人喜欢。他疑惑地问我:“Why? Mummy, how do you know what you said is correct? “ (孩子回问:妈咪,你怎么知道你说的就全对呢?) 我当时不知道该怎样回答。仔细一想,他反问的不无道理!我们大人说的每句话、做的每件事就都是对的吗?有时候我们觉得他们不听话时,他们其实并没有做错什么,他们只是做了我们大人不喜欢的或认为不妥当的事罢了。

教育孩子尊敬他人是非常重要的,但尊敬不等于畏惧, 不管那个人是何种权威。记得几年前我的公司招了十几个刚从研究生院毕业的硕博士,其中一半是中国学生。 这些年轻人大多来自牛津,伦敦商学院,哈佛,斯坦福等世界著名学府。 但是,很明显的是,相比中国学生的内敛和拘谨,外国的年轻人更加勇于向领导提出建议,指出问题,表达创新意见,甚至试图去影响他们的管理人员。同样交上去一份报告,外国年轻人敢于每天敦促老板给他回复,而中国学生却被动地等待反馈。

怕他们犯错误?

孩子们做作业的时候,特别是男孩子,总是不专心。 于是,我们一有空就坐在他们身边陪同,不停地敦促他们。一看见他们做得有错,遇到难题,就忍不住指出并帮助。他们在做其他任何事的时候,我们也都是尽可能地予以关注,一见到他们遇到困难,就忍不住帮他们一把,以免他们犯错误。

记得我父亲常常对我说:“我天天敦促你,就是为了你少走弯路,甚至不走弯路。”但我们都知道,不走弯路是不可能的。关键不是不让孩子在幼年时做错事,而是通过幼年时的种种小“错误”,让他们学会思考,分析,自己寻找解决的办法,懂得无论做什么事情都需要承担责任和后果。我们不能保证孩子今后在社会上、工作上,不走弯路,不犯错误;我们所能做的是,教给他们处理和解决问题的能力。这样他们在社会上才能少犯错误,少走弯路。即使犯了错,走了弯路,也能很快认识及时纠正。

帮他们做选择?

作为家长的我们经常不由自主地对孩子的事务包揽包管,小到每天穿什么,吃什么,作文该写什么;大到上什么样的学校,做什么样的工作,交什么样的朋友。这样长久以来我们的孩子就不仅失去了主动性,更形成了依赖性。我们都知道人生就是无数选择的组合,要让我们的孩子有一个良好的未来,我们必须让他们学会在不同的环境中作出合适的选择。

最近和一位有过二十多年教育经验,并在世界各国(包括中国)帮助开设十几所国际学校的美国教育界人士谈起选择。他的观点是,相比起亚洲国家,西方国家,特别是美国的社会自由度太大了。他认为,如果孩子从小没有得到对事物分析能力和选择能力的培养,他们在稍大以后,会有困难抗拒不良的朋辈压力(peer pressure),做出不适当的决择,因此可能导致一系列问题,包括吸毒和患上忧郁症等。

选择的能力从小就要锻炼起来,但是这不等于娇惯他们让他们随心所欲。一开始的时候,可以限制他们的选择范围,随着年龄的增长,这个范围可以渐渐扩大。还有一点需要再次强调的是,要让他们对他们的选择结果负责,特别是错误的选择。在这个过程中我们可以帮助他们分析,但最终还是由他们做出选择,承受结果。

比如说早上穿衣服,他们要自己挑衣服。这时,做父母的可以拿出两到三件他们喜欢的,让他们在一定时间中(比如3分钟里)做出选择。父母可以告诉他们说:“你有两个选择。第一,你可以自己在这些衣服里选;第二,如果你们在三分钟内还选不好,我就要选一套给你了。” 很重要的是,三分钟内如果选不好,不管孩子怎么哭闹,他们都要穿上你给他选的衣服。

再比如,如果一个十几岁的孩子上学总迟到,你就可以给他这样的选择:1. 如果他能按时走,父母可以用车送他;2. 如果他晚了,他必须用自己的零花钱叫出租去上学。

总而言之,传统的教育方式在很大程度上禁锢了孩子的创造力,主动性,责任感。我认为,教育不仅要让孩子学会课本上的知识,更重要的是培养他们独立自主和处理事物的能力和责任感。因此,我们应该在一定范围内多给孩子自由和选择的空间,并且要让孩子学会对自己的选择和行为负责;鼓励他们敢于提问,不要害怕权威;不要怕孩子摔跤,要让他们学会在一次次摔跤后重新勇敢地站起来。

正如儿童发展研究领域先驱、美国心理学家和儿科医生阿诺德·格塞尔博士(Arnold Lucius Gesell,1880  – 1961)说的,孩子们的智慧会自我展现。他提出,如果我们给孩子提供一个可适度激发他们身心发育的环境,并且花合理的时间和他们在一起,那么他们将会按需学习并成长,他们的心智也将因此得到完善。

编辑: 王冬莹、韩桦

公号原创文章,欢迎转发分享

转载请务必注明出处 (作者/编辑 + 公众号名称)

为什么世界一流大学不爱招中国学生?

2016-04-14 财经

一方面必须改变教育理念和教育方式,把幼儿园到大学的教育重点放在“做人”的通识与思辨训练上;另一方面要走出儒家名分等级秩序的文化制约,不能再把“顺从听话”机器人作为我们的楷模。

作者:陈志武

最近,两件事再次引发我对中国教育的担忧。一是,前不久跟一位美国名牌大学金融教授谈博士研究生招生政策,他说他们今后可能不再招收中国博士研究生了。

这不是种族歧视问题,他自己也是中国人,而是因为过去多年的中国学生,开始学习成绩都好,后来做博士论文研究时虽然未必突出,但还可以,可是等到毕业上学术市场找教职岗位时,都表现不好,没办法找到一流大学教职。所以,他们不想再浪费时间培养中国学生了。

实际上,不只是他们大学有这个打算,即使我所在的耶鲁和其他大学,也讨论过同样的问题,虽然我们没有决定完全停招中国学生,但从那以后,就有意识地少招或者偶尔不招。

以2015年为例,美国的前30名金融系毕业的博士中,来自中国的不少,但找教职岗位最成功的是去了加州理工学院,那个大学当然不错,可是,这么多中国博士生中没有一个被前10名或前15名金融系招聘。

由于这些博士都毕业于顶尖金融院系,这一结果很让人失望,各学校投入的资源和教授精力那么多,并没有得到相应的回报。

二是,在美国金融和硅谷高科技行业中,印度裔高管远超华裔。大家熟悉的谷歌、微软、Adobe、软银、花旗集团等公司的CEO都是印度人,在这种级别的美国公司中似乎想不起一个中国人CEO。公司副总裁一级的印度人就更多了。

而且,不只是美国企业界里中国人和印度人的反差这么大,在大学里也如此。比如,几年前美国主要商学院中,有12个在选拔招聘商学院院长,其中有10个给了印度裔聘书,没有一个给中国裔。尽管后来一些印度裔谢绝了,但这本身也反映出中国和印度之间在教育、文化上的差距。

中国人天赋好,又聪明勤奋,但为什么结果会如此失望,跟美国、印度和其他国家的人差别那么大呢?答案主要在两方面,一是教育理念、教育方法,包括中国父母对子女的养育方式;另一方面是儒家文化,尤其是坏在我们推崇的“顺从听话”和孝道文化上,这些文化烙印实际是中国人一辈子的包袱,走到哪里都无法丢掉,到哪里都吃亏。

 

先谈教育   

我在大学教书至今26年,见过的学生也算不少,其中两个故事让我难以忘记。

张三(匿名)出生于国内大城市,高中毕业轻易考上北大清华,等他到耶鲁读博士时,哪怕再难的数理经济模型对他来说都太容易。在我的博士生课堂上他毫无疑问一直最优秀,即使在耶鲁这样的世界各地天才会聚的地方,他的聪明才华照样遥遥领先。

可是,两年后的一天,正当他全力以赴深入做研究而且已经有出色成果的时候,张三找我私聊,说他在考虑是否退学回国去做PE投资基金,因为他父母好友愿意出资5000万美元由他去负责管理,机会难得。

震惊之余,我问他:“你的天赋如此出色,我一直认为你最有希望出类拔萃,出一流学术成就。告诉我,你是否真的对学术研究、学术生涯有兴趣、有激情?”

多年的经历让我清楚,一个人如果对他从事的工作没兴趣、无激情,尤其当他做的是学术研究时,那么,要他做好、要他做出别人想不到的创造性成绩,那等于是赶鸭子上架,难!每天做自己没兴趣的事情,只会是应付,不会钻进去的,那样他自己也会痛苦、很累。

张三回答说:“对学术研究谈不上有兴趣。我可以做,也可以写学术论文,但这不是我的兴趣与激情所在。”这下好了,我跟同事原来期许厚望的博士生,对我们的专业也就是如此。我接着问他:“那你为什么要申请金融博士研究生呢?”他的回答不奇怪:“因为父母要我这样做,而且看到其他同学都这样做。”

第二个故事更具戏剧性。这回是国内顶尖大学的经济史博士生,到耶鲁来访问一年。我原以为他对经济史这么投入,正好也可以协助我收集史料、研究一些经济史话题。到耶鲁后,他无比兴奋:要选修15门耶鲁戏剧学院的表演课程!耶鲁戏剧学院是世界一流,机会难得可以理解,只是我们没有学生会一个学期选五六门以上课程。看到他对表演这么有激情,知道他实际上对经济史和经济学没太多热情,所以,我没有阻止他去戏剧学院上课。

他那一年把耶鲁戏剧学院的所有表演课都上完,很是兴奋,那些表演系老师对他评价也非常高,觉得他真有表演天赋和激情。后来,我问:“很显然,你的激情在戏剧和表演。你在国内上大学、读研究生怎么没有申请艺术学院呢?” 答:“我父母不让呀。他们要我学经济学,好找工作!”

这么多年教过的中国学生中,真正因为自己喜欢而研读经济学、金融学的是极少数,绝大多数是因为父母的压力和安排。既然他们都不是因为自己真实的兴趣而为,出现上面我们谈到的,那么多读金融博士、经济学博士的中国学生最后在职场上表现一般甚至更差,就不足为奇。赶鸭子也许可以上架,但上不了高架的。

中国父母都关心子女教育,即使没有百分之百的“望子成龙”,也想儿女去尽可能好的学校,将来有一份好的职业与收入,能够一辈子过上幸福的生活。所以,就有了众多中国父母起早摸黑,不分周中周末,一年到头为了子女上学的事情奔波,甚至常年离开丈夫、家人和朋友到外地或国外陪子女上学。

也为了让子女上“最好”的学校,经常想尽办法找关系、开后门,使用所有能想到的招法,就是为了子女能得到“最好的教育”,为了不让子女“输在起跑线上”!在专业方面,都倾向于要求甚至不惜逼迫子女学金融这样光鲜的专业,或者学会计这样容易找工作的实用专业。

可是,很多父母可能从来没有问过,更没有想过“什么是最好的学校”“什么是最好的教育”。学过优化理论的人都知道,“好”“不好”“较好”“最好”这些价值判断都只能是相对的,必须首先搞清楚的是“相对于谁”“相对于什么”,因为不存在没有度量指标、没有参照系的“好”和“最好”。

于是,在不问不想的情况下,往往是根据父母自己认为“好”的标准去选择“最好”的学校和专业,等于让子女去过一种父母认为好但子女自己未必认为好的职业和生活。有时候,这实际上是迫使子女去实现父母自己没有能实现的专业梦。

或者,就是一窝蜂随大流,去追求大家都认为最好的哈佛、耶鲁或者北大、清华。如果你问他们“为什么哈佛耶鲁好、北大清华好”时,他们也说不上来。

好与不好,只有基于子女的个人兴趣、偏好、个性和天赋才有意义。

否则,不仅没有意义,而且很容易造成天赋与人才的浪费,结果只会是子女学习、工作没有热情,无精打采,每天因为在做自己没有感觉的学习或工作而特别累,而且会时常抱怨,对生活、工作失去兴趣。

父母也会觉得难受,因为他们尽了那么大的力,陪读那么多年,花了那么多钱,找了那么多人情关系,到最后也没有见到子女有出息!而对于社会,这同样是最糟糕的局面,因为如果多数甚至所有家庭都这样不顾子女兴趣去选择学校和职业,结果会是,社会中的各项工作都是那些对此并没有兴趣、更谈不上热情的人在做,这不仅导致人力资源的整体浪费,而且各项事业都无法做好,更不会有突出的创新。

在任何社会中,人才资源是各项资源中最为重要的,因此,把每个人的兴趣和天赋跟其专业尽量配置得一致,是整个经济中最为关键的一部分,也是决定一个国家整体资源配置效率的最关键因素。

我们想象一下:一个社会中,每个人在做自己并没有兴趣但为了养家糊口又不得不做的事,而且每件工作都是由那些并没有兴趣的人在做;在另一个社会里,每个人都选择做自己有激情的事情,而且每份工作都是由对其有兴趣的人在做。那么,这两个社会中,哪个社会的整体幸福感更高、效率和创造力也更高呢?

答案显然是后者。这就是中国社会和美国社会的差别,这些差别表现在子女的学校选择、专业选择、职业选择、工作选择和婚姻对象选择上。

经常有朋友咨询子女教育的事情,一个普遍的说法是:“我就想女儿读完大学,立即读研究生,拿到硕士博士学位、完成学习任务后,再去工作、结婚成家。”

我就问:“为什么非要有读硕士、博士的任务呢?为什么不能大学毕业后先工作几年,让他比较一下工作和读书的差别,感受一下自己到底喜欢工作还是学习,喜欢什么专业、什么工作呢?”

他们当然没有想过“为什么要读硕士博士”的问题,因为他们觉得反正大家都要子女读研究生,所以理所当然自己的孩子也要读。他们没想到也许自己的子女根本就不适合读研究生,也可能对学术和读书没任何兴趣,在这种情况下,如果还要他们去读书,对子女是劳命,对父母是伤财,对社会是浪费资源。

这些朋友就说:“万一他去工作后不再想回学校读书了,那不就不好了吗?”我说:“如果是那样,那就更说明大学毕业后先工作是对的!否则,他们会浪费那么多青春在自己不喜欢的事情上!”

在物质产能过剩、物质这么丰富的今天,温饱不再是个问题。父母可以给子女最重要的礼物是给他们提供经济条件,让他们追求自己的兴趣、选自己有激情的事业。把自己的喜好强加给子女的父母显得太自私、太不尊重子女,这包括学校、专业、工作和婚姻恋爱。

职业和做人 

下面这个故事很流行:一家硅谷公司招来三个实习生,分别是中国人、印度人和美国人。美国实习生只求把事情做完就好,一到下班立马走人。他对一些问题尽管一知半解但也能侃侃而谈,一分钟可以讲完的问题,能讲五分钟。中国实习生很努力,活干得最多最好,但不爱多说话。

印度实习生工作做得没有中国实习生精细,但也不差。虽然讲话带有口音,但最爱发问,擅长表达自己。在实习期间,学到东西最多的是中国实习生,但是,最后人们最能记住的是那位印度学生。

这个故事当然是中国人喜欢讲的,因为中国人看重“硬本事”、看轻“软本事”;按照这种我们熟悉的价值观,这个故事实际是想抬高中国人、贬低印度人,也包括贬低美国人,很符合中国人的口味。

但问题也恰恰出在这里,因为我们这种看重“硬本事”的文化取向造就了中国人只能干苦力活、不能像印度人那样在硅谷和美国大学等领域成为领袖人物;也正因为美国和印度社会既看重“硬本事”也看重“软本事”,所以,反馈到文化和教育领域,就变成了不只是要强调数理化,也要强调人文社会科学,在判断人才时不只是看他的硬技能,也看他的表达能力、沟通能力,看他是否是一个风趣的人。

比较极端的是,不少中国父母在子女好不容易到美国大学读书后,又偏偏要他们花大学四年学会计,这的确是“硬技术”,对找工作最便利。但是,他们没有想到,实际上中国会计规则跟美国不完全相同,学完美国会计规则,到了国内还要补课才能做会计。而且像会计这种职业性这么强的专业,根本不需要到美国大学去花钱学四年,在国内的技校就可以学到,然后在国内考会计资格,那样既省钱又更实用。

这些朋友说,他们担心子女毕业后不好找工作,会计好找工作。如果是这样,国内技校不是更好吗?而且,退一步讲,如果只是为了找工作,麦当劳不是有很多工作机会吗?

实际上,这里关键还是在于对“教育”的理解和认识问题。教育有两项主要功能:一是为了职业,一是为了做人,尤其是为了做一个有意思、有趣味、有意义的人。职业培养是为了饭碗,而“做人”的教育是为了让人不只是职业工具,而更重要的是做人。

许多朋友一听到自己子女想学历史、文学、艺术,或者心理学、政治学、社会学,就很生气,认为这些“软本事”没任何用,不便于找工作,等等。但是,他们不知道,这些“软本事”恰恰是使一个人更加有意思、有趣味的基础。

世界需要“硬本事”的人,但世界是由那些能说会道、知识渊博的人领导的。即使我们走出企业领导、政府领导阶层,在社会生活中,那些除了职业以外还了解我们历史、社会、政治和经济是怎么来的人也是更加有趣的人,同时更可能是社会中的成功人士。

随着互联网资源的丰富膨胀,各类专业技术通过谷歌随时随地可以查到,获得“硬本事”的方式可以是技校、大学,也可以是通过上网就行。所以,“硬本事”的相对价值在降低。但,全球一体化的社会对于软知识、软本事的需求比以前大增。

在这样的背景下,如果中国人不在“软本事”方面追赶美国和印度,我们可能只能继续以苦力活、以低利润活为主,把高利润、高收入的工作继续由美国和印度人控制。

就每个人的生活而言,从幼儿园到小学、中学和大学都应该强化通识教育,也是为了让自己能一辈子活到老幸福到老。通识教育不仅能让一个人增加“软本事”,而且还会让你接触了解各种不同学科领域的知识与研究,激发你方方面面的好奇心和兴趣。

一旦你对许多东西有好奇和兴趣后,一辈子中的不同时段总会有让你感兴趣、让你激动的追求和话题,不会过得枯燥,而会充实生命中每个阶段的生活内容,最大化一辈子的幸福感。

也谈文化 

 

之所以中国人跟美国人、印度人的差别这么大,也当然跟中庸和孝道文化紧密相关。在中国长大的过程中,父母等周边的人都教你“乖乖听话”、听长辈的话。不管走到哪里,只要见到比自己年长的,都要小声讲话,要顺从听话,不能挑战长者和权威的言论。

正因为从出生开始,二三十年之内,周边大多数人都比自己年长,都是自己必须要顺从听话的对象,所以,每个人在成长的二三十年里都会被驯化得乖乖的,没机会锻炼讲话辩论,长大后即使想学习辩论、学习作报告演讲技巧,也很难改变从小被迫养成的“听话不作声”习惯。

在中国,别人说“你的孩子好听话”是对你子女的表扬,父母也会因此而欣慰。而我在美国生活的30年里,从来没有听到美国人以这种话去夸奖人家孩子的,因为美国人会认为“听话”“顺从”是贬义,是没有个性的表现,因此,没有人愿意被这样评价的。

 

由于三纲五常,长辈、年龄是中国社会名分等级秩序的最重要组织维度,这种等级秩序压制个性的表达,使我们长大后本能地安静、讲话谨慎又谨慎。美国社会是另一极端,没有鲜明的基于年龄、长幼的等级秩序,大家以理服人,而非以年龄大小压人,所以,就更加促长美国人辩论能力、表达能力的发展。

印度则是介于中国和美国之间,他们对长辈也会敬重,但不像中国社会那么绝对,再加上印度被英国殖民统治100多年,多少也淡化了印度人对长者的顺从程度,不再像原来那么论年龄,而是更加讲理,以理服人。这些文化特点是上面三个硅谷实习生故事背后的重要原因。

中庸逻辑要求你不能声张,不能过多表达自己,什么都要适度。即使是讲道理、辩论,也不要那么认真,那么“打破沙锅问到底”,什么事情“差不多”就行了。这种文化熏陶出来的人,当然倾向于不会表达,即使表达或者争辩,也不会太认真,否则,内心会感到不自在,会内疚。

再加上这些年在中国,许多做母亲的不知道溺爱会害了孩子,让自己孩子永远长不大。比如,在我原来任教的一个大学里,一位中国教授已经30岁出头,没有结婚成家。尽管他已经拿到终身教授职位,但还是不成熟,因为他母亲还是每天跟着他、盯着管着他的一举一动,结果她儿子就没机会长大成人。

根据六年前我女儿用的一本美国中学教材的一些研究估算,中国大学生的成熟度平均比美国同龄人要低3.5年左右,原因就在于儒家文化和中国父母育子方式,在该放手的时候不能放手让孩子独立。

而成熟度跟领导力又高度关联,没有成熟就无法有领导力,就难以竞争谷歌、微软、花旗等公司的CEO岗位。

许多人在解释为什么中国学生在美国不能更成功、中国人不如印度人那么突出的时候,都喜欢以中国人英语差、印度人英语好作为主要理由。

语言当然是中国人的弱项,但实际上更根本的原因不是语言,而是儒家的名分等级秩序,这个秩序使我们每个人在成长过程中被持续不断地压抑,任何有个性的表达和质疑都会招致重罚,以至于等我们长大成型时,我们每个人都成了只会做事、不会作声的人,只有干苦力的“硬本事”,没有“软本事”。

今天的世界已经高度一体化了,为了让我们的后代有机会在国际竞争中更能胜出,一方面必须改变教育理念和教育方式,把幼儿园到大学的教育重点放在“做人”的通识与思辨训练上;另一方面要走出儒家名分等级秩序的文化制约,不能再把“顺从听话”机器人作为我们的楷模。

来源:《财经》杂志 ;作者为耶鲁大学教授、北京大学经济学院特聘教授)

顶尖科技公司是怎么招到一流人才的?

谷歌、Facebook、苹果、亚马逊等这些顶尖高科技公司每年都会收到“千万亿”量级的简历,可以肯定:他们有自己筛选人才的方法,但那究竟是什么呢?答案,绝不是网上很火的那套“谷歌面试题”。事实上,他们对招聘过程的系列微调,已远远超出算法和量子物理学这些东西。如果你也想招到顶尖人才,不碍试试下面秘诀。

1,提前/推后 15 分钟打电话,或者就是完全不准时

为什么?目的是:找到时刻为工作准备着的人。如果你是在“可预期”时间里打电话,那么人人都可以准备得很充分。但如果你打电话时他们在睡觉,或上舞蹈课,或是上厕所,结果会如何?这就是顶尖高科技公司找到“随时可以投入工作”员工的秘诀。

2,面试时间表混乱且不可预测

为什么?目的是:找到不需要依赖“说明书”的人。确保面试者和应聘者都不清楚面试过程会发生什么,可以完美考验在没任何”线索“提示下,谁会执行得最优秀。

3,做 Presentation 时出点岔子

为什么?目的是:考验应聘者是否能在外界环境处于不理想时作出调整

特意找间房子,里面用来做 Presentation 的设备有问题,如果应聘者能随意而安,并且可以从容应对,那就说明他/她在工作中易于相处。如果他/她同时还备有 Plan B、C、D,那就该加分,干科技这行,这个习惯很重要。

4,面试时,不断抛出错误假设

为什么?目的是:淘汰掉容易生气的应聘者。如果他上份工作是 Twitter,你就问:“你在雅虎干了多久?”

注意并记录他/她纠正你时的语气,很生气还是保持冷静?由此,高科技公司可以考验出应聘者在遇到麻烦时的工作表现。

5,让他/她解决你的特定问题

为什么?因为你真需要帮助。高科技公司经常让前来应聘的人试着解决公司面临的实际问题。这是获得免费帮助的好方法。

6,让应聘者频繁辗转于多个房间

为什么?目的是:找到那些即使感觉不舒服但仍然很兴奋的人。不要让求职者在面试过程中太舒服,这是找到那些能在不适状态下仍保持兴奋员工的方法,并且也展示出:没有哪间会议室可以用上一整天。

7,反复问同一个问题

为什么?目的是:测试一致性。高科技领域,可预测是好事,不要担心你一直重复问同样问题,这是测试求职者”一致性”的好方式。只有在面试高级角色时,应聘者才可以表现出和他们自己答案疯狂的不一致。


8,“好警察”/“坏警察”氛围下双重面试

为什么?目的是:找到那种可以在高压下完成多任务的人。让应聘者坐会议室中间,面试官坐在桌子两边。

应聘者是否能同时兼顾两个面试官的问题,并能同时做出充分回答?还是说已经被搞得精疲力竭,并且很困惑为什么会接受这样的面试?这是考验一个人在压力情况下会如何表现的好方法。

9,问问题,然后大声打字

为什么?目的是:找到那种在干扰环境中仍能保持注意力集中的员工。问应聘者一个问题,然后当他开始回答,立刻大声打字。同时道歉说你“在听,只是在做笔记。”

你可以做笔记,也可以是给你不经常联系的父亲发邮件,无论你在做什么,都没所谓。观察应聘者是否仍能专注你提出的问题,还是已经开始分神?这将帮助你找到在工作中不受干扰的员工。

10,3 个月后,通知他被录取了,但这不是他申请的那个职位

为什么?目的是:找到决心始终如一的人。这个方法可以淘汰掉那些一开始就对这份工作不怎么坚定的人。

应聘者努力争取他想要的职位了吗?或是他只是觉得这是他能得到的最好职位,所以就接受了?还是他实际上几月前就找到了别的工作,所以拒绝了?这是弄清这些问题的好方法。

文自硅发布,来自谷歌前员工 Sarah Cooper。

俺来也老孙激情演讲视频

校园市场及当下青年人的消费习惯
互联网时代的校园品牌营销之道
最IN的校园创业模式
满满干货抢先看
【俺来也创始人&CEO】孙绍瑞(老孙)激情演讲《别仰望,世界向下看》

阿凡题CEO陈李江:通过共享经济重构在线教育


2016年01月19日,腾讯创业曾报道过的项目阿凡题已正式上线500多天,并在北京举办了首场媒体见面会。目前,阿凡题注册用户数突破2000万,用户平均每日使用时间为15分钟,入驻老师高达数万名。经过500多天的发展,阿凡题已成功搭建“全国最大的老师真人在线答疑平台”。

“被教育者的感受与需求很多时候都被忽略了。”阿凡题创始人兼CEO陈李江表示,“作为曾经的高材生与成长中的产品经理,当我们反思在线教育的服务标准,我们认为在线教育不应该只是把‘书山题海’搬到线上。”

全国最大真人在线答疑平台 让学生不再带着问题睡觉

“根据阿凡题的调查数据显示,中国中小学生普遍睡眠不足7小时,近九成高中生为了写作业晚上11点还在熬夜。”阿凡题联合创始人兼COO王庆苑分享到,“阿凡题希望成为一款真正能帮到学生的,让他们发自内心喜欢的产品。”

2015年11月,阿凡题发布的《全国中小学生学习压力调查》显示,中国学生作业时长是全球均数的2倍,68.9%的学生认为难题是耽误写作业进程的主要原因。当面对难题,接近70%的学生认为找老师是最好的解决方式,然而实际上只有10%的问题通过老师解决了。

针对2亿中小学生无法快速找到老师解决作业难题的现状,阿凡题在2015年秋天率先推出真人老师在线答疑服务——“即时辅导”产品,“30秒找到老师,5分钟辅导一个难题”的极速服务让遇到难题的孩子能够得到快速解惑。至此,阿凡题三层答疑服务标准初现:

拍照搜题,业内首创“机器解题+人工答疑”的双重答疑模式,率先实现一分钟有问必答,成就了业内唯一100%解答率的在线答疑产品;

真人答疑,借助上万名老师真人连续答疑服务,形成师生追问追答强互动关系,阿凡题独有的师生互粉关系已发掘出粉丝破万的“明星老师”;

即时辅导,针对学生遇到的难题,老师通过类似课堂直播的方式进行一对一辅导,实现个性化无死角答疑。

现在,阿凡题拥有数万名真人老师,已成为“全国最大的老师真人在线答疑平台”,让中小学生不再带着问题睡觉。

在线教育“黑科技”:未来的智能家教机器人

2015年5月上线的阿凡题-X是全球首个既支持印刷体数理化,也支持手写体公式和运算题识别的产品,阿凡题-X不仅能够在1秒内完成加减乘除的基本运算、解一元一次方程、一元二次方程和二元一次方程组,还能给出运算过程。这是全球范围内首次取得手写体识别、人工智能的双重突破,目前,阿凡题-X的核心技术已申请国际专利。

值得关注的是,作为人工智能的“眼睛”,为了实现对手写体的精准判断,阿凡题-X在开发过程中就开创了行业先河,首次成功收集了128万个真实字符手写样本,然后通过光学字符识别、去噪、字符切割等过程,成功实现了计算器和手写体公式间的互动。得益于神经网络模型与深度学习技术的结合,阿凡题-X能够在1秒内完成运算并给出解析过程,成功突破了题库的瓶颈,让答疑获得了无限可能。

这意味着,随着用户不断的参与互动,阿凡题-X将会越来越“聪明”,未来不仅可以应对任何一道题目,甚至能够成为帮助学生答疑解惑、协助老师传道授业的“智能家教机器人”。

不仅如此,阿凡题还将与刚收购“有妖气”的中国最具实力动漫文化产业集团公司奥飞建立战略合作伙伴关系,共同发展儿童教育内容合作。

用滴滴“打”老师模式重构中小学生在线教育

中小学生学习的过程是老师在教学中教授知识,学生通过作业反馈掌握程度,从而形成循环逐步深入。在实际反馈环节中,学生在作业中遇到难题时,很多时候无法获得解答。阿凡题通过调研发现,所有家长都希望能给孩子一对一的教育服务,学生也希望获得一个懂自己、能够在自己有问题的时候及时出现的老师。

学生面对难题时的“痛”,是阿凡题深耕在线答疑的原因。老师则是解决问题的关键。这个需求可以类比出行的需求,每个人都希望能够获得舒适的出行体验,所以当滴滴出现的时候,出行的需求就被更好的满足了。面对答疑这个高频刚需,阿凡题希望通过多维度的便捷服务满足学生不同的需求:

1.学生可以独立理解的疑问和对知识点的回顾、举一反三通过拍照搜题和人工智能就能够解决;

2.学生不能独立理解的疑问由真人答疑来解决,通过提问和追问追答在与老师的互动中将难点逐个击破,并在答疑解惑中建立更强的师生关系;

3.即时辅导专门解决个性化的重大难点疑点,每个学生对知识掌握程度的不同决定了难点疑点的千人千面,这样的情况下关键知识点由懂自己的老师来讲解将获得事半功倍的效果。

正因在阿凡题中学生与老师的滴滴式呼叫应答关系,率先推出真人老师“即时辅导”服务的阿凡题获得了“滴滴‘打’老师”这个特别称号。每个学生在碰到难题时,可以像打车一样,一键呼叫老师求助。

“阿凡题的模式借鉴了共享经济理念,”陈李江分享到,“我们希望通过共享中国最好的教育资源,让每个孩子都有成为高材生的可能。”

未来,阿凡题将成为全国最大的在线学校。通过阿凡题,全国2亿中小学生将与1,300多万老师无缝连接,无论先进与落后,中国每个地区的孩子都将能找到适合自己的老师,享受中国最好的教育资源,获得丰富的学习机会,拥有站在同等的起跑线上成为高材生的无限可能。

文章来源:腾讯创业