跳到主要内容

与客户谈判

· 阅读需 9 分钟

在项目实施过程中,会在各个时间阶段有各种可能的事项要与客户进行沟通或者谈判,通常可能主要是下面几项:

  • 开发报价
  • 交付里程碑与时间进度
  • 系统的设计、架构、解决方案或技术实现方式
  • 需求范围变更
  • 日常工作的方式

需求范围变更,通常是这些事项中最主要的,也是对项目顺利交付影响最大的因素。

在与客户沟通谈判时,有一些原则、方式或方法可以遵循。

1. 定义明确的界限

在项目启动阶段要与客户对一些基础事项形成一致意见,例如:系统的功能目标、总体的里程碑计划、处理接受变更的流程、验收的标准、输出的交付物等。与客户达成一致,这样就有了一个基础的界限边界。

在与客户进行沟通时我们就有了一个这样的基础。如果客户要求更改,要参考这些文件。根据项目的目标、时间来评估。这不是对客户说不,而是引导客户理解所涉及的影响,双方一起来做权衡。

2. 了解客户需求,提供替代方案

可以通过提出开放式问题、积极倾听和总结客户的想法。仔细审查他们的要求、时间和预算,并澄清任何模棱两可或理解上的偏差。了解客户的需求将有助于使自己的建议与他们的期望保持一致,并向客户展示价值和可信度。

在对范围变更做出任何决定之前,评估它们对项目的影响。考虑这些变更将如何影响进度、资源和最终产品的质量。提议的变更是否与项目目标一致,是否值得额外的时间和精力。如果影响太大,可能需要找到一个折衷方案,在不过度资源投入的情况下满足项目目标。

面对迫在眉睫的最后期限,要确定任务的优先级。必须确定哪些功能或任务对项目的成功至关重要,哪些可以推迟或完全放弃。与客户一起根据任务的紧迫性和重要性对任务进行分类。这将指导我们就范围变更做出明智的决定。

当客户要求更改时,必须传达这将对项目时间进度和成本资源产生的影响。解释一个更改可能对项目的各个方面产生的连锁反应。使用清晰的非技术语言来阐明为什么更改可能需要额外的时间或预算。通过使后果具体化,客户更有可能理解额外资源或时间调整的必要性。

提供一个替代的方案,也许可以在系统上线以后的运行阶段再考虑逐步引入新的功能,也许那时的想法会跟现在不同。或者在产品的下一期开发中对其进行改进。与客户一块寻找可能的解决方案。

也许最终我们可以同意这些额外的变更工作,但要协商延长最后期限或额外付款来支付额外的工作。这期间是有非常多的谈判技巧可以运用(参见下面小节 5. 学习利用一些谈判技巧)。

3. 寻求客户高层利益相关者的支持

客户的高层利益相关者才是对项目具有决定权,要让高层利益相关者充分了解项目当前的情况,了解其真实的想法,并寻求支持。

4. 寻求商务支持

最后,也需要保持一定程度的灵活性。在软件项目管理中,变化通常是不可避免的。虽然管理范围变化很重要,但过于僵化会给客户关系带来不好的影响。

当处于僵局时,需要寻求商务支持,大量事实表明,事情在商务层面沟通时,仿佛进入了另一个维度,很多难题也有了解决办法。

5.学习利用一些谈判技巧

罗杰·道森(Roger Dawson)作为国际首席商业谈判大师,以其丰富的谈判经验和深刻的洞察力,创作了广受欢迎的谈判指导书籍《优势谈判》。这本书不仅在全球销量超过1000万册,而且被广泛应用于各种商业和日常谈判场合。

信息

本书有多个版本,最新的英文版
Secrets of Power Negotiating, 25th Anniversary Edition Roger Dawson 2021-10-01

中文版也有多个出版社的不同版本,百度云盘下载 PDF 中文版

《优势谈判》作者:(美)罗杰·道森,刘祥亚译 重庆出版社 2019-11-01

链接: https://pan.baidu.com/s/1rebh0PxY_HAARZQbV7VeLA 提取码: geq8

书中介绍了一些谈判技巧,以下是部分标题摘录:

开局谈判技巧

  • 开出高于预期的条件:强调在谈判开始时提出高于自己期望的条件,以争取更多的谈判空间。
  • 永远不要接受第一次报价:阐述为何不应立即接受对方的首次报价,并探讨如何有效应对。
  • 学会感到意外:通过表现出对对方条件的惊讶,来影响对方的谈判策略。
  • 避免对抗性谈判:倡导通过合作而非对抗的方式来解决分歧。
  • 不情愿的卖家和买家:利用“不情愿”的策略来增强自己的谈判地位。
  • 钳子策略:通过要求对方做出改变来逐步缩小双方的差距。

中场谈判技巧

  • 应对没有决定权的对手:识别并应对那些没有最终决策权的谈判对手。
  • 服务价值递减:讨论在谈判过程中逐步减少让步的价值。
  • 绝对不要折中:解释为何折中往往不是最佳解决方案,并探讨更有效的策略。
  • 应对僵局:提供解决谈判僵局的方法和技巧。
  • 应对困境:讨论在谈判中遇到困境时的应对策略。

终局谈判策略

  • 白脸—黑脸策略:分析并应对这种常见的谈判技巧。
  • 蚕食策略:在谈判即将结束时提出小要求,以逐步达到自己的目标。
  • 如何减少让步的幅度:探讨在谈判中如何以最小的让步换取最大的利益。
  • 收回条件:在必要时收回之前提出的条件,以重新掌握谈判的主动权。
  • 欣然接受:学会在适当的时候接受对方的条件,以达成双赢的谈判结果。

在 Kubernetes 集群中使用 MetalLB 作为负载均衡器

· 阅读需 3 分钟

在 Kubernetes 中不提供负载均衡的实现,网络负载均衡器的实现依赖于云厂商(阿里云、腾讯云、华为云、AWS、Azue 等),如果是自建集群,而不是选择这些公有云厂商提供的 Kubernetes ,在创建 Service 时,我们只能使用类型是 NodePort 和 ExternalIPs 的服务用做外部访问。

我们希望自建集群也能简单便捷的方式对集群外部暴露服务,MetalLB 这个项目正是为了解决这个问题。

先决条件

安装前有几个先决条件需要查看,特别是网络插件(CNI)的兼容性支持。

官网的安装文档 MetalLB Installation

安装

修改 kube-proxy 参数

kubectl edit configmap -n kube-system kube-proxy
提示

--proxy-mode ProxyMode 使用哪种代理模式:在 Linux 上可以是 'iptables'(默认)或 'ipvs'。 在 Windows 上唯一支持的值是 'kernelspace'。 如果配置文件由 --config 指定,则忽略此参数。

ipvs 参数含义可以参考:

  • IPVS vs. IPTables for kube-proxy in Kubernetes[3]
  • Comparing kube-proxy modes: iptables or IPVS?[4]
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"
ipvs:
strictARP: true

安装MetalLB

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml

查看命名空间下的组件都正常运行

kubectl get all -n metallb-system

alt text

定义要分配给负载均衡器服务的IP地址并配置 2 层通告。

sudo cat > metallb-config.yaml << EOF
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: first-pool
namespace: metallb-system
spec:
addresses:
- 10.10.0.150-10.10.0.200
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: example
namespace: metallb-system
EOF

kubectl apply -f metallb-config.yaml

测试

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --type=LoadBalancer --port=80

# 可以看到这里分配的地址是 10.10.0.150
kubectl get svc

curl http://10.10.0.150

alt text

参考

[1] 创建外部负载均衡器
[2] 组件工具 kube-proxy
[3] IPVS vs. IPTables for kube-proxy in Kubernetes
[4] Comparing kube-proxy modes: iptables or IPVS?