敏捷开发一千零一问系列之十七:长期受制于强势客户怎么办?(上)

物联网开发笔记(16)- 使用Wokwi仿真micropython on ESP32开发板实现跑马灯(4个LED) 使用Wokwi仿真micropython on ESP32开发板实现跑马灯(4个LED) 阅读详情

这是敏捷开发一千零一问系列的第十七篇。(在这里提问,之一,之二,之三,问题总目录)

这个是在一次面向电信行业供应商的公开课上提出的问题,被评为本场最佳问题。

对于这类“供应商”而言,一方面业务根深蒂固,一般固化在某些专有领域因此很有必要产品化;另一方面又受制于客户总是来回改动,很难有自己的自主权。两者的矛盾,可以通过逐步推广敏捷开发而解开,也需要大量的周边技术、管理、市场手段来辅助。

甚至应该反过来说,敏捷开发知识辅助这些技术、管理、市场手段的执行。

问题

长期受制于强势客户怎么办?

方案

多数情况下,受制于客户会导致开发活动长期以“无法复用的项目”存在,而不是以“一本万利的产品”存在。所以本文会更多地说说项目开发,而非产品研发,但会循着项目产品化的道路走,因为这个几乎是项目型公司的“只此一条”的出路。

老规矩,前面的方案最简单,几乎立刻就可以开始执行;而后面的方案才是终极之道,虽然很难。

方案1:从技术上把项目产品化

产品化是个大话题,投入和风险都很大,没有老板拍板,不是谁想做谁就能做的。
方案1说的“从技术上”,就是连技术人员都能做主,不用问老板“我们要产品化吗”。具体手段,就是把项目中可复用的部分,抽出来做成可复用组件使用。
很多人认为“做产品可以谈复用,但做项目很难,因为每个项目都不一样”,其实不然。在产品开发中,由于所有功能都只会做一次,其实很难在高层次上做复用;反而是项目,倒有可能在多个客户处做很多相似的乃至相同的功能,更应该复用一下。

如果一个项目只会在一个客户那卖出一次……说实话,公司正面临险境,不是任何方法能轻易解救的。
复用分为多个层次,为了更生动一点,这里大致说一下《火星人》中的复用层次,基本上由浅入深。

1.1 纯技术层次,大约1000行代码
1.1.1 MFCUI(Martian Foundation Class UI),处理Web上常见的图片、链接、图片链接、Ajax调用、弹出菜单等内容。
1.1.2 MFCRepository/MFCCaches,增加任何表后,只需1行代码,就能处理数据库表的增、删、改、查和表级别的缓存;缓存会自动和数据库同步。
1.1.3 ……
1.2 准业务模型层面,大约3000行代码
1.2.1 Items库,用于处理任何以父子关联层次存在的数据(产品线-产品-版本-发布,公司-部门-团队-小组,子系统-模块-业务数据-业务操作-增强,任何目录……的底层都是它,大约有10种树状数据)
1.2.2 UDC库(User Defined Column),不用编写任何代码,就能为任何Item增加自定义字段(大约有10种数据类型,各自的显示和编辑界面也都是预置好的)。
1.2.3 ……
1.3 通用业务层面,大约3000行代码(方案2中详解)
1.3.1 MFC范围内的,用于处理用户,角色,权限,分配任务、工作量,日历,团队,个人中心,通知……这些任何产品都需要的功能。
1.3.2 DLC范围(Downloadrable Content可下载内容)的,处理插件类内容。
1.3.3 ……
1.4 专用业务层面,大约1000行
1.4.1 处理用户故事、迭代、意向表、产品这些只有敏捷开发才具备的业务。

实际统计数据中,整个火星人有89%的代码处于可复用库范围内,剩下的才是只能用在我们看到的“敏捷开发管理工具”中的代码。
这样做的好处也是显而易见的,尽管这么多库只在“1000”行业务代码中被“复用”过,但火星人的代码效率还是达到了业界的3倍左右(注:业界每功能点对应50~75行C#代码,火星人是20行不到),生产效率大约是业界的2~3倍(注:业界生产400功能点大约需要500人天,火星人是200不到)。随着日后业务增加,复用次数增加,这一差距还会继续扩大。
所以如果是人年级别以上的项目,抛开是否“产品化”不谈,仅仅是复用就能产生巨大的收益。
复用库可以很快搭建下一个项目,而无需一切从头开始,可以认为是一个“非官方产品”。
这个方案,在本质上是有风险要平衡的,因为“可复用”库的成本很高,远远高于一次性使用的代码,所以我自己有个习惯:第一次使用的代码最多只封装到函数级别,能支撑第一次能“干净地”使用即可,绝不多考虑日后的参数是否会多样化,是否会增加方法之类的;之后用到第二次再说。

方案2:提炼半成品

即使完全被客户牵着鼻子走,也会发现尽管每个项目的主要业务不同,但某些功能仍然可以被大块地、完整地封装起来,比如前面提到的1.3通用业务层面,也就是:

1.3 通用业务层面,包括模型和界面,大约3000行代码(方案2中详解)
1.3.1 MFC范围内的,用于处理用户,角色,权限,分配任务、工作量,日历,团队,个人中心,通知……这些任何产品都需要的功能。
1.3.2 DLC范围(Downloadrable Content可下载内容)的,处理插件类内容。
1.3.3 ……

如果把火星人中敏捷开发的那1000行代码删除,一个用户仍然可以登录、加入部门或团队、查看自己的工作空间、分配任务(虽然无任务可分)等,俨然是一个通用的原型。
其实,在游戏界这已经不是新技术了,多数大型的游戏公司都发现游戏里边的登录、人物、商店、买卖、帮会、服装……之类的系统都大同小异,因此早就开始搭建自己的半成品了。其中有一家公司做得“太好了”,以至于有些玩家批评他们几个游戏“看上去差不多”。
另外一家公司也在搭建他们的半成品游戏,目的以便缩短新游戏的开发周期,让他们一上来就能开发核心玩法,而不是从头开始。

分析:再谈共振(一)


很多程序员都梦想有一天老板一声令下,大家2年不卖东西,埋头开发一个自己心仪的产品,两年之后石破天惊,一家所向披靡的产品公司出现了。可惜,老板没眼光,所以你看,我现在还在这里接客户的一个一个电话改代码呢……
可复用库和产品化是一个思路的两个层面,如果一个人平时都不积累可复用的东西,却天天嚷嚷产品化,就是做白日梦。
因此,应该在自己能控制的范围内,先做好产品化的准备,如果准备充足了,老板发现用可复用库3个月后而不是2年就能搭建一个他也梦想过的产品,他就能下决心了。

本文所说的技术方法在一定程度上可以缓解变化的问题了,但是于下一篇提到的业务方法相比,就差得远了。

 

 

物联网开发笔记(15)- 使用Wokwi仿真micropython on ESP32开发板实现流水灯控制(可加减速) 使用Wokwi仿真micropython on ESP32开发板实现流水灯控制(可加减速) 阅读详情

相关推荐

ESP32 003 wokwi在线仿真进阶:多语言控制LED流水灯

本文详细介绍了如何在Wokwi在线仿真平台上使用ESP32实现多语言控制LED流水灯,涵盖C语言(ESP-IDF)、Arduino、MicroPython和Rust四种编程语言的实现方法。通过对比各语言的代码示例和性能特点,帮助开发者快速掌握ESP32仿真技术,提升物联网项目开发效率。

weixin_29159613的博客 562

敏捷开发一千零一问系列之十八:长期受制于强势客户怎么办?(下)

这是敏捷开发一千零一问系列的第十七篇。(在这里提问,之一,之二,之三,问题总目录)方案3:培养产品经理,想到客户前面被客户牵着鼻子走本来不是坏事,还少了做需求分析的工作,但关键是客户一会牵着向东,一会牵着向西,好像自己也没有主张的样子,这就令开发团队郁闷了。这时候,无论是不是产品化了,都应该培养一个人,看到客户前面去,看他自己是不是都迷路了。客户“迷路”大体有两种情况,一种是有路但自己不...

diaogan4202的博客 167

告别硬件!用Wokwi在线模拟ESP32点灯,5分钟搞定开发环境搭建

本文介绍如何使用Wokwi在线模拟器快速搭建ESP32开发环境,5分钟内完成点灯实验。无需硬件即可体验GPIO控制、PWM调光等核心功能,特别适合物联网开发初学者和快速原型验证。Wokwi的零成本、全功能模拟特性让嵌入式开发变得前所未有的简单高效。

weixin_42567497的博客 495

长期受制于强势客户怎么办?[20120525]

文章来源地址:http://blog.youkuaiyun.com/cheny_com/article/details/7559913 这是敏捷开发一千零一问系列的第十七篇。(在这里提问,之一,之二,之三,问题总目录) 这个是在一次面向电信行业供应商的公开课上提出的问题,被评为本场最佳问题。 对于这类“供应商”而言,一方面业务根深蒂固,一般固化在某些专有领域因此很有必要产品化;另一方面又受制于客户总是来

easywill2010的专栏 1759

Wokwi模拟器实现20个LED跑马灯:Arduino GPIO控制与函数化编程实战

GPIO(通用输入输出)控制是嵌入式开发与物联网设备的基础,它允许微控制器通过引脚与LED、传感器等外部元件进行数字信号交互。其核心原理是通过设置引脚为输出模式,并输出高/低电平来控制外围电路状态。掌握GPIO编程对于理解硬件交互、时序控制至关重要,是学习Arduino、ESP32等平台的第一步。通过函数化封装,可以将复杂的控制逻辑模块化,提高代码的可读性、可维护性和复用性,这是从简单脚本迈向工程化开发的关键。本文以经典的LED跑马灯项目为例,在Wokwi在线Arduino模拟器中,演示如何利用GPIO控制

weixin_33964987的博客 224

物联网开发笔记(7)- 使用Wokwi仿真ESP32开发板实现LED灯点亮、按钮使用

再看右边,绿色的按钮是运行,加号按钮可以添加元器件到我们的开发板中,三个点按钮是其他的一些方便使用的功能。我们在连接是LED的正极并不一定连接在GPIO上,负极连接在GND上。这里我们在LED灯正极(弯脚的那个脚是正极)接一个470欧姆的电阻,然后电阻的另一端连叫道GPIO25口上(D25脚),然后LED的负极接到开发板的GND上。仔细观察会发现,效果反过来了,我们把等待的时间调整一下,效果更明显:我们代码期望是亮灯500毫秒,结果实际上是灭灯500毫秒。这样就可以看到,输出结果和代码是对应的。

2401_87613081的博客 989

Arduino学习-Blink,流水呼吸灯

Arduino入门-Blink,流水呼吸灯,数码管显示

Sleepycat2002的博客 1589

Arduino Mega 2560 Wokwi实战案例全解析

本文全面解析Arduino Mega 2560在Wokwi仿真平台上的实战应用,涵盖LED控制、传感器数据采集、通信协议及电机驱动等核心案例。通过Wokwi在线仿真,开发者无需硬件即可学习编程和电路设计,大幅降低学习门槛并提升开发效率,特别适合嵌入式系统初学者和教育场景。

wdx01234567的博客 260

基于MicroPython的ESP32控制LED灯闪烁设计方案的Wokwi仿真

2. 将LED灯的阴极(短引脚),串接220欧姆电阻,连接到ESP32的GND引脚。)选择ESP32开发板,添加一个LED灯,和一个220欧姆限流电阻。1. 将LED灯的阳极(长引脚)连接到ESP32的GPIO15引脚。led.value(1) #点亮LED。led.value(0) #熄灭LED。time.sleep(0.5) #等待0.5秒。time.sleep(0.5) #等待0.5秒。#循环控制LED亮、灭,实现闪烁效果。#初始化LED连接的GPIO引脚。

m0_46311182的博客 1190

Wokwi玩转ESP32:从点灯到PWM呼吸灯,一份避坑指南带你避开模拟器常见坑

本文详细介绍了如何使用Wokwi模拟器进行ESP32开发,从基础的点灯实验到PWM呼吸灯实现,提供了一份全面的避坑指南。文章重点解析了Wokwi开发环境的优势、常见问题及解决方案,帮助开发者高效完成嵌入式开发项目,特别适合新手和远程协作团队。

weixin_26897585的博客 452

【信息科学与工程学】【管理科学】第七十二篇 管理层相对基层员工的信息差/资源差/权力差/认知差03 总裁/副总裁

定义系统状态(如:全正常、1个单元故障、降级运行、完全故障),状态间转移率 λ(故障率)和 μ(修复率)构成转移强度矩阵 Q。其中 γ_k = (2π/λ) n_k d_k cosθ_k 为相位厚度,η_k = n_k / cosθ_k (TE波) 或 η_k = n_k cosθ_k (TM波) 为光学导纳,θ_k为层内入射角。用于在光刻机设计阶段评估各子系统(光源、光学、工件台、真空等)的可靠性,识别薄弱环节,计算系统整体可用性(Availability),指导冗余设计和维护策略制定。

weixin_49199313的博客 987

敏捷开发一千零一问系列之二:序言及解决问题的心法(无住)

无住 在般若敏捷系列中已经提过,包括不住于法,不住于空。 不住于法 就是不停留在一种固定的方法上。 如果把“敏捷”理解成一个名词,就会出现一个问题:什么是敏捷?又会扩展成Scrum是敏捷,还是XP是敏捷?RUP是不是敏捷?等等问题。 如果把“敏捷”理解成一个形容词,也就是“敏捷的开发方法”,大致能找到敏捷新的定义:敏捷是一种轻量级的开发方法。 如果把“敏捷”...

weixin_33724659的博客 161

群晖设置公网ipv6方式域名解析访问

群晖、IPV6、域名解析

爬山虎的博客 2万+

敏捷开发一千零一问系列之三十三:每天编码多少行?

这是敏捷开发一千零一问系列的第三十三篇。(在这里提问,之一,之二,之三,问题总目录)原问题来自http://blog.youkuaiyun.com/cheny_com/article/details/6594507#comments六楼,经读者同意,摘录如下:“一般而言,大致每天高手能编写100多行有效代码(按分号计数),新手会多一些但也不超过200(他们编写代码比较费)。” 从整年平均来说,这个数据是不是有

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 1万+

MATLAB联合Fluent优化仿真

matlab与fluent交互

keleke_的博客 4728

手把手教你用GEM-2多频电磁仪找地下管道(附真实数据图)

本文详细解析了使用GEM-2多频电磁仪精准定位地下管线的全流程,包括设备调试、频率选择、现场扫描技巧及数据解读。通过真实案例展示了如何应对复杂干扰环境,提升管线检测效率与准确性,特别适合市政工程和地下管线普查。

weixin_42565652的博客 398

敏捷开发一千零一问系列之一:序言及解决问题的心法(无我)

这是敏捷开发一千零一问系列的第一篇。(在这里提问,之一,之二,之三,问题总目录)也是般若敏捷系列第十篇。(之一,之二,之三,之四,之五,之六,之七,之八,之九,之十,之十一,之十二) 做敏捷开发时间长了,就感觉很多事情都理所当然,越发觉得“问题很可贵”,最近做培训的时候收集了一些问题,很多现场来不及解答,逐一发表在这里。如何解决一个问题知识多了自然可以解决问题,经历多了自然也可以积累经验,但是在一

陈勇的博客 - Scrum 敏捷开发培训咨询,绩效管理,团队管理,《火星人敏捷开发手册》 1万+

AMEsim柱塞泵的建模学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、为什么要对柱塞泵进行仿真?二、Amesim中柱塞泵的模型1.amesim中自己的定排量五柱塞的斜盘柱塞泵2.压力、流量仿真总结 前言 最近在学习Amesim进行柱塞泵的仿真学习,顺便在这里记录我的学习过程,这是我的初衷 提示:以下是本篇文章正文内容,下面案例可供参考 一、为什么要对柱塞泵进行仿真? 柱塞泵是功能和动力学比较复杂的流体机械。而在实际实验中,往往没有条件或者需要对柱塞泵做一些优化,所以需要我们利用仿真...

innocent_cft的博客 8185
上一篇: 敏捷开发一千零一问系列之十六:如何让开发人员学习产品?
下一篇: 敏捷开发一千零一问系列之十八:长期受制于强势客户怎么办?(下)
火星人陈勇
博客等级 码龄18年 4899粉丝 381原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值