How to Learn Python for Frank Hu?

iDoulist 演示

Outline

  • 简述
  • 背景
  • 产品
  • 开发历程
  • 感想

简述

组队过程

时光倒回到一个月前的4月28日……

当然,若再向前追溯,可以退回4月25日,Frank童鞋在邮件列表率先发话,开始了长达数天的邮件列表、拉群安利,并逐渐清晰了自己项目的轮廓。

[原型Figure]

一个月之后,他和他的小伙伴们的成果是:

[产品视频]

  • 为什么要做这个项目?

  • 中间发生了什么?

  • 我们分别学到了什么?

背景

抽象的

这是一个技术和知识加速膨胀的时代,每个人的知识体系都需要不断做必要的扩充,才能与之相适应。

不过,由于信息输入速度已经远远超出我们所能接收的速度----信息过载常常让我们感到应接不暇,无所适从。

那么, 这样的情况下,我们不得不面对一个以往可能并不存在的问题: 如何从汪洋之中抓住最有用的信息?

寻找信息汪洋之中的灯塔

在开智群不断开光之下, 我们逐渐发现一个朴素的答案: 信任"人".

茫茫书海之中, 寻找那些我们信任的人推荐的资源, 是提高输入信噪比的一条航线.

而豆瓣, 豆列, 则是航行途中指点方向的灯塔, 拥有更高的信噪比.

[豆列实例图1-2]

(niubility 通过大牛来作为索引, iDoulist 借助豆列, 更多给出的是基于专题的学习模式)

但是, 当我们想高效利用豆列功能时, 发现了诸多不尽人意之处..

具体的

[尴尬图1-2]

我们观察到在豆瓣进行图书豆列管理时的一些问题:

  • 不能实现在指定豆列中找书,当豆列很长(如开智书单)时尤其麻烦

  • 无法比较几个豆列是否重叠

  • 无法导出豆列(及书籍信息)到文件永久保存

我们认为这些问题都可以通过人工重复劳动来解决,但这毕竟繁琐而且耗时,不是长久之计,简直是对开智群友时间的巨大浪费!

我们知道, 程序最大的优点,就是可以无限耐心地进行重复性劳动。

为了帮助大家更便捷地利用豆列资源访问书籍信息, 减少重复劳动,于是,就有了 iDoulist

产品

功能1: 寻找主题----输出豆列标签云 [暗号豆列]

功能2: 不同资源的评估与对比整理---- [合并书单精选] [书单我没看过哪些?]

功能n: fork 到豆瓣
有了输入当然好, 但最好还有输出? 这样小伙伴们才方便互相比较学习路径呀 [实例] ....

具体功能简短演示?

开发历程

[脑图]

信息流: 豆瓣输入-列表/处理-输出(命令行,文件,豆列,标签云)

技术困难: 除了常识, 没有其它资源了
不确定情况下的学习, 你甚至不知道应该学什么

我们如何解决这个问题:
敏捷开发实践-开发时序图

  • 构建基本功能
  • 不断更新添加功能

应用的主要模块 python: urllib/re/tk PyAutoGUI word_cloud

敏捷开发实践

弯路

  • 没有 MVP 根本无法开发, 迅速写 MVP
  • 沟通: 面基信息量才最大
  • 技术门槛: 自信与耐心(MVP first-至少总有产品可以交付/最坏选择保底)

否定: 用户的交互需求, 本地开发的优缺点

  • 调试测试飞快, 开发门槛低
  • 但最终产品使用难度大, 使用门槛高

(缘起

  • 为了输出豆列, 但无 api, 故选择此策略
  • 也有项目规模考量. 目前 2000 行)

小结

  • 为什么要用我们: 针对一个具体需求----以对人的信任为基础, 围绕整理好的豆列(高信噪比资源索引)的主题学习

  • 为什么要投我们:

    这里祭出阿北在2010年发的一个帖子。
    http://blog.douban.com/douban/2010/02/03/805/

    可以看到,很多用户在当时已经渴望的需求,至今也没有被满足过。。豆瓣的工程师大概也不打算满足了。所以——

  • 一起加入: 测试/运行框架已经有了, 还有什么具体需求, 只需要 fork and develop :)

    • 计划中的开发内容

      • 导入豆列时同时读取书名,或通过书籍链接进一步抓取其它信息。
        • i:豆列链接或者书籍链接列表
        • o: 书名(或者还包括作者等)列表
      • 其他

沟通渠道

  • 微信群:更新进展,小型讨论
  • GitHub:
    • readme(项目功能及用法说明)
    • 仓库更新代码及教程,wiki(每日三句话,了解彼此进展)
    • issue(认领功能,提问回答)
  • 面对面
    • 腿长自己演示完了,"逼着"小伙伴们写代码

感想

本组成员均为Python小白,自不必说。

不过,除Frank学过C语言之外,其他三位都是彻底脱离了编程背景的纯粹文科生。。。

似乎注定了开发产品的重任落在了提出创意,且在课程前两个阶段就比较活跃的Frank同学肩上。。。

其间脆鸡同学在28日办事路过祖国思潮源头,造访小伙伴Frank和少林,三人在燕南美食小聚,Frank给我们大致讲了他的想法,于是少林、脆鸡,以及原本打算加入Disposal项目的乎乎同学一起,加入了iDoulist战队,一起拖后腿。

学习的途径

其实学好和好学都很重要,但好学以后会越来越重要。死记硬背功夫一流的纯文科生,填鸭时代尚可蒙混过关,但放到一个野生的、需要自己探索需求、自己寻找答案的场景,便容易乱了方寸。编程让我们知道,如何做中学,怎么变被动接受为主动找到答案。

态度与专注

态度问题

和腿长相比,三位小伙伴显得不够主动,缺乏回馈,更谈不上主人翁精神(ownership),把项目真正当作自己的事儿,而不单单是一份作业。当你把这些事儿当成自己个儿的事儿的时候,你学习进步的速度是最快的。
从大妈的第一封信开始,包括Frank在内的主人翁精神腿长们,会在理解的基础上,将所有要点记在心上,在实践中不断回溯这些要点,不断发现暗示,不断获得新的启示。

二八定律和专注

所谓智慧是相通的,编程也可以运用咨询行业所提出的二八定律,即,正确的姿势,应该是尝试用最小的努力,实现最基本的需求。剩下那些需要我们花80%的时间开发的所谓“天才级”内容,很可能是边际(marginal)的。

确定要做什么,专注地去做,总会有收获。负基础学员开始的时候比所有人都痛苦,但总有些事情是你根据常识就可以做到的,即便无法做成有模有样的物件,攒下一些岩钉,课程结束后别放弃,找些感兴趣的项目fork和改进,花更多的时间,终将看到实际的效果。

所以,Frank运用了二八定律和专注里,可以很快开发出MVP,赢得小伙伴;而脆鸡同学的功能仅限于安利本身。。

开放的心态

心态比动手的方法以及学习态度还重要。敢于突破思维的局限,用常识换一个角度看课程、作业、自己的需求,才能有合适的姿势切入到课程里来。

对于已经工作的人来说,更要用开放的心态对待学习,毕竟对于一个全职的人而言,集中学习的机会弥足珍贵。

不要在意别人怎么看自己,当然也别太在意自己是怎么看别人的,打破思维的疆界放手去做该做的事。

未来计划

药不能停。自宫之后才能练神功,所以要忘记自宫的痛,先把大腿纷纷加为好友,四个组的代码fork过来慢慢改造。即便你在这次课程里没有学好,那些学好的学员所做的一切,就是你接下来要做的。


BGM

http://www.xiami.com/song/1772403794

Clean Bandit(清洁的盗贼)是一支英国电子乐队,成立于2009年。他们的风格,混合了电子音乐和古典音乐。

他们一般是,自己创作音乐,然后邀请其他艺人来演唱(所以是一支没有主唱的开源乐队?。。。)

Clean Bandit作品没有矫揉造作的歌词,更多的是满满的正能量。

古典乐器融合电音,创新之余又够品味。

Rather Be,喜欢这首作品不单纯是因为那段能轻松攻陷你大脑的旋律,更是因为某种难以言传的共鸣感。

比如第一句歌词(We're a thousand miles from comfort)即告诉我们,想成长,就要远离舒适区……