怼周刊_v0

~ 试刊号

dd-170408

进度

任务

[init.]会议记要+S01E01 任务

困难:

  • 对当前圈内部沟通渠道和公共资源, 并不是所有人都理解并习惯使用
  • 甚至于期间形成发布的各种文案/录音/维基/邮件/… 并不是全体都知道/看过/理解/执行/…
  • 所以:
    • 慢慢来, 比较快
    • 大家已经开始注意到 ,相关守则/技巧/规约, 是一定要自己去动手折腾的

推荐阅读:

进展

  • 作业: S01E01
  • 提交: 20 人, 不到 23
  • 引发的作品:
  • 状态:
    • Commits (~ 17.4.8 15:21, 共 21 人)次数排名:
      • NBR-hugh -> 15
      • xpgeng -> 10
      • Zxlon -> 9
      • zhangshiyinrunwithcc -> 9
      • bambooom -> 9
    • Comments (含 Issue 创建/回复, 以及代码点评 ~ 17.4.8 13:50, 共 17 人)次数排名:
      • ZoomQuiet -> 49
      • zhangshiyinrunwithcc -> 14
      • EattheSun -> 9
      • xpgeng -> 7
      • zoejane -> 5

成果

学习社群如何对待微信群

缘起

自怼圈首次 zoom 会议决定以 Github 和邮件作为日常沟通的主场, 不用微信群来做日常沟通. 放弃微信的主要原因: 干扰心流/消息丢失/交流功能受阻.

现象

怼友们直觉上仍然非常依赖微信群. 有怼友就立刻拉了群.

为此, 大妈发布 [Ask] 为毛不用微信群? · Issue #4 · DebugUself/du4proto, 提出以下问题:

  • 为什么我们如此依赖微信群?
  • 微信群在 自怼圈 这一长达 54 周的自学组织内部不应该使用?
    • 在这一场景中, 微信群有什么问题?
    • 这些问题,如果一定要在微信群中弥补的话,应该怎么作?
    • 对应其它沟通渠道天然的行为,这些问题存在嘛?

分析

大家在 issue 中展开了充分的讨论. 回复的重点多为微信在自学场景下存在的问题.

  • 为什么我们如此依赖微信群?
    • 习惯使然. 微信本身非常方便/快捷/及时, 已成为国人沟通的首选工具.
    • 当然, 习惯的并不一定是合适的, 特别是在自学场景下. 你以前可能习惯用 word 来书写, 这不代表它适合用来写代码.
  • 微信群在自学组织内部是否应该使用?
    • 经过认真分析, 大部分怼友倾向于不使用. 有几位怼友提出说可以保留微信群用于联络感情. 但是, 微信群里有真感情吗?
  • 在自学社群这一场景中, 微信群有什么问题?
    • 自怼圈作为一个自学组织, 首要的目的是促进大家的学习和思考. 而学习讲究系统/积累/专注/回顾, 微信”不是为学习,思考而生的” (大猫).
    • 我们需要高质量的异步讨论, 而不是碎片化的同步讨论. 微信上无法展开良好的异步讨论. 在这里:
      • “思考不能沉淀,信息不能萃取,讨论不能连续”(MagicCheng)
      • “容易碎片化发言, 不能在想清楚并组织好语言再发出自己的意见”(bambooom)
      • 甚至, 它可能”提供伸手党思维温床,阻碍心智升级” (fatfox2016)
    • 自学需要专注, 而微信是专注的敌人. 各种群消息/公众号都会干扰你的注意力.
    • 为什么你不该用微信进行主题讨论? 提到三个原因:
      • 同步 vs 异步: 异步讨论更持续/深入/充分, 更容易达成共识
      • 公开/正式的形式: 更容易促成理性/认真的回应
      • 数据可靠性
      • 更完整的论述参见 为什么不应该使用QQ进行技术交流
  • 这些问题,如果一定要在微信群中弥补的话,应该怎么做?
    • 需要群友的自觉/自律. livingworld 指出, 需要”定目标,定主题,定规矩,严格限制其使用功能及使用范围”.
  • 对应其它沟通渠道天然的行为,这些问题存在嘛?
    • 即时通信类的沟通方式,都会存在类似问题. (gzMichael)
    • 但异步沟通工具, 如 “github, maillist 仪式感比较强,有氛围,感觉不存在上面所说的问题,容易形成一个知识积累系统,从而形成学习与积累的良性循环” (大猫)
  • 怎么看待开智社群在微信群里写出”追时间的人”一书呢?
    • 其实, “追时间的人”一周成书的所有秘密 里面提到了以下真相:
    • 准入门槛: 所有加入者必须出过至少一本书,拥有博士学位,或者是自己所处领域的一流专家
    • 这类分享并非每日常态, 而是每周一次
    • 成书还需要大量整理工作. 作者和志愿者们在 Gitlab 上远程协作, 在一周内”从组稿,编辑到出版汇总,大家加班加点完成了出版所需的繁重工作. 当时所有志愿者都非常辛苦,每天工作到深夜一两点钟,在赶时间交稿的最后两个晚上,有的志愿者只睡了一两个小时. “

最关键的是, 大妈指出:

  • 分享者分享的东西, 从来不是在微信群中积累/学习/研究出来的
  • 微信群只是个免费的, 基本可用的实时分享渠道而已. 其中沟通的好东西, 从来不是在微信群中诞生的

解决

故事

~ 收集各自无法雷同的怼圈真人故事…

沟通需要代价

案情回顾:

为了第一时间, 引导大家在正确高效无污染的环境中开怼, 创建了对应的开源工程环境, 但是, 需要对应的怼员基本信息, 虽然以往 OM103py 中相关信息都已经有了, 可是无法简单和小密圈的信息对应上, 大家习惯性的在所有互联网平台中, 分别使用不同的 ID 俺尝试, 只能猜出 3 成, 谁是谁, 于是, 简单的设计了 金数据在线表单, 通过 小密圈 发布出来, 以为可以简洁的收集到;

的确, 图样图森破了:

  • 第一个 24 小时, 大家的传播, 令不在小密圈的人也有填报
  • 第二个 24 小时, 发现后,及时关闭表单,追加字段, 以及填写口令, 并进行短信/小圈/邮件 的说明,提醒, 当然的, 无法全员知道, 依然有4名怼员,没有进入
  • 第三个 24 小时, 通过 竹子事件的发生, 大家意识到有坑, 主动用私信, 以及其它方式再次填报了表单,数据量达到 39 条, 依然没有简单的一一对应到现有成员

所以, 得复个盘:

  • 17.4.2 准备正式开怼,所以, 4.1 准备好了所有游乐场:
  • GitHub 组织+仓库
  • 和仓库关联的 googlegroups
  • gh-pages 发布的 blog
  • 问题来了, 怎么能获得所有加入小密圈的大家的关键身份信息?
    • 姓名/Nickname
    • 邮箱
    • GitHub ID

当然的, 使用大家已经习惯的信息收集表单:

  • 创建好
  • 发布->小密圈
  • 此时隐患已经填下:
    • 为确保唯一, 设定了 GitHub ID 必须唯一
    • 为以免有人首次填写有错乱: 打开了提醒用户注册 金数据 后,可修订自己的填报
  • 悲剧在:
    • 金数据表单的提交,并不生成每个人填写的唯一链接, 以便回来修订
    • 即使注册登录, 也没有任何凭证可以同注册前的填报行为关联, 从而修订历史数据
  • 于是, 大家在意识到自己的填报有问题时:
    • 有的尝试修改 GitHub ID 链接的非重要信息来达到多次提交的目的
    • 有的通过小密圈, 直接向 大妈 消息说明要修订的信息
    • 有的只是反复在所有渠道哀嚎,无法修订表单数据
    • 还有的…
  • 发觉这一失控后果, 大妈 及时提醒 诱发焦虑的 竹子 来思考3种解决方案
    • 当然, 最后了了了…
    • 其实: 从目标出发自然就能推导出解决
    • 目标: 大家快速进入资源 <- 获得关键信息 <- 已经付费进入小密圈的
    • 偏差: 有怼友反应慢, 在表单关闭前,没有完成填报, 或是想悔改邮箱为 gmail
    • 隐需: 进行各种资源配置时, 大妈/教练 的工作量越少越好
  • 综上:
    • 列表邮件说明情况, 并附上所有必要信息
    • 私人邮件说明情况, 并附上所有必要信息
    • 创建 Issue 说明情况, 并附上所有必要信息
  • 以及此处的必要信息是什么?
  • 当前状态, 小密圈/列表/仓库 ?
  • 你的其它关键身份信息:
    • 手机
    • 邮箱
    • 姓名
  • 当然的,和表单一致即可 <– 别说不知道表单字段哪…

沟通的代价应该谁承担?

–> 此事件对我们组织行为引发的思考和阶段结论是什么?

请大家试答…

  • zoe:表单收集思考
    • 可否付费和填表一气呵成?
      • 以免付费了没填表,填表了未付费.
      • 比如:付费成功后,立马展示表单填写链接,引导填表. 当时小密圈的第一条信息并不是填表链接,后来大家也没时刻看这里.
    • 如何处理意外?
      • 比如因网络原因,填表填一半没提交成,可否自助获取表单链接(比如输入订单号等. 小密圈这个就是在小密圈里看. )
      • 表单错误可否自助修改(金数据表单提交后,当时注册或登录,可以看到和修改自己提交的表单. 但是填表完当时没注册,好像以后就补不了)
      • 特殊情况人工相应(设置一个反馈渠道?比如邮箱/工单方式,可以按一定模版引导反馈的形式

一个由暴力 Merge 引发的被异地与被变性 惨案

涉案人物

  • 暴力嫌疑人: xpgeng, 男, 一个有 local 女朋友的直男
  • 盲人狙击手: zoomquiet, 一个被叫做作大妈的男人
  • 懵逼被害人: zhangshyinrunwithcc(怼圈最长 ID 持有人), 女, 一个有异地男朋友的女子
  • 笑哭的围观群众: zoe 等一甘人

开怼->WANTED!!!

案发起因

xpgeng 做了什么?

  • 作为怼圈第一次提交当日小结, 在爱心妈咪 zoe 的带领下, 怼友稀稀拉拉的…开始提交自己的总结. 第一天总结, 怎能上来就缺席?
  • 写, 写好了, push! 在 push 之前他还想: 大家第一天交总结不怎么积极嘛, 估计也不用 pull 就可以推上去了, 省时省力, 好机智.
  • 滴滴滴! 提示 repo 滞后了… 看来这是有人已经动过 master repo 了呐, 哎, 太年轻. Pull 之!
  • 哐哐哐! Conflict?! 就写个总结也能有 conlict? 能有啥 conflict 啊? 遥想以前在隔壁仓库协作更新 wiki 的时候, 也遇到过这种情况, 基本上这种 conflict, 正常 commit 下, 直接 push 就好. 大家的文字肯定是不会丢的. 遂, commit, push, Done! 检查一下, 不错.

zhangshiyinrunwithcc 做了什么?

  • 一直认真积极的诗颖同学就在 xpgeng 还在写总结的时候, 咔咔咔完成了 push. 正在开心自己提交的时候, 浏览 repo 内其他怼友的小结是, 她发现文件名搞错了. 在 README 中, 要求的文件格式为

    du_s01e01_[github id].md 例如,大妈的作业文件名就应该是: du_s01e01_zoomquiet.md

  • 然后特(shi)别(er)实(bu)在(jian)的诗颖同学的文件名是: du_s01e01_[zhangshiyinrunwithcc].md

  • 纳尼? 改! 于是紧接着有了这样一次 commit

    Rename du_s01e01_[zhangshiyinrunwithcc].md to du_s01e01_zhangshiyinru...

案发经过

盲人狙击手 zoomquiet 登场

在诗颖童鞋的总结里有这样一条

对异地恋的疑虑,让我花费 1 小时疏导心情

热心大妈就来了…

ZoomQuiet:

@xpgeng 矜持….太过私人的不用特意公开的, 要知道, 这仓库,随时可以 fork 给你女友的… 可以用自己定义的专有名词来替代, 公开自怼的技巧就是通过抽象的模型来讨论.

不对, 大妈在诗颖的总结里 @xpgeng 这是什么鬼?

xpgeng:

@ZoomQuiet 大妈, 你@我干啥? 这是 @zhangshiyinrunwithcc 同学的. 我知道问题出在哪了, merge 没整好… 怪我!

尽管 xpgeng 第一时间意识到了问题, 可是血案已经发生:

-> xpgeng 被异地  
-> 诗颖被变性...  

盲人狙击手既然已经开枪, 想必是收不回来了.

ZoomQuiet :

@xpgeng @zoejane @zhangshiyinrunwithcc 请允许俺笑4分钟的….
太多事儿, 不在协同中怼到, 永远不知道什么行为会引发什么后果的,
所以, 大家的行为想越来越有效率/规范/专业…
多尝试/折腾/犯傻/…

嘦及时知道, 并改正,而且恨恨记住, 再有人嗯哼, 就怼!

此枪案现场可见 commit b17d36

如果你以为这就完事了, 那就太小看盲人狙击手了… 他除了怼翻嫌疑人, 还来了甩狙, 又….补了被害人一枪!

ZoomQuiet commented on 4fe6f2a

@xpgeng 好心的修订了文件名,结果引发了一系列误解, 问题源头的 @zhangshiyinrunwithcc 知道自己哪儿错了?

其实就是模板语言的不理解而已
什么是模板语言?
文件命名格式:

du_s01e01_[github id].md

例如,俺的作业文件名就应该是: du_s01e01_zoomquiet.md

以上两句是前后关联的, 以及前述文本格式就是… 还有什么模板语言,都有什么通用约定? 请试答…

苍天可见, 明明是诗颖自己 rename 的啊, 关 xpgeng 什么事? 一个嫌疑人怎么会有那么好心! 他没把别人的总结整丢就已经很不错了呐!

xpgeng

@ZoomQuiet 大妈, 我先声明, 文件名是她自己改的, 问题真的是在我. 应该是 pull 过程中出现 conflict, 然后我暴力 merge, 所以引起后续误会. 大妈你还是 怼我 好了…

枪案现场见 commit 4fe6f2

直至第二天早上, 被害人还一脸懵逼的质问

  • zhangshiyinrunwithcc: 你 merge 和我修改文件名有啥关系?!
  • xpgeng: 具体原因呢是: ……….. BLABLA ……. 就是这么情况.

用图说话

+--------+
| master +----------------+------------+--->--->---+------+---------->
+--------+                ^            |   ×       v      +
                       push            | push    pull     push
                          |            |   |       |      |
+--------+  modifying     |            |   |       +      |
| xpgeng +--------------------->-------x---+--> conflict! +-->merge!+
+--------+                |            |         ?#$%!    |         |
+-----------------------+ |            |            commit|         |
| zhangshiyinrunwithcc  +-+-->rename+-++       +----------+-----+   |
+-----------------------+             ^        |                |   |
                                 WTF? templet  |   xpgeng's     |   |
                                      |        |                +<--+
 +------------+                       |        +----------------+
 | zoomquiet  |                       |        |   shiying's    |
 +------------+-----------comment-----+--------+                | 
                                               +----------------+
                                                  VV
                                                  ||
                                        shiying's = xpgeng's <-- 被 异 地  
                                          shiying = xpgeng   <-- 被 变 性

总结陈词

虽然在嫌疑犯 xpgeng 的不懈努力下, 案件已经的得到解决, 被害人也已经从懵逼中清醒过来, 可是…

盲人狙击手还并没有放过被害人, 被害人成功出发了隐藏任务: 什么模板语言,都有什么通用约定?

作为怼圈最长 ID 持有人 ~ shiying 是不会放过这次回怼的机会的. 她经过 6轮搜索,对本问题进行了回答.

可是, 想怼大妈哪那么容易…

是也乎,( ̄▽ ̄) 还是少挖一层哪…
模板系统的动力来源是什么? 模式匹配哪 为什么要写成模式条目?

因为想一句话说明白一堆条件哪 可是, 在大家不明白, 没有经过类似训练时
你的研究, 应该形成一个什么 可用 的成果输出? 有益怼友们?

@zhangshiyinrunwithcc @zhangshiyinrunwithcc @zhangshiyinrunwithcc

看到请回答!看到请回答!

嫌疑人的反思

虽然大家在之前已经有了 GitHub 的各种操作体验, 可多数还是属于单打独斗的折腾, 所以对于 Git 的使用也基本局限在很简单的一些命令.

那么未来怼圈内会逐步开始涉及协同作业, 简单的 push commit 显然已经不够用了. 未来我们面对的可就不是本次惨案所遇到的这么简单的情况. 那么, 在协同作业中, 我们都需要掌握哪些必要的处理技能呢? 除了自己学会更深入的 Git 操作, 我们是不是该有一些协同上的约定呢?

比如:

  • Commit 信息如何书写?
  • Conflict 如何 fix? 正确的处理流程是什么?
  • 分支该怎么使用?
  • 如何合并到 Master?
  • 更高级的协作还有什么?

要不我们一起讨论讨论, 分享分享, 总结总结, 整理整理, 发布发布?

References

后记

~ 怼周刊是什么以及为什么和能怎么…

大妈曰过: 参差多态 才是生机 问题在 参差 的行为是无法形成团队的

Coming together is a beginning; 
Keeping together is progress; 
Working together is success!

<— Henry Ford

  • 所以, 有了 大妈 随见随怼的持续嗯哼…
  • 但是, 想象一年后, 回想几十周前自己作的那些 图样图森破
  • 却没现成的资料来出示给后进来嗯哼?
  • 不科学, 值得记录的, 就应当有个形式固定下来
  • 所以,有了这个 怼周刊 (Weekly 4 DU)

编辑设想

  • 试刊号由大妈和3位义务教练联合出品
  • 计划:
    • 每周六 20:20 发行
    • pdf 格式小密圈分享
    • 如遇不可抗力的阻碍,将跳过,下周继续
  • 共怼 -> 这是给我们自己看的, 当然的自己动手才更加快乐 -> 投稿渠道:
    • 仓库 _draft 目录,发布文稿:
      • 文件名格式 DU[总周数]_[github id]_[内容简述 英文,小写单词,用-连接].md
        • 比如: DU3w_zoomquiet_how-2-make-me-coding.md
      • 然后在 Issues · DebugUself/du4proto
      • 创建[Weekly] 前缀的 Issue 来通告
      • 一定要包含文稿的 仓库链接
      • @DebugUself/du0mana
    • 列表发送 [Weekly] 前缀的邮件, 并附 .md 格式的文稿
    • 没了.