心理基础
大脑能同时思考的东西有限,绝大多数靠短视的潜意识思考和决策
认识能力
抽象(归纳):从现象到结论
警惕:片面(自利、单因素、关联、短期);环境注入(学校、家庭、媒体)、个人经历
逻辑(演绎):从条件到目标
警惕:忽视其他条件(握着自己的锤子,看到的都是钉子)
记忆
情感体系
本我:生理舒适感
自我:安全感、集体归属感、政治认同感、自信感、名利感、美感
超我:遵守原则得到豁达感、坚持愿景得到充实感、感召知己避免孤独感
行为驱动
本我:精力(体力、脑力;劳逸结合)、情绪(好逸恶劳、知难而退)
自我:情感(类别、强度)、环境与惯性(贪婪、沉迷)
超我:引导自我与本我、创造出现时机、正面情绪反馈
易犯错误:冲动理解、短视计划、野蛮执行
性格优化
思维方法
抽象
素材:经历,主动阅历,被动教育
分层:降低复杂度,面向抽象接口
联想:发散抽象各种性质与相似关联(知其所以然、理解错误的做法),具有双面性
逻辑
建库:形成知识体系
主次:信息关联程度的重要、次要、不相关
泛型:反证、排除、谓词、正反向推理
比喻:化未知为已知,化抽象为形象,例如UML
心理:通用任务过程,处事本质(人与外界、思维与行动)
记忆
存档:任务日志
便签:思绪、临时信息
价值原则
幸福感:从事感兴趣的工作,丰富和平衡的消遣,适应环境(承担责任与拥有权利)
人与人:诚实、尊重、合作(权利与责任)、友爱
人与物:知足常乐
执行事务
目标(做什么)
透视本质:看清本质的需求和本质的服务
判断价值:听从内心深处的渴望,要事第一
计划(怎么做)
设计方案:可行性分析,原型实验
划分阶段:逐步消除风险(沟通、复杂、抽象、新事物)
划分模块:降低思维难度,将问题分块分层分工,依赖抽象接口
划分任务:按成员能力和意愿分解分配任务,讨论完成时间,约束并行制约点
执行(做得好)
进度控制:每日反馈,沟通协调,风险预警与计划变更
选择模板:明确执行过程的指导(步骤与大纲)
设计节奏:专注,反思(跳出定势),休息
l 创造环境:选择清静、单调的环境,设置免打扰
l 划分时段:自我专注1-2小时,跳出自我,超我反思感悟10-30分钟
l 难点预警:分时段多次设计和审核,考虑多种方案和全面性,网络资源、环境资源
l 场景预警:警惕与问题逻辑、环境习惯、认知过程(例如开头难)相关的常见缺陷
l 状态预警:当情绪起伏、精力不足,暂时搁置、睡觉
事务模板
日常
遇到新问题:警惕片面与冲动
改变习惯:从认识开始,知难而不退,“诱使”或“要挟”情绪大脑
学习
建库:问题、结构视图、场景-方案模板-例子、思考(关键字、概要、本质、原则、诞生过程、领域内其他工具)
来源:以经典书籍为基础,其他途径为辅助;重视基础的心理学与思维知识
过滤:缓存敏感信息,仅留下重要或紧急的
读书:提出问题与目标,划分阶段目标,明确理解程度,创造环境,周期性回顾与讨论
软件开发
项目管理、开发步骤
项目管理
总目标:软件的逻辑映射是模糊的和复杂的,所以需要不断的沟通和测试来探索和修正,开发人员和客户之间、开发团队内部、个人思考过程,都必须围绕简洁的沟通和频繁的测试。
企业文化
目标:站在客户的角度开发和经营产品、奖罚分明激励员工;通过深入沟通创造凝聚力、通过不断创新实现发展
原则:严谨务实、积极进取
方案:明确愿景、认识能力、分解目标、设计流程、衡量绩效
警惕:在封闭行业中盲目认为产品质量好;没有进取氛围,无法通过不断创新来提高
迭代产品
目标:宏观上逐步消除风险
方案:
l 风险识别:需求理解不准确,模块设计不独立;流程控制不严谨,质量检测不精确
l 阶段规划:从原型产品到最终产品,从核心功能到扩展功能,从功能可用到功能好用
l 进度监测:统计全局、阶段、个人的速度与状态,以当前速度推测和调整
警惕:缺乏风险意识,凭感觉制定计划;对质量缺乏准确控制,无法把握进度
设计流程
目标:建立职责明确、并行高效、结构稳定的团队合作交互流程与平台
方案:
l 衡量能力:责任感、悟性、合作、专注、知识库
l 划分角色:客户、产品经理、开发、测试、售后服务
l 流程环节:划分、分配、执行、审核
l 开发步骤:见下
l 业务事件:查看、提交;提问、批注、求助、分享、讨论、重构、总结、登记工时
警惕:分配时标准不清晰,没有职责交叉
执行平台
目标:设计核心流程的公司视图、团队视图、个人视图
方案:
l 公司视图:项目概览
n 立项:透视问题、设计解决方案、设计核心需求、分析可行性、预测实现风险
n 规划:划分阶段,奖罚标准
n 状态:当前阶段,风险
l 团队视图:里程碑
n 划分任务:分解任务,分配任务,制定任务执行规范,提供模板
n 查看产品:版本、指标、目标、系统与模块任务(具体的产品设计)
n 查看过程:任务流程状态、任务执行阶段、触发事件
l 个人视图:任务
n 任务:来源、输入、输出、规划(步骤、时间、模板)、状态
n 执行:时段、计划、演绎、反思,部署新计划、结果
n 领悟:思绪、知识库
警惕:仅有缺陷管理、周报的平台,缺少其他流程的平台,缺少整体展示各视图的平台
开发步骤
总目标:通过层次分解从想法到产品的复杂度
总方案:上层决定下层,下层提供可行性约束,层次以抽象接口关联
警惕:
l 各步骤职责的核心理解不准确,衔接不紧密;寄望通过文档模板解决问题
l 缺少从人的思维过程出发看问题,务实总结、持续优化
设计方案
目标:面向公司技术与客户业务流程,为客户创造价值
方案:以业务流程为基础,透视本质的技术、需求、服务
l 捕捉动机:发现问题场景,描述当前业务流程、期望目标与标准
l 分析商机:分析用户需求、用户数量、用户投资意向,分析技术可行性
l 设计方案:细分用户,设计新业务流程、定义产品功能,分析投资与回报
l 逻辑映射:
n 业务规则:增强现实(集群通信、办公自动化等等)
n 应用模型:输入输出(人机、机机)、运算、存储、传播
n 运行环境:硬件,操作系统(任务进程、消息交互、API)
n 开发平台:CLR,C#、Javascript
n 组件资源:平台类库、最佳实践、应用组件(界面、存储、通信)
n 软件设计:原则、模式、框架
警惕:
l 闭门造车,面向开发人员设计产品,而不是面向最终客户
l 仅调研客户中的领导角色
分析需求
目标:面向软件与软件边界,描述用例交互流程,关注逻辑全面、操作简洁
方案:心智模型(感知、认识、任务)、通用信息交互模型(请求响应、通知)
l 制作交互原型:作为评审依据,降低沟通误差
l 设计测试数据:作为用例的操作说明和验收标准
警惕:
l 没有频繁的迭代反馈
设计架构
目标:面向程序员、用例,用抽象分解复杂度,关注逐步抽象、控制风险、重用资源
方案:抽象--分块、分层、分类、比喻,资源--库、框架、模板、规范
l 分析用例接口:边界层、服务层、业务层,以时序图为主,类图、状态图辅助,编写边界或准边界接口的测试代码
l 概览接口关联:包含、继承
l 分析风险接口:成员多而深、流程步骤多、算法抽象、资源陌生
l 选择实现框架:估算复杂度、选择框架&通用组件&工具、组织代码、打造模板
实现代码
目标:面向程序员、接口、框架,映射业务逻辑到代码,注重代码路径的所有可能性
方案:映射--数据结构、算法,平台--语言、运行时、操作系统,路径--状态机
l 详细设计与编码
n 按序思维:从上层接口到下层接口,从接口到实现,从主要代码到次要代码
n 透视规范:母语命名、首字母识别用途、通用场景最佳实践
l 调试与输出日志
n 需求:边界的输入输出,包括异常
n 设计:复杂设计的结构(类、成员)
n 实现:异常传播涉及的代码文件、行号
l 代码审查
n 过滤常见异常表:资源共享导致的意外访问顺序;内存泄露;边界非法输入
n 检测代码覆盖率:通过单元测试框架
n 分析可能异常栈:每行语句的异常列表(无需处理/已处理/向外暴露)(不实现)
l 定位异常
n 信息来源:观察到的现象,程序日志,系统日志,开发工具断点
n 分析日志:定位时间(突出异常),定位功能、定位设计、定位代码
n 挖掘异常:验证测试用例设计的全面性,分析并归纳到常见异常表
发现缺陷
目标:面向软件与测试人员、最终用户,验收产品功能与操作体验
方案:
l 设计用例:设计需求分析用例每步骤的输入输出数据
l 执行测试:配置环境(专属工具)、记录日志、记录问题发生时快照、重现问题
l 跟踪测试:提交、验证、回归
警惕:
l 测试人员未参与到需求分析,开发和测试人员依赖的用例没有统一
l 可能需要面向测试人员开发测试和部署工具
部署运营
目标:
l 售前客服:受理用户咨询,介绍公司与产品,关注产品特性
l 工程人员:安装、升级、维护、获取故障反馈,关注简洁快速完成任务
l 售后客服:受理用户咨询、用户反馈,关注产品易用,反馈快捷
l 产品经理:推广产品,统计用户量、使用频率、反馈,关注用户喜好程度,升级产品
警惕:
l 可能需要面向工程人员开发测试和部署工具
l 被动客服,不主动深入调研使用反馈,积极完善