商业化的第一责任人:产品经理 or 销售?
第一种情况:Sales负责,这种情况下,销售负责人会大量拜访客户,而产品经理负责陪访、负责接需求。为了签前几个客户,销售同学不得不答应为客户做很多功能。这样做的结果是,我们会做出和市场上竞品很像的产品。
第二种情况:共同负责—— 产品的事情产品经理负责、销售的事情Sales负责。Sales在外面见客户,把需求带回来给产品经理;产品经理就是接需求的,在家自己拍脑子判断;最后每次发版后发现新版本根本不符合客户的需要。也有产品经理陪同Sales拜访客户频率很高,但如果没有明确的商业化责任人,不善言辞的产研同学与强势的销售同学往往不能达到良好协同:
要么是产品同学无条件让步,产品丧失前后一致的价值逻辑
要么是双方互相无法说服——到底是直接做这个客户要求的功能,还是设法引导客户采用业内更有效率的“最佳实践”?
第三种情况,由产品经理负责(推荐),只有这个产品的PM(Product Manager,产品经理)才有机会真正看清诸多客户要求背后的真正的需求、安排好各个功能上线的先后顺序,以及在产品设计、开发、测试、实施、服务各方面的资源分配。大家会有质疑:产品经理商务能力不行,签不到单子如何商业化?—— 其实不用“商务能力”签到的单子,才是质量更好的单子。早期能否找到的几个“对的”客户,决定了产品能否少走弯路。我带过规模很大的销售团队,所以见过大量签“错”的单子。Sales承诺了无法实现的价值、客户被我们Sales的执着打动而买单、客户看到产品宣传没考虑自身情况就冲动购买......这些都不是“对的”客户。此外,也可以找有业务管理能力的销售管理者辅助商业化负责人。但谁为主、谁为副,应该非常清晰。
对商业化负责人的要求:
热情、高投入和坚定
对目标客户的业务有深刻理解
有做SaaS产品的套路
善于独立思考
领导力
首先,热情靠激发。
其次,CEO们往往会纠结:应该找一个懂客户业务的,还是懂产品套路的人?我认为行业背景、对客户业务有深度理解和独特思考会更重要。产品套路可以学习、营销经验可以短期培养,但对目标客户业务的认知却是需要5年、8年的浸润才能形成的。商业化负责人可能每天都需要做几个、甚至十几个决策,如果Ta不能理解公司给出的抽象目标,往往就会跑偏。
第三,业务第一,管理为业务服务。所以管理能力在这个阶段也不是最重要的。但毕竟商业化需要一个小团队,负责人的领导力是必须具备的。小团队Leader的领导力也不复杂,简单讲就是:客观公正+勤于沟通,并不要求长袖善舞,能把大家团结起来为一个目标努力。
微服务带来的新问题:
自动化
可观测性:日志(ELK)、跟踪(Skywalking)、指标(Prometheus)
分布式问题:分布式事务、数据关联、幂等性
SOA与微服务:
SOA:整合不同异构系统,ESB 统一解决;基于配置
微服务:拆分系统,分而治之;约定大于配置
DDD:
DDD:指定微服务划分,方法论,熟悉业务再建模;统一语言(业务、技术),化繁为简
Selection 是一个强大的表达式语言功能,它让你通过从一个源集合的条目中进行选择,将其转化为另一个集合。
选择使用的语法是 .?[selectionExpression]
。它对集合进行过滤,并返回一个新的集合,其中包含原始元素的一个子集。
List<Inventor> list = (List<Inventor>) parser.parseExpression("members.?[nationality == 'Serbian']")
.getValue(societyContext);
安全导航操作符:
通常情况下,当你有一个对象的引用时,你可能需要在访问该对象的方法或属性之前验证它是否为空。为了避免这种情况,安全导航操作符返回null,而不是抛出一个异常。
ExpressionParser parser = new SpelExpressionParser();
EvaluationContext context = SimpleEvaluationContext.forReadOnlyDataBinding().build();
Inventor tesla = new Inventor("Nikola Tesla", "Serbian");
tesla.setPlaceOfBirth(new PlaceOfBirth("Smiljan"));
String city = parser.parseExpression("placeOfBirth?.city").getValue(context, tesla, String.class);
System.out.println(city); // Smiljan
tesla.setPlaceOfBirth(null);
city = parser.parseExpression("placeOfBirth?.city").getValue(context, tesla, String.class);
System.out.println(city); // null - does not throw NullPointerException!!!
埃尔维斯(Elvis)运算符:
String displayName = (name != null ? name : "Unknown");
// 埃尔维斯(Elvis)运算符
String name = parser.parseExpression("name?:'Unknown'").getValue(new Inventor(), String.class);
做新产品在功能方面应该有这样的三条原则:
1、完成客户业务场景的最小闭环(这里需要借鉴市场上的已有产品)
2、拥有自己的特色功能,形成差异化优势(最好能够与公司既有优势能力相关,而非单薄的功能)
3、逐渐形成上文说的“产品的灵魂”。只有想清楚我们的产品能提供怎样的独特价值、如何创新地帮客户解决问题,并且能长期坚持、取舍有度,产品才有灵魂。
概念:
技术实力 = 解决问题的能力。
技术要能解决具体问题才有价值。
问题复杂度决定技术实力的高度。
硬实力:
点:技术点,JDBC
线:技术线,一个业务功能的处理过程(相关技术点)
面:技术面,Java技术(多线程、JVM调优等)
体:技术体系,架构设计(编程语言、数据库、网络)
软实力:
发现问题能力(根本问题)
技术创新(造新轮子)
CommandLineRunner:用于实现项目启动之前,预加载数据。
详情:https://blog.csdn.net/ruben95001/article/details/78340700
#SpringBoot