怼周刊_v0
~ 试刊号
进度
- 170408
[DU0wd6zoom]
20:42 周小结嗯哼 - 170405 [DU0wd3:dama 吐糟]在线收听_Zoom.Quiet_荔枝FM ~ 被激发出 N 个任务了…
- 170402 [DU:init. re-start]在线收听_Zoom.Quiet_荔枝FM 正式开怼
- 170401 关闭报表和入密
- 170331 om103py 毕业
- 170328 受到复习队的感召 开放入密
- 170301 大妈 仓库小密圈
任务
- 引发 10+ 分支任务
- 关闭ed Issue · DebugUself/du4proto
- 并没有都转化为 文档/代码
困难:
- 对当前圈内部沟通渠道和公共资源, 并不是所有人都理解并习惯使用
- 甚至于期间形成发布的各种文案/录音/维基/邮件/… 并不是全体都知道/看过/理解/执行/…
- 所以:
- 慢慢来, 比较快
- 大家已经开始注意到 ,相关守则/技巧/规约, 是一定要自己去动手折腾的
推荐阅读:
进展
- 作业: S01E01
- 提交: 20 人, 不到 2⁄3
- 引发的作品:
- 微信机器人 ~ DebugUself/du4proto at tl2wc
- csv->md <– 没有正式发布工程分支
- 状态:
- 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
- …
- Commits (~ 17.4.8 15:21,
成果
学习社群如何对待微信群
缘起
自怼圈
首次 zoom 会议决定以 Github 和邮件作为日常沟通的主场, 不用微信群来做日常沟通. 放弃微信的主要原因: 干扰心流/消息丢失/交流功能受阻.
现象
怼友们直觉上仍然非常依赖微信群. 有怼友就立刻拉了群.
为此, 大妈发布 [Ask] 为毛不用微信群? · Issue #4 · DebugUself/du4proto, 提出以下问题:
- 为什么我们如此依赖微信群?
- 微信群在
自怼圈
这一长达 54 周的自学组织内部不应该使用?- 在这一场景中, 微信群有什么问题?
- 这些问题,如果一定要在微信群中弥补的话,应该怎么作?
- 对应其它沟通渠道天然的行为,这些问题存在嘛?
分析
大家在 issue 中展开了充分的讨论. 回复的重点多为微信在自学场景下存在的问题.
- 为什么我们如此依赖微信群?
- 习惯使然. 微信本身非常方便/快捷/及时, 已成为国人沟通的首选工具.
- 当然, 习惯的并不一定是合适的, 特别是在自学场景下. 你以前可能习惯用 word 来书写, 这不代表它适合用来写代码.
- 微信群在自学组织内部是否应该使用?
- 经过认真分析, 大部分怼友倾向于不使用. 有几位怼友提出说可以保留微信群用于联络感情. 但是, 微信群里有真感情吗?
- 在自学社群这一场景中, 微信群有什么问题?
- 自怼圈作为一个自学组织, 首要的目的是促进大家的学习和思考. 而学习讲究系统/积累/专注/回顾, 微信”不是为学习,思考而生的” (大猫).
- 我们需要高质量的异步讨论, 而不是碎片化的同步讨论. 微信上无法展开良好的异步讨论. 在这里:
- “思考不能沉淀,信息不能萃取,讨论不能连续”(MagicCheng)
- “容易碎片化发言, 不能在想清楚并组织好语言再发出自己的意见”(bambooom)
- 甚至, 它可能”提供伸手党思维温床,阻碍心智升级” (fatfox2016)
- 自学需要专注, 而微信是专注的敌人. 各种群消息/公众号都会干扰你的注意力.
- 为什么你不该用微信进行主题讨论? 提到三个原因:
- 同步 vs 异步: 异步讨论更持续/深入/充分, 更容易达成共识
- 公开/正式的形式: 更容易促成理性/认真的回应
- 数据可靠性
- 更完整的论述参见 为什么不应该使用QQ进行技术交流
- 这些问题,如果一定要在微信群中弥补的话,应该怎么做?
- 需要群友的自觉/自律. livingworld 指出, 需要”定目标,定主题,定规矩,严格限制其使用功能及使用范围”.
- 对应其它沟通渠道天然的行为,这些问题存在嘛?
- 即时通信类的沟通方式,都会存在类似问题. (gzMichael)
- 但异步沟通工具, 如 “github, maillist 仪式感比较强,有氛围,感觉不存在上面所说的问题,容易形成一个知识积累系统,从而形成学习与积累的良性循环” (大猫)
- 怎么看待开智社群在微信群里写出”追时间的人”一书呢?
- 其实, “追时间的人”一周成书的所有秘密 里面提到了以下真相:
- 准入门槛: 所有加入者必须出过至少一本书,拥有博士学位,或者是自己所处领域的一流专家
- 这类分享并非每日常态, 而是每周一次
- 成书还需要大量整理工作. 作者和志愿者们在 Gitlab 上远程协作, 在一周内”从组稿,编辑到出版汇总,大家加班加点完成了出版所需的繁重工作. 当时所有志愿者都非常辛苦,每天工作到深夜一两点钟,在赶时间交稿的最后两个晚上,有的志愿者只睡了一两个小时. “
最关键的是, 大妈指出:
- 分享者分享的东西, 从来不是在微信群中积累/学习/研究出来的
- 微信群只是个免费的, 基本可用的实时分享渠道而已. 其中沟通的好东西, 从来不是在微信群中诞生的
解决
- 放弃微信群. 专注于自学/思考/自怼/互怼.
- 尽快熟悉使用 Github 和邮件列表沟通的方式.
- 如果你还习惯于在微信群里轻轻松松地伸手提问, 那么赶快去读/听一下提问的智慧. 改变你的提问习惯, 试着用更认真有诚意的提问来为社区贡献知识.
- 诸位怼友可进一步思考并参与以下 issue 讨论:
故事
~ 收集各自无法雷同的怼圈真人故事…
沟通需要代价
案情回顾:
为了第一时间, 引导大家在正确高效无污染的环境中开怼, 创建了对应的开源工程环境, 但是, 需要对应的怼员基本信息, 虽然以往 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
- How to Write a Git Commit Message
- 这个 blog 列出来该如何书写一些 commit message, 其中设计各方面的一些约定, 算是抛个砖.
- Git - Branches in a Nutshell
- 关于分支的使用, Pro Git 已经说的比较详细了.
- Commit message 和 Change log 编写指南 - 阮一峰的网络日志
- 阮老师的一个篇关于 commit 的博文, 其中关于 header type 那部分有些借鉴意义.
- How to resolve merge conflicts in Git? - Stack Overflow
- 推了一波 git mergetool.
- 使用 git rebase 避免無謂的 merge | ihower { blogging }
- 算是更高级的用法, 目的是减少一些不必要的 merge, 同时让 master 与分支的线图看起来更醒目. 各种各样的merge 流 我也是最近才开始了解到还能这么玩?..
后记
~ 怼周刊是什么以及为什么和能怎么…
大妈曰过: 参差多态 才是生机
问题在 参差
的行为是无法形成团队的
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 格式的文稿 - 没了.
- 仓库 _draft 目录,发布文稿: