敏捷开发中分解拆分用户故事的几种模式招式

User Story is a lightweight requiement in Agile mode, splitting big specification to fine granularity is helpful to increase flexibility, deliver highest value earlier and feedback earlier to expose risks. Here’s some patterns for splitting user story, also it described the “5C” characteristics and INVEST acronym for good story.

用户故事(User Story)是敏捷开发中流行的需求表达手段,各种敏捷流派中都提倡将大型需求进行化整为零,减少颗粒度,提高灵活性,实现尽早交付价值和揭示风险。本文根据 @申导 多年敏捷实践经验,同时借鉴业内流行做法,整理出一套分解用户故事的模式,分享给大家。并且最后也给出了优秀的用户故事需要满足的5C特征及INVEST原则。

Read More

理解unicode和utf8字符编码

本文以python语言为例,解答下面几个问题:理解unicode的统一性,unicode与utf8和ASCII到底是什么关系?又如何在实践中用好字符编解码呢?

令人头疼的字符编解码乱象

由于历史原因,中文字符编码标准众多,特别是在Windows操作系统上,GBK,GB2312,UTF8等等,各不相同,还记得各种场合出现的乱码吗?而在Mac系统上,由于完全统一用UTF8编码,所以编程人员在开发调试时就不大会因为编码操心。然而,一旦涉及到与第三方系统对接,还是不免会遇到编解码的问题,不论这种多系统集成的模式叫做SOA或者MicroService也好,每个系统都有自己的接口定义,即使是用SOAP协议夜还会有不同版本,更不用说各种自定义的基于XML或JSON的准Restful协议了。
总之,不同操作系统,不同的第三方系统,带来了不同字符编解码复杂局面。

Read More

Scrum Master 技能模型

Scrum Master的定义是这样说的:团队的仆人式领导者,帮助团队排除障碍,仅有的权力是针对Scrum过程的。

从实践中看,SM其实就是组织的敏捷教练,是组织变革的代言人,需要对交付以及长期的转变之间进行平衡。很多人想了解SM的进阶技能,来进一步提升。

从领域上来说,SM要了解技术、业务、组织结构的领域知识。而从技能上来说,要掌握以下几个部分:

  • Training
  • Mentoring
  • Facilitating
  • Coaching

解决在iOS App中集成支付宝时遇到的RSA密钥签名问题

最近在自己的iOS native App中集成支付宝功能,发现有即时到帐、手机网页、快捷支付,之间的区别说的不够清楚,接口及参数定义更是各不相同。对于Native App来说,选择快捷支付(wap)就对了。

说起集成文档及Demo,发现文档质量比起五年前没啥进步,一如既往的不知所云,甚至缺少某些关键步骤。而且Demo中的代码一直强调此代码不完全能直接使用,可是我想说,开发者看demo的意义就在于能够快速的解决问题,最好能一键集成,SDK的集成度可以做得更好。可是无论文档和代码都缺少版本控制,二者之间存在大量不一致现象,更不用说出错后的信息让人难以跟踪,跟当年Windows的出错信息有得一拼。

下面说说集成快捷支付中遇到的一些关键环节,特别是RSA加密的问题,因为快捷支付只支持RSA,不支持MD5方式。

Read More

将新浪微博 WeiboSDK 桥接集成到用Swift语言编写的iOS App

昨日女神高圆圆嫁到了台湾去,各位屌丝粉丝哭晕在厕所。别说,昨夜还真梦到了女神。于是今日发奋图强,继续进行编程工作–集成微博SDK到我的Swift程序中,用于微博授权登录。

前年曾经做过一次集成,那时还是ObjectiveC语言的天下,而今日Swift语言已成大势所趋。
由于iOS SDK是用ObjectiveC写成,在Swift中要用到语言桥接。

由于文档与代码脱节,自己摸索半天,还是遇到很多坑。特别是链接期直接抛异常出来,比如'NSInvalidArgumentException', reason: '-[__NSDictionaryM weibosdk_WBSDKJSONString]: unrecognized selector sent to instance,多是找不到链接库导致。

完整解决方案:

Read More

银行中的跨国研发团队如何快速交付

在互联网大潮中,金融企业也越来越多地直面互联网金融的冲击。传统的产品设计和发布周期显然已经跟不上当下快速发展的消费市场。无论中资还是外资各大银行,都已经纷纷上马移动金融产品,并且开始采用敏捷开发的模式,以达到快速发布,灵活调整的目的。
本案例向大家分享某银行的跨国研发团队是如何达到快速交付移动金融产品的。

一、引言

该银行组建了单独的团队来研发新一代的手机银行产品,团队主要分布在中国和新加坡,在马来西亚和印度也有部分人员。手机银行的业务逻辑和关联系统基于原有的网上银行产品,但用户体验及页面设计都要另起炉灶,试图对不同国家的业务提供统一的用户体验。

对于一个全新招聘的跨国团队,采用大家没用过的敏捷方法来研发一款创新的手机银行产品,这个“三新”项目看起来就是一个不可能完成的挑战。

Read More

Coding Kata-网球计分 tennis

Coding Kata是一种编程练习方式,针对某个题目反复进行操练,达到熟能生巧的目的。
一般会通过TDD的方式进行。

这里是一个用Java来编写的网球计分程序,题目详见http://codingdojo.org/cgi-bin/index.pl?KataTennis

用到的工具:Mac上QuickTime、IntelliJ、iTunes

国内有一个kata接力活动,鼓励大家把自己的操练录制视频发出来共享和交流。

更多操练题目:

骑士周游-马踏棋盘问题(A Knight's Journey)

看到 @大城小胖 做了个H5游戏:马踏棋盘,于是想起研究一下这个算法。

题目是这样的:国际象棋的棋盘为8*8的方格棋盘,将“马”放在任意指定的方格中,按照“马”走棋的规则将“马”进行移动。要求每个方格只能进入一次,最终使得“马”走遍棋盘64个方格。(N=8的情况)

我用python实现了这个算法,其中用到了回溯法,并用贪心法进行优化,以防递归深度太深而溢出。当找到一个解就停止递归。

不过这个解的最后一步与初始位置难以重合,而@大城小胖 的游戏中却要求马最后要回到初始位置,因此算法还要进化

Read More

Spotify的敏捷工程文化

Spotify是继Pandora之后,国外第二大音乐媒体网站。上一篇
Spotify的新型敏捷矩阵组织:部落、分队、分会和协会出了以后,很多人对Spotify的敏捷组织形式非常感兴趣。这里@申导 抢鲜给大家带来第二部分,关于Spotify的敏捷工程文化

第一部分主要提到基于敏捷原则,将人按照小分队Squad的方式来组织,松耦合但紧密联盟(Align)。通过内部代码开源,鼓励“异花传粉”。通过架构解耦、特性开关等手段来做到频密的小规模发布。借助自助的发布和部署服务,减少人们之间的任务交接。所有一切都关于“人”,因此组织更加要关注激励、信任与社区文化,而非等级结构或控制。

第二部分讲的是关于失败,用Spotify的创始人Daniel的话说就是,“我们要比其它人更快地犯错误”。因为失败意味着学习,因此更快地失败就意味着更快地学习,更快地改进。

Read More