利用集合管道对循环进行函数式重构

原文翻译自 http://www.martinfowler.com/articles/refactoring-pipelines.html,已获得Martin Fowler(老马)授权。
相关直播视频 http://www.bilibili.com/video/av6146294/
翻译 @何强 审校 @申导Jacky

循环一直是处理集合数据的传统方法,但是随着编程语言将函数采纳为一等公民,使得集合管道成为具有吸引力的新选择。在这篇文章中,我将用一系列例子来介绍如何利用集合管道对代码中的循环进行重构。

Read More

CSP认证申请所需的SEU学分积累究竟有多难?谈谈经验

Scrum Alliance联盟的认证是国际最权威的Scrum与敏捷认证,分为基础级、专家级和导师级。很多同学在获得基础级的CSM/CSPO/CSD认证后,想要继续深造,但觉得下一级CSP认证很难获得申请所需的SEU(Scrum Educational SEU),或者不知道该如何申请,现在就为大家解读最新的申请攻略。

好处

打磨技能、持续精进、连接人脉、获得认可

9 Reasons Why I Decided to Become a CSP

申请要求

  • 拥有CSM/ACSM/CSPO/CSD认证之一,且未过期(2018-1-1开始实行)
  • 过去5年内,至少有36个月的时间在组织内成功地应用Scrum
  • 在过去3年内积累70个SEU学分。已经获得的课程认证可以提供了一些学分哦。CSM (16 SEUs), CSD (24 SEUs), CSPO (16 SEUs)

Read More

Tips to Certified Team Coach application

This series includes three posts:

  1. How Bright Career Path of ScrumMaster and Agile Coach?
  2. Jacky Shen’s Agile Coach Journey
  3. Tips to Certified Team Coach application

Tips for applying CTC

The previous two articles shown how bright career it is to be an agile coach, and what I have learned from my jouney of agile coach. If you have the aspiration to achieve the highest level Scrum certification, just follow up this article.
After the experiment of the certification last year, CTC has already opened for public application. As I learnt from the forum, there are many experts in Southeast Asia are applying for this certification, but quite few from China. Hurry up guys, I trust everyone of you, because I believe that in China there are much more professional!

Attention!

Read More

Jacky Shen's Agile Coach Journey

This series includes three posts:

  1. How Bright Career Path of ScrumMaster and Agile Coach?
  2. Jacky Shen’s Agile Coach Journey
  3. Tips to Certified Team Coach application

How did I grow up to an agile coach

Beginner to Agile

I joined Nokia Siemens Networks in 2007 when Agile had been promoting in the whold 3G Platform product line. In that period, there was few company dare to do large scale agile promotion globally. I obtained Certified Scrum Master(CSM) certification in 2008. During my career in Nokia Siemens Networks, I have been working in various roles such as Senior Software Specialist, Line Manager, Quality Manager, Project Manager, Scrum Master and Agile Coach, and had luckily worked with a lot experts in Agile. It is notexaggerate to say that Nokia Siemens Networks is like the Whampoa Military Academy of Agile in China. As per myself, I have learned and improve a lot as well in management skills, empowerment, lean concept and system thinking. In technical engineering practice, I had fully understood and adopted the concept of Continuous Integration, which is one of the useful practices in eXtreme Programming(XP). Automation Test and Refactoring was applied in my daily work as I awared the importance of Agile of Engineering Practice. The later LeSS (Large-Scale Scrum) Framework is basically originated and summarized from Nokia Siemens Networks’s experience on Organization level Agile.

Read More

How Bright Career Path of ScrumMaster and Agile Coach?

This series includes three posts:

  1. How Bright Career Path of ScrumMaster and Agile Coach?
  2. Jacky Shen’s Agile Coach Journey
  3. Tips to Certified Team Coach application

Don’t worried about the carrer development of agile coach

Agile Coach is a new role, there are some people playing that role in all the company transforming to agile but still staying on their current position. So it is inevitable to produce concerns and doubts.

Some people may doubt: The company ask me do play as agile coach or ScrumMaster, what 's the prospect and How can I develop my career?

Read More

Python之禅

保持简单、追求简单,我想这就是编码之中的禅,一种回归本真的境界。这种禅意在 Python 的设计哲学中体现的淋漓尽致,在 Python 解释器中输入“import this”,便会出现经典的 Python 之禅。

Beautiful is better than ugly.
优美胜于丑陋。

Explicit is better than implicit.
显式胜于隐式。

Simple is better than complex.
简单胜于复杂。

Complex is better than complicated.
复杂胜于难懂。

Flat is better than nested.
扁平胜于嵌套。

Sparse is better than dense.
分散胜于密集。

Readability counts.
可读性应当被重视。

Special cases aren’t special enough to break the rules. Although practicality beats purity.
尽管实用性会打败纯粹性,特例也不能凌驾于规则之上。

Errors should never pass silently. Unless explicitly silenced.
除非明确地使其沉默,错误永远不应该默默地溜走。

In the face of ambiguity, refuse the temptation to guess.
面对不明确的定义,拒绝猜测的诱惑。

There should be one– and preferably only one –obvious way to do it.
用一种方法,最好只有一种方法来做一件事。

Although that way way not be obvious at first unless you’re Dutch.
虽然一开始这种方法并不是显而易见的,但谁叫你不是Python之父呢。

Now is better than never. Although never is often better than right now.
做比不做好,但立马去做有时还不如不做。

If the implementation is hard to explain, it’s a bad idea.
如果实现很难说明,那它是个坏想法。

If the implementation is easy to explain, it may be a good idea.
如果实现容易解释,那它有可能是个好想法。

Namespaces are one honking great idea – let’s do more of those!
命名空间是个绝妙的想法,让我们多多地使用它们吧!

参考

Apple最新Swift编程语言之闭包

Swift作为苹果为开发者最新发布的编程语言,受到热烈的追捧。与2014世界杯同热。

作为一门动态语言,吸收了大量Python语言的特性和语法(我喜欢Python),当然也有些ruby、js和C#的痕迹,同时保持了对原objective-C库的兼容。

iBook推出了教程,中文翻译也完成了。

大家需要下载最新xcode,里面有交互式的playground可以用来学习swift。为了获得最好的体验,在 Xcode 当中使用代码预览功能。代码预览功能可以让你编辑代码并实时看到运行结果。 打开Playground

你需要知道Swift语言闭包函数 ()->()

定义一个函数

你可以用func关键字来定义函数。函数可以接收和返回0个、1个或多个参数(tuples列表)。返回类型在->符号后面。

1
2
3
4
func jediGreet(name: String, ability: String) -> (farewell: String, mayTheForceBeWithYou: String) {
return ("Good bye, \(name).", " May the \(ability) be with you.")
}

调用函数

1
2
3
4
5
let retValue = jediGreet("old friend", "Force")
println(retValue)
println(retValue.farewell)
println(retValue.mayTheForceBeWithYou)

函数类型

1
func sum(x: Int, y: Int) -> (result: Int) { return x + y }

上述函数的函数类型为 (Int, Int) -> (Int)
函数类型可以用于嵌套函数的参数类型或者返回类型。

传递和返回函数

下列函数将另一个函数作为结果返回,可以用于赋值给变量及调用。

1
2
3
4
5
6
7
8
9
func jediTrainer () -> ((String, Int) -> String) {
func train(name: String, times: Int) -> (String) {
return "\(name) has been trained in the Force \(times) times"
}
return train
}
let train = jediTrainer()
train("Obi Wan", 3)

可变入参函数

可变入参函数带有可变数量的入参(表示为参数类型后的...),其内容可作为数组来访问。

1
2
3
4
5
6
7
func jediBladeColor (colors: String...) -> () {
for color in colors {
println("\(color)")
}
}
jediBladeColor("red","green")

定义一个闭包

闭包被置于花括号{}中,且定义为()->()类型的函数。其中->分隔了入参与返回类型,其后的in关键字分隔了闭包头与闭包体。

1
2
3
4
{ (params) -> returnType in
statements
}

一个例子,map函数应用于数组。

1
2
3
4
5
6
let padawans = ["Knox", "Avitla", "Mennaus"]
padawans.map({
(padawan: String) -> String in
"\(padawan) has been trained!"
})

类型已知的闭包

当闭包的入参类型已知时,可以这样写:

1
2
3
4
5
6
7
8
func applyMutliplication(value: Int, multFunction: Int -> Int) -> Int {
return multFunction(value)
}

applyMutliplication(2, {value in
value * 3
})

闭包省略入参名

闭包入参可以不用参数名而是位置($0,$1,…)来访问

1
applyMutliplication(2, {$0 * 3})

甚至,如果闭包是函数的最后一个入参时,圆括号可以这样省略掉

1
applyMutliplication(2) {$0 * 3}

(翻译自 http://fuckingswiftblocksyntax.com/

技术团队管理者的软技能

2016年4月份受邀在中生代技术微信群(freshmanTechnology)做了一次群分享,感谢群主邀请,感谢群友收听,更要感谢 @王友强 的细心整理。原文及语音见底部链接。

大纲

  • 前言
  • 团队文化
  • 沟通文化
  • 四种不同的领导力风格
  • 领导力类型的区别
  • 踢猫效应
  • 管理的来源
  • 传统管理
  • 觉察/激情/教练
  • 三种因素决定员工行为
  • 技术管理者的领导力
  • 技术管理者的技能树
  • 绩效考核怎么做
  • 高效团队
  • 群友问答Q&A

Read More

【懒人包】申请Scrum联盟导师级Certified Team Coach认证的十大攻略秘籍

本系列文章分为三部分:

  1. 敏捷教练和ScrumMaster的职业现在有多吃香?
  2. 我是怎样成为敏捷教练的?
  3. 申请导师级Certified Team Coach认证的攻略秘籍

申请CTC的攻略秘籍

前面两篇文章讲了敏捷教练职业发展的光明前景,以及我成为敏捷教练一路的心得,如果你也想和我一样去冲击最高级别的Scrum导师级认证,那就继续往下看吧。

从去年底推出试点以来,CTC已经正式开放申请,目前我从论坛上看到已有很多东南亚的人士已经在积极申请,而中国区申请人数不多,大家还需要努力啊,我相信国内的敏捷水平可是要远远高于东南亚的啊!

ScrumAlliance对敏捷教练定义的五种能力

前方高能预警

Read More