分享一个公司规模近200,研发占一半的创业公司 Worktile 在研发团队管理方面的玩法,仅供百人左右研发团队参考~

什么是研发团队?简单的说,你熟悉的那帮穿格子衬衫,以程序员为核心组成的团队,就是研发团队。

本来,你以为格子男们是很乖很闷骚的那种,管理和协作起来比销售和业务简单很多,而实际情况是,格子男们并不那么容易管理,面向代码世界的复杂度,可能远比面向财物世界的复杂度还要高。

作为致力于团队协作的公司,我们研究了很多国内和海外牛逼公司的研发模式和研发管理,例如OKR在谷歌、Facebook的应用,Uber的高效会议制度,阿里的绩效体系,腾讯的产品流程。除了在自身团队做了N次不同的试验和反思,我们也想将很多不错的经验分享给用户。要谈清楚方法,就先了解清楚问题,研发管理之所以令人头疼,核心的问题无外乎以下一些方面。

研发管理的典型问题

1. 难以KPI化和考核

任正非有句名言:钱分好了,管理的大部分问题就解决了。我对此深表同意,可问题是,怎么能分好钱确实非常考验能力、经验和智力的。研发之难,恰恰难在无法KPI化工作本身,所有那些试图KPI化工程师和码农的做法,最终结果都啼笑皆非、面目可憎、吃力不讨好。在我过去经历,还有客户实际的研发管理里,试图KPI化研发工作一直是不同团队努力的尝试,包括和不限于以下方式:

  • 解决Bug数
  • SLA
  • 功能完成度
  • 加班,007就比996牛逼,996就比955更值得奖励
  • 营收捆绑
  • NPS

这些看起来可以数字化的指标,除了证明研发管理者通过偷懒的方式做绩效考核外,可以说毫无价值,也无法给公司和组织带来正向的激励。

2. 离代码很近,离用户很远

另外一个现实且无奈的问题是,工程师和产品经理好像是在象牙塔里做产品和研发,和用户往往离得太远太远。这种问题带来的伤害可能远比其他事情来得更加彻底,但本质上这是研发规则上没有解决好的问题,导致工程师本身并没有任何的目标和动力去贴近用户和客户场景。
我们常常说要做用户喜欢的产品,但那些反人类智商的产品,往往是产品经理和工程师合谋的结果。如果说研发管理的目标是提高效能,那么首先同步研发团队朝着统一的目标,就是效能管理最重要的第一步。
因此,以什么样的制度去驱动研发抬起头来看客户场景,是一切研发管理的核心工作之一。

3. 跨部门战争频发

因为低头干活,所以往往研发团队的目标和业务团队的目标并不是一致的,研发体系和业务体系的跨部门战争,简直罄竹难书:

  • 业务认为,怎么这么多bug,一个小问题需要花这么久的时间才能修复
  • 而研发认为业务的智商不够用,这么好的产品就是无法准确传达给客户
  • 业务面对客户点头哈腰;而研发觉得客户是业务的客户,不是研发的客户
  • 业务对需求排期是12345;而研发对需求排期往往是54321
  • 业务给客户承诺就像谈恋爱,把星星摘下来也敢接着;
  • 研发认为你承诺的,你去写代码实现吧
  • 业务认为研发高工资吹着冷气,自己天天跑在外面晒太阳;研发认为,业务提成那么高,这产品是我做的,我咋没提成呢

这种剪不断、理还乱的关系,是很多公司的普遍现象。因为跨部门的不理解,必然带来团队之间的内耗,信息的折扣和效率低下自然产生。而更重要的影响是跨部门战争造成对客户服务与理解的偏差与推诿,没有任何公司或者团队能在一个不流畅的环境下成就对客户的100%满意度。

那么如何解决以上问题呢?

从研发管理全景图说起

下面的研发全景图,是我们团队过去几年逐步形成的研发管理经验,其中主要包括以下内容:

  • 研发管理的的核心是构建一个开放、自学习、自驱动的组织文化和仪式感,这是打造高效研发团队最内核的基础。
  • 左边是工具和方法,主要包括:以OKR驱动的目标管理,基于Scrum的敏捷,和逐步完善的DevOps。
  • 右边是制度和规则,核心包含:研发团队的绩效和考核、跨部门合作、其他仪式感驱动的各种规则,尤其是构建自学习的环境与分享机制。

打造开放与竞合的组织架构和文化

一个组织要焕发活力、自驱动、使命必达的信念,开放而透明的文化是绩效管理的核武器。总体来说,不管你的方法和制度多么丰富和完善,无论如何也不可能驱动僵化、死板、没有活力的团队产生极其高效的价值。所以,我们在谈研发效能的时候,注意力总集中在别人家的团队是符合管理的,而忽略了团队激活的核心首先是塑造超强自由度、透明度和使命感的团队文化。
从效率这个角度去看,没有透明度的提效都是打折扣的,在一个组织里效率低下的首要原因并不是执行力,而是透明度。需要层层审批和报备的组织,设定层层关卡和信息围墙的团队,效率一定是非常低下的,单点的执行力提升并不改变整个团队的低效基因。
所以,打造开放与竞合的组织架构和文化,至关重要。

1. 特种部队

如何设计研发团队的组织架构,是个大大的思考题。我们团队经历过好几次不同的组织形态,也经常性的将研发团队进行组织调整,简单说,一个研发团队的角色主要是以下几类:

  • 产品经理
  • 设计师
  • 服务端工程师
  • 前端工程师
  • 测试
  • 其他

以什么样的组织方式调配以上资源,是个非常考验团队管理的事情,例如很多公司会将设计团队作为完全独立的部门,其他团队和项目按需调配设计资源,设计团队就像公司的乙方角色,通过资源调配来匹配执行。而另一种形态则是广泛存在于Facebook等互联网公司的方式,设计、产品经理、开发、测试组成短小精悍的特种部队,在研发团队中以小组形态组合,就像一个研发业务的接口一样,有清晰的输入和清晰的输出,有清晰的目标和清晰的边界。显然,打起仗来,特种部队方式的小组,从执行到目标都是超级强悍的,也同时能方便研发组织绩效考核的落地与激励。

特种部队的另一个好处是,每个小组的职能和目标是固定的,在产品研发大架构下执行一个精确的目标和单元。但小组成员可以转岗或者调配到其他小组,从而避免了研发人员的枯燥和无挑战的问题。

2. 仪式感

仪式感是团队管理的调味品,也是必需品,就像你吃饭离不开盐一样。研发团队管理者,例如CTO角色的人,需要有意识的在团队中设计有价值的仪式感,来增加团队磨合、默契与调味。好的仪式感,就像宗教仪式一样,能不断加强团队目标的执行、文化的塑造以及阶段的激励。

例如,我们自己团队就有很大仪式性的东西在执行:

  • OKR的阶段同步
  • 把重大版本发布变成研发团队的阶段激励
  • 管理层的固定One One访谈
  • 研发人员的每月访谈,同步到公司月报
  • 花心思的团建
  • 每月的产品考核
  • 师徒制
  • 走出去,参加各种外部的技术大会
  • 。。。

还有很多其他的仪式和规则,并且以上几乎每个规则都值得拿出来说道说道。

3. 用户体验委员会

在Worktile团队,我们建立了组织架构之外的一些虚拟组织,虚拟组织的设计可以很好解决跨部门沟通与信息同步的问题,以用户体验委员会为例,将公司里研发、设计、产品、销售、客户成功的同事组成一个虚拟委员会。委员会主席本质上就是这个组织的秘书,通过定期的会议或者讨论,将解决用户体验上的问题作为核心目标来解决。委员会的茶话会,每次都能高效推进很多方面的事情:

  • 就用户体验的重大问题充分讨论,产品和研发从不同视角收听意见,销售和客户成功更多代表了来自一线用户的建议。
  • 促进跨部门的彼此理解,很多时候跨部门的战争,来自于互相的不理解和看不起。例如,我们在某次茶会中,就一个很久以来的核心需求做了讨论,销售端原本以为是一个简单的需求,结果讨论下来发现,这个简单需求其实在客户方也有非常不同的理解,完全推翻了产品已经草创的设计方案。反过来,销售同事也完全理解了为何产品方案是如此之难的原因。
  • 指定行动方案,快速驱动产品研发落实改进方案。用户体验委员会不是只讨论,更重要的是驱动行动方案,快速解决用户关心的体验问题。

4. 技术委员会

同样在研发团队,我们通过技术委员会来实现跨研发团队的技术沟通、分享和技术选型。技术委员会保证了公司始终以科技驱动商业的基础不被稀释,汇聚团队中技术能力最强的圈子更加自驱动的投入技术贡献,主要的工作目标包括:

  • 公司级的技术方案
  • 前沿技术研发小组研发岗的职级评审,技术委员会承担对技术能力的职级评估
  • 驱动公司技术进步和学习,例如组织黑客马拉松、技术分享、对外技术输出
  • 向市场和销售输出技术内容研发下乡

5. 研发下乡

就是让研发走向客户,贴近客户需求,了解客户状况,然后回来完善产品以满足客户需求。Worktile本身是企业服务产品,客户需求在B端是及其复杂而多样的,憋在办公室是无法做出好产品的,所以需要从制度上驱动研发、产品和设计走向客户,而不是待在象牙塔。
研发下乡给了每个研发人员固定的指标,需要下乡到客户现场,所以销售和客户成功有了正当的理由要求研发同事完成指标,从另一个方面也加强了研发和业务部门的配合与协作,因为双方有了共同KPI的时候,大家绑在一起去做好一件事的动力就变得很强。

6. Polish Week

Polish Week是来自硅谷的流行文化,让研发团队在一个紧张迭代之后,有足够的时间可以休息一下,然后集中火力解决来自客户的需求或者问题,这种制度设计是非常高效的方法,可以短时间集中兵力解决遗留问题。

7. 技术分享和走出去

5年下来,我们技术团队每周分享已经正常进行了几百次,研发团队中的每个人都或多或少完成过对于所在部门的技术分享。新人来到团队,可以从过去数百次分享留下来的知识收获非常多的遗留知识。

(在研发体系共享的技术分享池)

另外一方面,Worktile 的核心客户本来就是研发团队和工程师,市场维度需要研发人员能够不断共享有价值的技术内容,而技术分享机制恰恰提供了驱动工程师内容创作的土壤。每次内部分享的内容,其实完全可以继续优化成外部可以传播的内容,通过市场手段实现二次传播,同时也能够将团队中有活力和分享精神的小伙伴,推到前台去技术大会或者公司组织的技术分享大会分享。

基于OKR和Scrum的研发管理

源于业务关系,我们在N个不同的客户场景做过测试,就是把团队老大的目标在公司群里做个调研,比较打脸的现实是,99%的情况下老大想的目标和执行层理解的目标不是一回事,而且大部分时候差别都非常大。因此,回到在研发团队或者公司层执行OKR,本质上要解决的核心问题是:上下同欲。

俗话说,上下同欲者胜。如果目标这件事都没法达成一致,那么一切效能和效率的优化都是无稽之谈。因为你效率越高,但方向不对,可能偏离方向跑的更远,这不是很尴尬的事情么?

因此,我们可以通过了解OKR来在团队形成一个基本的能力,这就是战略同步和战略沟通,从而实现目标统一这件事。(OKR的基本知识,推荐去Worktile OKR专题页了解)

(OKR是战略同步和战略沟通工具,服务于团队的使命和愿景)

1.写好O和KR是执行OKR最难的第一步

在研发团队落地OKR,本身并不是一件特别容易的事情,Worktile 团队经历了将近3年的反复尝试才逐渐找到OKR执行的感觉,而所有难点中,在开始阶段是如何写好你的O(目标)和KR(关键结果)。

(一个典型的研发O和KR定义)

所以,开始阶段需要不断在形式上保证OKR的执行,这个是非常必要且需要坚持的事情,然后不断打磨每个周期里的O和KR的定义。下面是一些OKR模板大全,看看优秀团队OKR是如何定义的:

2. OKR + Scrum的方法论

本文并不能将Scrum展开来讨论,因为这实在是一个大大大的话题,在我们团队实施Scrum有个大图景,其中包括了:敏捷开发、代码托管、持续集成、持续部署和持续发布。

下面这张图是以最基础的敏捷开发为例,从如何开会、如何定义团队规模、如何角色划分、如何迭代、如何测试,有非常专业且详细的管理细节。

不过,回到落地Scrum,同时又关注OKR的研发团队来说,Scrum + OKR是一个及其有价值的组合工具,我们自己的经验是以以下方式结合的:

  • 部门级OKR驱动 + 部门内敏捷驱动,OKR不到个人层级,但团队中的牛人可以OKR驱动

  • 迭代与OKR周期匹配,Sprint Meeting和OKR Review Meeting结合

  • OKR辅助优化产品Backlog的优先级

  • Scrum Master 参与 OKR Master 目标修正

我们总体在公司层将OKR执行的单元控制在部门层级,并没有强制个人制定个人的O和KR,所以回到研发团队管理上,部门的大方向和大目标靠OKR保证。而部门内的迭代,Product Backlog和Sprint Backlog则以敏捷的周期和原则执行。

大方向由OKR保证,并且影响优先级,小迭代和任务计划,基于敏捷的原则执行,简直是完美配搭。

3. 会议制度

我们推荐以Sprint Meeting和OKR Review Meeting为核心的复盘和计划会议。

Worktile研发团队,通常会定期在每周五的上午有一个非常长的同步会议,核心内容是基于Scrum的一个Sprint迭代来复盘进度和异议解决,产品和研发在一起高效沟通当前版本的进度和问题,并快速协商解决方案,指定执行人。

而另一方面,我们会在例会中共同复盘和更新研发团队的目标树,投影将打出两个页面,一个是迭代的故事板,一个是OKR的目标树。

对研发团队而言,通过OKR例会和Scrum例会,很好的规范了每次会议的核心内容,效率自然非同反响。

(例行的Scrum会议,同时复盘迭代的进度和OKR目标达成)

4. 每日站立

每日15分钟的站立会议,是敏捷型研发团队的必修课。快速交流昨日进展和问题,快速商议解决,然后快速计划今天的工作安排,每天花很小的时间复盘,这才是小步迭代。

当然,如果对着Worktile的迭代故事板去讨论,就免去了在墙上贴一大堆的标签,感觉很爽很到位。

(每天发生的短小精悍的站立会议)

5. 落地OKR的各种坑

执行OKR,一些坑是初次体验的团队常常犯的问题,总结下来主要是以下方面:

  • 和绩效考核挂钩
  • 一上来就全员执行
  • 变成目标分解工具
  • HR负责,而不是团队老大

OKR不是灵丹妙药,更像一个二把刀大夫,你信就能行,你不信就不行。OKR提供了基本的方法论、仪式、流程和规则,能够为团队构建基本的目标同步框架,实际落地需要公司决策层有坚持走下去的决心,尝试一次不行,要再调整然后接着来。我们自己团队从开始接触到今天,OKR的尝试上已经是第三次才逐渐找到感觉。

谈谈研发绩效

纵横江湖这么多年,知名的外企,头部的公司,小而美的海外企业,特别官僚的国内公司,包括我们一起共建和共创的客户,我经历和了解的公司至少上百家以上。

但是讲真,在研发绩效管理上做的好的,凤毛麟角。本身而言,研发的绩效、目标、管理和奖惩,从来都是一件难的事情,不要试图以过于简单的方案来解决。

我曾见识过一家500人研发团队的公司,为了指标化研发的KPI,将研发工作细分成几千个指标,然后通过几千个指标的动态结果来指导绩效和方向。这种尝试骨骼清奇,但我从过往经验里表达了深深的怀疑。我们所认识的那些牛逼闪闪的公司,没有一家是这样做的,更多的方式还是停留在人类智力可以理解和共识的方式上:

  • 360度

  • 职级

  • Peer Review

  • 项目制奖惩

  • 分级考核

下面,将我们自己在运行的绩效和奖惩方法,做一些浅尝辄止的分享。

1. 360度

我们在研发绩效制度上,主要实行360考核,每半年一个周期,年中考核占30%的权重,年底考核占70%权重。包括了自评、同事、直属上级、HR和老板,考核的核心是以个人对公司影响力作为最重要的标准。

因此考核前的述职过程对每个人至关重要,因为你需要说清楚我在这个周期里,做了哪些有价值的事情,带来了哪些有意义的结果,存在哪些问题,以后如何避免和解决。

我们的部门考核,直接由部门总监的360度结果来代替,所以这意味着部门总监的个人考核结果,就是部门整体的结果,会影响部门整体的系数。

有考核就有奖惩。360考核是决定一个个体和团队一年的奖励或者惩罚,做得好的和做的不好,都由这个结果来评定。

奖金由结果决定,我们通常会定义公司、部门和个人三级系数,不同的系数代表了不同的含义,然后加权出来的结果代表了你能拿到多少奖励:

  • 公司系数:基本由公司的总体营收和整体目标达成情况有关,决定了公司总奖金池和调薪池的多少。

  • 部门系数:也就是部门总监的个人系数,决定了部门在公司多个部门的排序,以及该部门总的奖励系数。

  • 个人系数:就是个人的考核结果,决定了个人在所在部门的排序,以及个人总的奖励系数。

这三个因素加权到一起,基本就为每个人和每个部门定义了一年的收成。

360度或许不是最佳的绩效方案,但这是当下普遍执行的规则里最有效的办法和方式。当然,执行360度考核有很多执行的细节,这些是施行过程中很重要的平衡,每个考核结束都要复盘做哪些调整。

总体而言,奖励和惩罚也没有永远的绝对公平,只有相对的。但是在规则定义上,如何实现按照影响力评价,就能最大程度的保证能者多劳这一基本常识。

2. 职级驱动

职级体系是研发型团队最有价值的工具,职级体系是一个职业序列,可以方便的定义一个人对公司影响力的评级和序列,而不是职位序列。所以,对于资深的工程师或者架构师来说,他的职级可以比自己的部门领导高,但职位可以略低。

职级体系同时定义了薪资范围和期权范围,从而让职级成为一个程序员向上通道的必经之路,原因是职级可能定义他在公司维度下薪资的上限,必须职级提升才能突破某个薪资瓶颈。

职级的价值在于:它是清晰定义的透明规则,包括薪资范围、期权、附加福利、评级标准。这样的透明标准能够最大程度上调动每个人向上成长的积极性。例如,职级对应的附加福利中,我们会包括你每年可以参加外部培训的额度,这对学习型工程师都是非常好的小福利。

(职级体系)

职级体系不是一个简单的工具,需要考虑很多细节和适配不同公司的规则,例如如何评级职级,技术委员会对研发岗位每个人的技术能力定义,职级评价的周期,每个职级的要求。

总体而言,职级是个有效工具,能够好的驱动那些有向上野心的团队成员,以最透明和公平的方式在向上的通道前进。

多说一句,我们在研发团队是以OKR+ 360度 + 职级体系来建立相对完善的管理体系,而在业务团队,包括销售、客户成功、市场团队,则更加突出KPI的导向性,所以KPI也不是毒药,KPI要善用到合适的地方,以及以合适的方式。

3. 分级考核

分级考核是我们在逐步尝试的方案,还没有完全落地,只是一个探讨阶段的东西。实行分级考核的原因是,任何组织和团队,都常识性的遵循2-7-1原则,一定有20%的牛人来长远的带来公司前进,也大概率上有70%的执行层需要靠规则和优秀的角色来影响前进。

所以考核的方式上不能实行统一的规则,否则要么对牛人定了太低的标准,要么对一般能力的人定了太高的标准。

另一方面,分级考核也能够从规则上驱动70%的小伙伴,有努力向20%提高的动力和标准。当然,我们还在考察和尝试,这里仅仅抛砖引玉。

4. 总奖励和总营收挂钩

这一条本来是一个常识性的结论,只是这个时代太多融资了的公司并没有很好的理解奖励的本质,很多时候拿融资的钱奖励,是不道德的。所以,让总营收和总奖励挂钩,是最合理,也最理直气壮的方式。

这一条在我们的逻辑里,就是由总营收来影响绩效考核的公司级系数,这个系数由核心管理层来定义即可。

工具化

工欲善其事必先利其器,这是真理。工具的核心价值,不是仅仅通过工具提高效率,更重要的是,利用工具能够为团队修好水渠

研发团队本身的管理、绩效、工作流程有很多可以水渠化的事情,所以用一个好的工具能够最有效的帮助研发团队修好水渠,然后达成团队的目标。

当然,主要推荐的是我们自己在用,并且很有效的自家工具:Worktile。核心原因是对研发团队而言,Worktile能够帮助解决的主要是以下两个方面:

  • 基于敏捷的全流程项目管理

  • 基于OKR的目标工具

1. 通过Worktile项目管理(Scrum和Kanban)驱动敏捷研发全流程

目前已经有几十万团队通过Worktile协同工作,其中研发团队占比是最高的,源于我们提供了对敏捷全流程的完整工具链支持,以及更好的产品体验:

  • 支持Scrum和Kanban两种敏捷实践方式

  • 基于敏捷方法论的完整迭代、故事板、需求、任务和缺陷管理

  • 丰富的报表和数据统计,对研发决策管理一目了然

  • 打通研发和业务,更好的跨部门协作支持

落地敏捷,需要能够支撑全流程的简单工具,Worktile为你提供了所需的一切。

2. 通过Worktile OKR工具落地OKR的执行

Worktile是国内首家将OKR落地到工具化的产品,为团队执行OKR提供了更好,更方便,更数据化的支持,主要包括:

  • OKR的执行全流程管理,从启动、周期、打分和评审

  • 基于公司、部门和个人分级的O和KR管理

  • 一个基于目标体系的目标树

  • 基于目标执行的自动化运营分析,同统计报表告知团队OKR执行和更新的情况

  • 自动目标更新提醒

(在Worktile以更有效的方式定义OKR)

OKR是个简单的方法论,工具本身并不复杂,但自动化方式显然好过Excel共享方式带给团队的价值。这些都是Worktile已经修好的水渠,你只需将水引入即可。

总结

好了,这是一篇汇聚研发团队,从管人到管事的一些点滴经验,背后投射的是一个百人规模研发团队在过去成长之路上不断迭代的经验和方法。

每个团队都是独特而与众不同的,所以经验和方法也不一定适合所有,只是希望一些可能的思路,能带给你的团队一些转折和启发。

程序员群体,也是独特而与众不同的一群可爱的家伙,他们有自命不凡的习惯,也有改天换地的雄心,他们不会循规蹈矩,更不会一直被996束缚手脚,驱动这群难搞的人不是一件容易的事,需要站在开发者的视角去理解他们的工作和乐趣,然后共创出能够执行、能够激励、能够数字化的方案,这是我们Worktile在试图努力的方向,也是我们自己献给自己工程师们的礼物。

欢迎你贡献你们团队的经验,私信我,或者留言,咱们看看还有什么更好的办法,解放天下程序员。

本文作者:Worktile CEO anytao

文章来源:Worktile官方博客

欢迎访问交流更多关于技术及协作的问题。

文章转载请注明出处。

百人研发团队的难题:研发管理、绩效考核、组织文化和OKR的更多相关文章

  1. 如何使用Git提高研发团队工作效率?

    为什么使用Git 随着互联网时代的来临与发展,尤其分布式开发的大力引入,对于开发工程师来说,代码管理变成了头等难题.10多个人或者更多的成员的研发团队如何管理同一份代码,异地办公如何跟同事有效的维护同 ...

  2. 互联网公司员工职级、研发效能度量、OKR与绩效考核

    今天要写这篇文章,来自最近有两个点触动了我.第一个触动点是奈飞(netflix)做出了一个巨大动作<"不搞职级.人人平等" 25 年后行不通了?Netflix 破天荒引入细分 ...

  3. Atitit.研发团队与公司绩效管理的原理概论的attilax总结

    Atitit.研发团队与公司绩效管理的原理概论的attilax总结 1. 四个理念 1 1.1. 绩效管理的三个目的.四个环节.五个关键2 1.2. 绩效目标smart2 2. 考核对象2 3. 绩效 ...

  4. Atitit.研发团队的管理原则---立长不立贤与按资排辈原则

    Atitit.研发团队的管理原则---立长不立贤与按资排辈原则 1. 组织任命原则概述1 2. 历史的角度看,大部分组织使用的立长不立贤原则1 3. 论资排辈 立长不立贤原则1 3.1. 资格和辈分是 ...

  5. 轻量级的内部测试过程r \\ u0026研发团队

    对于一个r \\ u0026研发团队的目的,标准化的工作流程资产不可或缺的一部分,特别是对于初创的r \\ u0026研发团队方面.很多r \\ u0026研发管理是不够完整.如何理解的研发团队中的各 ...

  6. 是时候给大家介绍 Spring Boot/Cloud 背后豪华的研发团队了。

    看了 Pivotal 公司的发展历史,这尼玛就是一场商业大片呀. 我们刚开始学习 Spring Boot 的时候肯定都会看到这么一句话: Spring Boot 是由 Pivotal 团队提供的全新框 ...

  7. 产品研发团队如何融合OKR与Scrum敏捷开发?

    「 OKR 」现在非常的火爆,很多公司都在使用,不仅国外的 Google.英特尔等大公司在用,国内的一线知名互联网企业今日头条和一些创业团队也都在使用. 那为什么「 OKR 」这么受欢迎呢,因为把它可 ...

  8. 中小型研发团队架构实践六:如何用好消息队列RabbitMQ?

    一.写在前面 使用过分布式中间件的人都知道,程序员使用起来并不复杂,常用的客户端 API 就那么几个,比我们日常编写程序时用到的 API 要少得多.但是分布式中间件在中小研发团队中使用得并不多,为什么 ...

  9. 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问

    中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...

随机推荐

  1. if ( ! defined('BASEPATH')) exit('No direct script access allowed')的作用

    在看源代码时,发现codeigniter框架的控制器中,总是加上这样一段话: if(!defined('BASEPATH'))exit('No direct script access allowed ...

  2. google镜像《转》

    最新谷歌镜像列表 https://jsproxy-demo.ml 谷歌镜像F1http://go.yuxuantech.com 谷歌镜像F1,非SSLhttps://www.siwa88.net 谷歌 ...

  3. Javascript中的String.format方法实现

    <script type='text/javascript'> String.format = function() { var s = arguments[0]; for (var i ...

  4. flutter 打开应用的闪屏动画

    import 'package:flutter/material.dart'; import 'package:flutter_app/pages/SplashScreen.dart'; void m ...

  5. flutter DataTable数据表格

    数据表显示原始数据集.它们通常出现在桌面企业产品中.DataTable Widget实现这个组件 文档:https://api.flutter.dev/flutter/material/DataTab ...

  6. Linux记录-SVN+Jenkins+jdk+maven自动化集成部署

    1.svn部署 yum -y install subversion svnserve --version 查看版本 mkdir -p /usr/app/svn svnadmin create /usr ...

  7. pandas绘制矩阵散点图(scatter_matrix)的方法

    以 sklearn的iris样本为数据集 import matplotlib.pyplot as plt from scipy import sparse import numpy as np imp ...

  8. DECODE函数和CASE WHEN 比较

    http://blog.csdn.net/zhangbingtao2011/article/details/51384393 一,DECODE函数 其基本语法为: DECODE(value, if1, ...

  9. 关于Image模块的调色板

    参考:https://blog.csdn.net/zhangziju/article/details/79123275 https://blog.csdn.net/qq_21239003/articl ...

  10. LODOP计算结果值的合计

    LODOP中可以通过表达式等方式,计算结果并显示在LODOP预览打印的表格里,计算的是table中本来存在的数据,可以用tindex指定合计哪一列(相关博文:)那一列的数值是table中实际存在的,如 ...