记一次WMS的系统改造(3)— 行进中的复盘
行进中的波折
革新总会面对一些阻力和风险,一种新的观念、一种新的模式要来替代既有的产品,从来都不是一件简单的事,在WMS改造这件事上我们一开始就提出两种概念货物驱动和任务驱动,并找到一个标杆产品Slack就是为了建立心理上的信任感,并从侧面证明这件事不是一件纯新的模式,提供成功案例来降低阻力,但在实际落地的时候还是没有多么顺利。
惯性的强大力量
有时候大家不支持和反对,并不是真的不支持和反对,而是因为习惯某一种模式和状态,而恰恰新的设计和他熟悉的不同。
习惯就意味着第一时间出现在脑中的就是那个样子,所以很难想象出还有其他的可能性,也没有办法接受其他的可能性,这也就是所谓的想象力比较匮乏吧。
在做这一版WMS的过程中,首先出现的问题是,产品经理的设计拉不齐。说完设计的方向和原则后,大家一块做了一个功能的设计用于对齐设计理念,然分别去做了不同功能的设计,在阶段汇总时立即就发现,绝大多数人的设计都没有做到明显的体验改善。
当时发现这种情况后,大家坐在一起一页一页的复盘每个功能每个点的。里面其实包含了几种情况
- 思路上不自觉的、很自然的就转回原来的设计思路上
- 碰见设计样板中没有提供,不能照抄的功能点,不自觉的用原来的模式进行设计,不能领会新的设计的风格要点
- 遇到苦难的流程,自动切换原来的模式
- 设计的负责人,面对现实的各种细节困境并不能坚定的执行设计思路
面对这样的情况,其实我们采用了两种办法 - 一遍又一遍的高频开设计评审会,让大家高频的对齐设计
- 打破成本的幻想,绝不接受已经设计成这样了、已经做了这么多了、时间太紧了等理由,不合理的设计必须重新设计
三版设计之后(大致1周多的时间),再看总体的设计就很有眼前一亮的感觉了。不过没想到的是最后给UED人员时还有一次反复,因为他们不理解生产类的软件系统的设计要点,包含的特别放大的部分和特别明确的分区,经过UED人员后反而都弱化了,所以在效果图出来后还要做一轮调整。
除了UI设计的问题,还有业务架构设计的问题。
传统业务系统的三个问题
UI设计进行中的同时我们又复盘了一遍即有系统的所有菜单,结果从中发现了一个具体的问题。
纵观整个WMS,由三个部分功能组成:
- 业务主流程
- 操作容错/运营容错
- 系统容错
业务主流程,为仓储而设计的主要业务操作节点,业务主流程一般由关键节点和附属节点组成,比如仓储里面有个关键的业务节点叫做“上架”,附属的节点就可能有很多,比如储位推荐、路径推荐、任务分配等等
操作容错/运营容错,生产辅助的软件是一个强人员属性的软件,软件的基础功能就是指导和记录人员的生产动作。不管操作员如何仔细,人员操作在一个比较长的时间范围和比较多的人数范围内,错误都是不可避免的,操作错误需要由系统来提供补救的功能。
系统容错,WMS往往使用环境的条件都不会太好,远离IDC,远离闹市,网络条件很差;服务器和终端的硬件条件往往也很差;而且软件开发本身也不能完全避免BUG的产生;但是因为生产辅助软件的特殊性,每一个软硬件、网络环境等等不可预知因素产生的异常,都会影响到具体的货物,所以一般也会提供一些(或很多)业务工具来进行异常后的生产流畅,确保货物生产不会因为软件原因而无法进行。
即有的系统中,这三部分是混合在一起的,这属于顶层设计问题,新的设计中最开始只考虑了单功能或功能流的使用体验优化,现在就要将重构顶层设计考虑进来了。
业务主流程是正常的系统节点,系统应该围绕着这部分功能,将附属的节点巧妙的融合进去,然后把绝大部分操作容错和系统容错用技术手段处理掉,确实需要人工参与的,需要很慎重的设计一个异常流程,且不能散列放置要让它与正常流程形成闭环。
最终我们设计的方案是 - 运营容错,因为涉及一个系统的动与静的问题,所以要单独拎出来,做一个新的技术方案处理。
::(系统的动与静会单写一篇) 系统容错,尽量让系统自主处理,如非阻塞不设计人工干预流程。
顶层设计的重要性
开始仅仅是想改善一下仓储人员的使用体验,从UI的优化开始一直推导到设计的规范,再发现运营容错的技术方案系统的动与静,还有系统容错软件自动化处理(可能会从此开端WMS的智能化)。
这里我们有一个体悟,一个软件的顶层设计是极其重要的,点线面从来也不是单独存在。后续我想我们部门每个软件都会有一个业务架构师,这么一个人对整个软件的研发太过重要了,他可能不是专职的但岗位职责一定要明确。
下一篇离题一下,写我们在另一套软件上面的优化成果
『2018年12月24日 广州白云』
记一次WMS的系统改造(3)— 行进中的复盘的更多相关文章
- 记一次WMS的系统改造(1)-分析问题
海外落地中的困境 目前面临主要的问题是"人",仓储系统主要辅助仓储人员进行生产,所以人变了其实一切就都已经变了,系统在海外面临最大的问题就是人变了. 这套软件是在国内的运营体系 ...
- 记一次WMS的系统改造(2)-敲定方案
既定改造方案 基于上一篇分析出的种种问题,我们将库房人员的系统操作划分为两大类. 第一类为货物驱动的操作,这类操作主要随着货物而前进,人员不看或者看软件的次数比较少,更多是对货物的状态进行系统上的确认 ...
- 将Windows7系统改造为Linux(Centos7)系统
作为一个程序员,居然一次都没有安装过系统,果断被嘲笑了一番. 没办法,突然BOSS分配任务,将一台服务器的电脑从windos7改为Linux系统,一脸懵逼. 下面记录一下改造过程. 将Windows7 ...
- 描述了say_hello函数的具体内容,调用zend_printf系统函数在php中打印字符串
下载一个php的源代码包,这里使用的是php 4.0.5版,解压后会看到php的根目录下会有README.EXT_SKEL这样一个文件,打开详细阅读了一下,发现了一个非常好用的工具,这个工具可以帮你构 ...
- Android系统在新进程中启动自定义服务过程(startService)的原理分析
在编写Android应用程序时,我们一般将一些计算型的逻辑放在一个独立的进程来处理,这样主进程仍然可以流畅地响应界面事件,提高用户体验.Android系统为我们提供了一个Service类,我们可以实现 ...
- 安装WP8 SDK出现“根据当前系统时钟或签名文件中的时间戳验证时要求的证书不在有效期内”的解决办法
今天重装系统了,在安装WP8 SDK时,安装了一小部分就提示“根据当前系统时钟或签名文件中的时间戳验证时要求的证书不在有效期内”的错误. 根据错误提示,貌似跟时间有关,百度了下.果真.把系统时间往前调 ...
- OA系统在实际应用中可发挥出的协同应用价值
OA软件引进国内已有二十多年,早期的OA软件更多地是扮演一个"文秘"的角色,只进行一些基本的行政事务处理,创造的价值不大.但随着OA软件理论和技术的日趋成熟,OA软件摆脱了原有的局 ...
- 安装wp8sdk 当前系统时钟或签名文件中的时间戳验证时要求的证书不在有效期内。
安装wp8sdk 当前系统时钟或签名文件中的时间戳验证时要求的证书不在有效期内. [1404:0090][2015-06-12T08:00:53]: Error 0x800b0101: Failed ...
- Linux系统下 MYSQL数据库中的数据库文件在本机内迁移 (需暂停服务的方式)
Linux系统下 MYSQL数据库中的数据库文件在本机内迁移 本机采用Ubuntu16.04系统,tar方式安装MySQL5.7.21 数据库安装文件夹为 /home/devil/mysql 现 ...
随机推荐
- 洛谷P2430 严酷的训练
第一眼看这道题...啊哈,啥??? 仔细看一看,发现:诶, 这不是01背包吗? 两人水平值的比值*老王做题用时 可以算出WKY做每道题的用时. 那么每道题的p就可以转换成费用c[i], 价值q就是w[ ...
- cocos的Director、Scence、Layer(一)---摘自于官方文档
基本结构图(重要) Director: 有那些作用? OpenGL ES的初始化,场景的转换,游戏暂停继续的控制,世界坐标和GL坐标之间的切换,对节点(游戏元素)的控制,游戏数据的保存调用,屏幕尺寸的 ...
- C++string类型转换为C数组
#include <string> #include <iostream> using namespace std; int main(){ string str; str.a ...
- (五)我的JavaScript系列:JavaScript的糟粕
泪眼问花花不语,乱红飞过秋千去. JavaScript的糟粕 JavaScript语言是一门集精华与糟粕于一体的语言.在JavaScript: the good parts中,便集中讨论了关于精华与糟 ...
- 【Troubleshooting Case】Exchange Server 组件状态应用排错?
在Exchange 2013中,引入了“服务器组件状态”的概念.服务器组件状态从运行环境的角度提供对组成Exchange Server的组件的状态的精细控制. 日常排错时,常常会把Exchange 服 ...
- 数组Array和字符串String的indexOf方法,以及ES7(ES2016)中新增的Array.prototype.includes方法
前言 我们在判断某一个字符是否存在于一个字符串中或者某一个值是否存在于一个数组中时,ES7之前我们需要使用indexOf,ES7引入了新的方法includes 语法 数组:Array.inexOf(s ...
- jsp跳转标签<jsp:forward>
forward.jsp <%@ page language="java" contentType="text/html; charset=utf-8" p ...
- fpga Verilog hdl 按键消抖 部分程序讲解
module debounce(clk_in,rst_in,key_in,key_pulse,key_state); input clk_in;//system clock input rst_in; ...
- UOJ #205/BZOJ 4585 【APIO2016】Fireworks 可并堆+凸包优化Dp
4585: [Apio2016]烟火表演 Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 115 Solved: 79[Submit][Status] ...
- java.lang.ClassCastException: com.ch.hibernate.Student_$$_javassist_0 cannot be cast to javassist.util.proxy.Proxy
利用query动态查询时,报错 java.lang.ClassCastException: com.ch.hibernate.Student_$$_javassist_0 cannot be cast ...