软件开发团队管理杂谈

最近在研究 Groovy 时想起了一些管理上的经验,所以就写下来跟大家分享一下。

Groovy 是一个弹性很高的语言,并且同样一个动作可以有很多种写法。不过以开发团队管理者的角度来看,对于这样的语言导入团队其实是一种很大的挑战。在开发团队运作过程中,产出的源代码并不是只有撰写的人才会接触到,为了确保源代码的质量会进行 Code Review,或是为了工作的负载会有不同的开发人员接手进行源代码的调试或维护。

所以为了维持开发流程的顺畅,源代码的一致性就相对地重要,而维持一致性常见的手法就是订定团队的 Coding Convention。然而,像这样具有很大弹性的语言,在订定 Convention 时不容易拿捏订定的准绳。如果订得太具体、详细了,有些成员觉得琐碎记不住或是觉得麻烦而配合度不高;但订得太抽象又会在实作上有很多的例外而流于形式,或是在 Code Review 时因解读不同产生争议。

另外还有一个对管理者来说很头大的问题,就是要如何让 Convention 的内容成形。要导入团队没有经验的语言,在订定 Convention 时大多还是求助于外援。如果是具有历史的语言,在资料的搜集上可能相对容易一些。但是如果是年轻的语言,可供参考的资料并不多,有可能会需要投入时间及人力来达成。但是要形成一份可发挥功效的 Convention,通常要对语言的规格有一定程度的了解,并且对于应用在实际开发工作上可能遭遇的问题做出考量,或是针对团队的习性进行微调。这是会产生可观的人力时间成本,是否要投入会是一个很煎熬的抉择。

在 “隐藏的机会成本不管有多巨大都会被牺牲” 的现实面之下,大多只能无奈的选择可以展现绩效的方案。“且战且走” 会是常用的选项之一,也就是借由专案经验的累积来逐步形成 Convention 的内容。其后遗症可想而知,导入初期的专案里源代码的写法百家争鸣、每一个 Convention 阶段的专案源代码撰写风格都不尽相同。回头去改过去专案的源代码不符合帐面上的成本效益,放着不管又要承受着成员接手意愿不高,或是系统修改时出错可能性较高的风险。

另外一个衍生的问题是,“且战且走” 初期一般就是订定几个原则性的抽象大纲,期望开发人员能够依循大纲的精神来自我要求,以提高程式产出的质量。残酷的现实是总会遇到有一部份自我中心的开发人员,其抱持的心态觉得源代码打得愈少效率愈好,并引以为豪。不仅是在写法上极尽所能地精简,同时在命名上也是能缩写就缩写,有惯例用惯例、没惯例就自己订。当成员间源代码撰写方式看法相左时,这样的成员能沟通的还算好,花点时间就是了。最糟糕的情况是遇到自视甚高、缺乏同理心的,不论如何沟通都依然坚持己见,并且还在团队中造成 “破窗效应”。

就像前面提到的,源代码在一个团队里会需要看的又不是只有 Compiler。源代码本身也是一种文件,易读性是一个很重要的质量指标。从变量、函式的命名、源代码的排版、指令的排列顺序、空白行的使用到程式区块的分配,都应该要隐含着 “导引阅读源代码人员理解程式逻辑” 的效果。

从效率的角度来看,节省掉的打字时间是可以省个几分钟。不过现在的 IDE 都够成熟,自动完成大多都是基本的功能,靠 IDE 的功能就算是命了一个很长名字的变数,真正需要打完全名的机会根本微乎其微,能省掉的时间其实很有限。同时,精简的源代码在侦错的操作上很容易出现一个问题是,太多指令同时发生在同一行源代码,单步执行时会不容易有效隔离并观察到出问题指令所造成的影响。但是写出一堆不易理解的程式,除了其他人阅读时要额外多花掉的时间,再加上看错所产生一连串后续修复的时间成本、用户因程式运作错误所付出的成本,绝对超过省下的那几分钟。

有经验的老手应该都清楚,缮打源代码的时间其实占开发一套系统的比例不算高,大多数的时间还是花在规划和构思系统的流程与架构。执着在打字的效率上其实是不够理性的行为表现,甚至 “争论源代码写法” 所产生的时间成本都高于 “照规定要求完成工作” 的时间成本。

有人可能会认为这是个小事、问题不大,加个注释帮助阅读就好了。我想这是一个没有认真写过注释的人才会有的想法,要写出一段能允当表达程式设计意图的文字,其实是很花时间的一件事。随手写下的简短注释,往往有一个很常见的经验是 “在过一段时日再回头去看时,文字比源代码还难了解”;或是注释只是在重复程式执行的动作,看源代码和看注释的效果一样。如果是这样的注释,与其浪费时间在打这些字,还不如回头去好好地把源代码变得更易读。

当然,有很多人会觉得以目前的软件从业环境,很多的源代码都是在急就章的时程下产出或是用过就丢。与其花心思在这种枝微末节上,还不如早打完早收工去享受人生。这是每一个人对于工作的态度,没有所谓对错的问题,端看你想要让你的工作成果是精品还是平价品。想要打造出精品,差别就在所谓的魔鬼细节里,会需要付出很大的成本吗?我的经验是 “不需要”,只要养成习惯,自然而然的就会展现在工作的成果里!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 前言: 1.事件绑定,setTimeout()/setInterval() 等定时调用属于异步操作。在for循环中...
    余生筑阅读 2,226评论 0 0
  • 第一 百零四章火虫斗玉 在距离斗龙地矿传送大阵远方的一处悬崖上,站着几道身影。 火涛、碧月、向天浩、奎牙。 奎牙眉...
    和煦晴天阅读 359评论 0 0