layout: post author: zoomq title: G说公论:10 从教女友写代码中学到的 description: ~ 时评杂文,新旧不拘 categories: gdGTime tags: gdg G说公论 gt wechat coding
来自: 伯乐在线
从教女友写代码中学到的,教人写代码在一定程度上是硬件问题
从今年四月一直到七月,我在教我女友写代码. 我最大的收获是认识到了教人写代码在一定程度上是个硬件问题. 虽然 codecademy,可汗学院,Scratch和其他机构为了教学优化了代码编辑器,但代码编辑器总是卡在它们的软件外壳上. 我建议,除了提供优秀的软件和教学材料之外,我们还需要给新手辅助以出色的硬件. 让我来解释一下.
背景
我在卡内基梅隆学的计算机科学. 在那里我还讲过几次计算机课. 我的代码技术最多算是中等吧,但是足以在诸如Quora这样的公司做一名产品设计师.
一年多以前,我在日本遇到的我的女朋友. 她在那度过了她的大部分时光. 她在东京的一所女子学院学市场营销和日本文化. 我们相遇的日子里,她在同样位于东京的一家做支付的初创公司做销售助理.
但是她一直想要当某方面的设计师. 因为她对软件有很大的热情,并且对可用性有一定的见解,所以我的职场建议是她可以当一名软件产品设计师.
日本的技术社区只是最近才开始重视设计和用户体验,这个比起西方同类社区要落后几年. 在日本,产品设计师的供应量还是比较低的,所以我建议女友可以试一下,尽管她没有受过正式的设计方面的教育.
被说服之后,她在四月辞掉了工作,来到旧金山湾区看我. 我们在一起住了三个月. 在我的业余时间,我教她一些成为产品设计师的基本知识. 她很努力在学,并希望能在回东京的时候能找到一份产品设计的工作.
教女友写代码
我相信所有软件产品设计师都需要写代码. 至于原因,请看[网页设计师应该自己写HTML和CSS]和[学习Rails让我成为更好的设计师],都是37signals出的.
可能你已经猜到了,我的女朋友从来没有写过代码. 我认为这是培训里最大的路障,甚至比学photoshop或者其他设计技能更难. 所以我们决定先集中力量在写代码上.
我们刚开始学的是HTML/CSS,然后转到Jekyll/SCSS上. 她从零学起,到掌握了怎样设计一个博客主题( 源码 )和展示她的模特照片的画廊( 源码 ),都是用Jekyll/SCSS写的.
因为她的英语只是初级水平,所以她的学习资源就很有限,包括在线资源和印刷书籍. 我对任何用日文写的初学者用的HTML/CSS的书籍或教程没有什么好感,所以我专门为她制作了一本我自己的教材(截屏如下)
我有打算哪天把我的书翻译成英文并出版,但是目前,我想说让我最惊讶的是:对女朋友帮助最大的不是教程的质量,而是她完成教程练习所使用的硬件.
硬件问题一:显示器
女朋友学完基本知识后,我让她用HTML/CSS去复制或者模仿我给她精选的设计良好的网站. 她的复制品必须看起来和原始的网站一样,并且HTML也要符合语法.
学习写代码的理想方法就是做一个真正的项目. 因为她没有想要做的网站,那么复制包括Medium和Svbtle那样的设计良好的网站是最佳之选.
起初她用的是我的老古董23吋显示器,还有她自己的Macbook Air的显示器,但是很快她就用光屏幕空间了. 她明显需要同时开启下面五个窗口:
-
Chrome窗口显示要复制的实际的网站. 见本文封面的右上角.
-
另一个Chrome窗口. 显示她当前复制的网站. 就是一个本地HTML页面. 见封面左上角.
-
Sublime Text 2窗口. 分割成HTML视图和CSS视图. 见封面左下角.
-
Evernote窗口. 记录她的笔记和代码片段. 见封面右下角.
-
Mac的GitHub窗口. 跟踪她做的修改. 我第一天就在她的工作流程里加入了GitHub,这样我就可以用pull来查看她的代码. 见封面的最左边.
每个窗口都需要大概1280×800的像素. 我最后只有租给她我的30吋家庭影院显示器. 它的2560×1600像素的分辨率足以平铺上面所说的4个窗口. 最后一个窗口就留在她的本本上. 她用 Moom 来管理窗口.
为何需要同时显示这么多窗口呢?因为新手喜欢能立刻看到代码修改带来的变化.
Brett Victor在他著名的大作 Learnable Programming 一书中建议"反应式创造"的教学技巧:
反应式创造的思考方式可以这么描述:做出点什么,然后调整,直到它正确为止.
这正好就是我女朋友在做的. 她 (1)观察目标页面, (2)写代码模仿出目标页面, (3)查看她做的是不是和目标页面看起来相似, (4)重复1~3步,直到她的页面和目标页面完全一样为止.
在第2步和第3步,CodeKit保持运行并不停刷新页面,这样修改的结果不需要按Commond+R就能立即可见. 她用Mac的GitHub来做回退. 每次迭代,她都会在Evernote上作笔记,避免同样的错误犯两次.
这就是五个窗口都要同时打开的原因--将各步骤之间切换的开销降至最低. 当所有的东西都可见时,她可以更快的做出反应.
我能听到你们这些高手在高呼:[这也太弱了吧. 她可以用 Commond+数字 或者 Commond+Tab 切换啊. ]但是大部分新手都讨厌tab键和窗口切换. 我们可以教他们这些技巧,但是他们很可能不会按部就班地执行这些快捷键,至少在刚开始不会. 新手不必硬要灌输这些不必要的意识.
我的女朋友很快无30吋显示器无编程了. 我的住所离市区的Palo Alto要骑一小会车,那里有许多带Wifi的咖啡店. 但是她宁愿待在家里,因为有大显示器用. 看来是惯坏了的学生. 不过她写代码确实比以前快了,而且最后她还掌握了Commond+数字键和Commond+Tab.
扪心自问,我们这些老手也喜欢大显示器:
前公司的一则趣闻. 我是一名留不住人的工程主管. 我们团队一名工程师离职去了一家更小更前卫的公司. 这是离职的谈话:
我:你为什么要离职? 他:因为他们有更大的显示器. 因此为什么不给新手也提供大显示器呢?他们是稳定且可视的回馈的最大受益者,他们和窗口管理的斗争也最激烈.
不管程序员变得如何反应迅速,他们始终无法克服屏幕可用面积的局限--平板电脑在智能手机时代还有市场也正是这样的原因.
硬件问题二:键盘
对于新手,他们的键盘--或者更一般地说打字--也可以是一个瓶颈,尽管不大.
问你自己:在代码编辑器之外,你经常会输入像<,>,{,},#这样的字符吗?或者按在Sublime Text里表示[在标签里包装选择]的ctrl+shift+w?不是很常用吧. 所以非程序员不熟悉那些键,敲起来很慢.
我会在女友写代码时坐在她身边. 每次她错过用快捷键的机会时,我就会提示她. 她会把快捷键写作便签上,贴在屏幕边来试着提醒自己. 但是一天天过去了,她还是会忘记用那些快捷键.
后来我发现她从来没学过哪个手指用来负责敲哪些键. 她那时就是感觉哪个手指自然就用哪个. 她可以盲打一些常用词,但比如当我让她输入"{"时,她得去看键盘. 她习惯日本键盘布局,但是也无济于事.
为了纠正她的习惯,她买了一个微软人体工程学键盘4000,这让她不用正确的手指输入变得很难. 她还每天学习Peter的在线打字课程. 在她完成了前十课时,她打字才像一个真正的程序员. 她现在很少误输键盘快捷键了.
顺便提一下,这里还有一个方法检查代码新手是否有打字问题:给他/她买一个不带字符的键盘. 如果这个让他/她的输入变慢了,就是有问题.
打字的不顺畅可能会成为新手成为高手的阻力. 因为随着他们写的代码越来越多,他们的沮丧和低效率会加剧. 这可能是我们这些经验丰富的老手想不到的,但是当我们谈论编程教学时要注意这个问题.
结论
对于我的女友来说这两个硬件--显示器和键盘--有巨大的影响. 他们也有可能影响大多数新手. 代码编辑器会变的更加高级,编程课程也会演进,但是它们永远不会走进硬件的领域.
就像Andy Hunt在他的杰出的<<程序员的思维修炼:开发认知潜能的九堂课 >>一书中表明的,代码菜鸟不仅仅是慢版和无知版的专家. 他们的思维是完全不同的. 一旦你成为哪怕高级一点的初学者,你就已经失去了像代码菜鸟那样思考的能力. 你可能会说[我想不出她为什么需要同时开启那么多窗口]. 但是如果你已经没有菜鸟的思维了,你当然没办法去[想出].
我的女友七月份回到日本. 她很快就在东京一家创业公司找到了一份初级设计师的工作. 但愿我们在硬件上的投资能够赚回来. 感谢阅读.
更新(8月19日):我承认这篇文章的主题,"写代码",和"编程"不是一回事. 编程需要控制逻辑,而写代码不用.
不过我的女友在用Jekyll/SCSS时也确实用到了控制逻辑. 她正在学习JavaScript,这是一个真正的编程语言. 回头合适的时候,我会分享教她编程时获得的经验.
是也乎
大妈的直觉反应是:
- KAO! 国外居然能找到愿意学习编程的 GF 忒不科学了!
- 说的特么对了! 对于码农而言,一天主要时间接触最多的就是: 键盘+屏幕+椅子!
- 所有的什么职业病,都是因为这几个家伙的不靠谱引发的!
- 为什么这么多程序猿爱死 Vim/Emacs ? 除了这俩神器的确难学,一但习得那逼格一下就爆表之外
- 就是因为
WYTIWYG
没有鼠标什么的扫累,输入速度真正能够跟上我们思维速度,只有神器以及靠谱的键盘了!!! - 而且,形成肌肉记忆后,如同乐手,对一个特定乐器越熟悉,一但换了另外一个尺寸哪怕差了不到一毫米的乐器,也是无法顺畅完成演奏
- 程序猿也是,对一个键盘形成肌肉反应后,眼晴就再也不用看键盘了,只要盯到屏幕,随想随写...毫无阻碍欢畅的感觉是能上瘾的!!!
作为大妈,俺用过一些相关硬件,推荐一下:
- 屏幕,能多大就多大,但是,一般从主机只能带一个外显,这时,就需要配置兼容displaylink驱动的USB 显卡,变成一机三屏了!
- 键盘,绝对是 RMS 都在使用的 HHKB 最好!但是,原先的低端型号
HHKB Lite
停产了,,,现在可替代的只有FILCO MINILA
机械键盘可以下手了,不到1000元,5000万击键寿命的专业键盘! 对于码农而言青轴
最合理! - 椅子,人体工程椅,事关我们自个儿的腰/颈/背 ,少于1000的就别下手了, 提示一下:观察
谢耳朵
使用的是什么椅子,然后淘国内的高仿吧! 不过,实在没有米, 定期起身走动一下,也可破!
当期活动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
珠海GDG[11.23]珠三角技术沙龙HOA.5
和久违的珠三角技术沙龙的小伙伴,共同来GDG 分享!
内容(可能):
- Jeff小乐队 PyCon2013China 开场曲目内部练习
- iFanr 编辑一斌 有关跨界成长的体验
- 北理工学生有关 TI SensorTag 试玩体验
- Leo ~ 文学化编程再再再谈
- AngularJS 现教现用
- Web的未来-新语言和新技术
- GLASS生态...
其它征集中...
筹备活动 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PyCon2013CHina 珠海场
- Python 年度大会
- Pythonner 大趴
- Pythonista 相亲集会
- Pythonic 体验交流
请及时举报你身边的 华蠎行者! 举报热线: zoomquiet+pycon (AT) gmail.com
以上...
码不停提马上无虫 ;-)
|_|0|_| |_|_|0| |0|0|0|
加入 珠海GDG
- 注册 G+
- 关注 GDG Zhuhai
- 成为 GDG Zhuha开发者
通过 珠海GDG 可以:
第一时间获知谷歌最新的技术, 可以学到如何去谷歌平台上赚钱的思路和方法, 可以认识很多有可能将来一起走上自己创业道路的人, 可以学会把你的创新带向国际市场, 参加那里的活动有经常和国际上的开发者们进行交流的机会...
PS:
若无意外,题图都是从原文提取或是通过 Google 图片搜索出来的, 版权属左, 不负责任 ;-)
PPS:
珠海GDG wechat/Blog 都是欢迎投稿的,只要追认内容吻合以下条件:
0. 有趣 ~ 至少是自个儿有兴趣的领域吧... 1. 有料 ~ 至少有点儿原创的东西吧.. 2. 有种 ~ 至少不能是成功学吧!
有好物的,及时向大妈们吼: [email protected]
微信栏目
当前应该是:
G术图书 (gb:推荐好书,书无中外) D码点评 (dd:麻辣评点,善意满盈) G说公论 (gt:时评杂文,新旧不拘) 珠的自白(dm:大妈自述,每周一篇) 海选文章(hd:得要相信,大妈法眼)
总之! 珠海的组委大妈们,决定开始坚持发文,方方面面细细同大家分享/交流
总之! 请大家告诉大家, 珠海生活中的技术社区
已经认真回归 微信,都来订阅吧!
订阅方法
- 搜索微信号
GDG-ZhuHai
- 或查找公众号:
GDG珠海
- 或扫描:
GDG珠海 社区资源:
- 邮件列表: [email protected] (可发空邮件到 [email protected] 即完成订阅)
- 微博: @GDG珠海
- 微信: GDG珠海
- G+ 主页: GDG ZhuHai
- G+ 社群: ZhuHai GDG
Author: /mail / gittip / github