蔡学镛:写SOP(标准作业程序)就是写程序
2008-02-27 12:38
260 查看
任何一家有制度的公司,都会定义「标准作业程序」(Standard Operating Procedure,SOP)。对麦当劳和统一企业等以服务见长的大企业来说,SOP是重要资产、公司经营的Know-How,影响产品与服务质量,只要SOP完备,就可以快速展店。
甚至,日前警方查获的诈骗集团也有SOP,该集团将诈骗手法详细记载成为诈骗执行手册。当诈骗集团也懂得蓝海策略(诈骗手法推陈出新)、知道长尾效应(对准特定小众族群进行诈骗也能获利),并充分运用SOP时,或许也正代表我们社会相当进步,已经进入所谓的知识经济的时代吧。
一般公司内部的运作,处处仰赖SOP。有的公司虽小,但SOP累积多年之后也是厚厚一大本。一般来说,SOP会告诉人员,要怎么做一件工作、处理一件事情、调用公司的资源……等。
这一切,是不是让热爱程序的你有所联想?
把公司看成一个计算机系统,有许多的资源(设备、材料、人员、线程、I/O),每个员工都是一个线程,柜台和仓储是I/O,负责数据的进出,其中,SOP扮演程序的角色,以有效的方式协调、处理、运用这些资源,以达到特定的目的。
如果SOP是在公司内执行的程序,那么,写SOP其实就是写程序,写程序的方法自然也可以套用在SOP撰写上。写程序的经验,对于写SOP,其实是有帮助的。当你需要写SOP,却不知从何下手时,不妨往程序设计的方向来思考。
我认为SOP可以分成三大部分,第一部分是常规作业(Routine),第二部分是事件驱动(Event-Driven)作业,第三部分是例外处理(Exception Handling)。如果你了解程序设计,这三者该写些什么,你应该就会知道。
一个好的SOP应该具备哪些要素?从判断程序的准则来看,应该是:执行效率高且耗费资源少、容易理解、支持跨平台(在不同的分店一体适用)、方便修改维护。
既然SOP是一种程序,那么,也可以采用不同的编程思维(Paradigm),例如面向对象、命令式、逻辑式、函数式。许多时候,用文字叙述的SOP,往往不够清楚,如果能够改用写程序的方式来表达(不使用真正的编程语言,而是使用Pseudo Code),搭配批注,也会是不错的方式。
除了可以套用程序设计思维,写SOP时也可以套用软件工程的作法。或许SOP比较适合采用敏捷(Agile)与反复式(Iterative)的开发方式。因为SOP在执行之后才会发现缺失,就可以继续进行修正补强。别忘了每次的改变,记得要做好版本控制。
UML(Unified Modeling Language,统一塑模语言)支持许多种图,几乎每一种图都可以在SOP内派上用场。UML可以帮助SOP作者编写SOP,也可以帮助读者理解SOP。
和程序设计一样,写SOP不能光靠语言和逻辑,还需要特定专业领域的知识。
例如,写3D绘图的程序,必须先了解3D图学的许多知识。对于SOP来说,专业领域可能是会计、税务、法律……等。所以编写SOP时,最好与了解该领域的人一同合作。
OO的封装和继承也可以套用在SOP,利用封装将资源和动作集中在一起,利用继承将某些方法进行扩充或修改(例如「同A作业,但步骤3更改如下」)。但是OO的多型似乎不可能用在SOP上,所以还是得大量使用switch/case的语法。
另外,逻辑式编程的作法似乎相当适合用在SOP,因为大部分的人都有足够的逻辑能力,可以理解与判断。使用逻辑编程可以让SOP的编写较简洁。当一个资源许多人抢着用时,你就可以引进Concurrency编程的方法。
写程序时,我们要多使用变量,而不是将数据写死在程序代码中,写SOP也是一样,例如,你不应该在SOP内写「把这份数据交给陈水扁」,而是应该写「把这份数据交给总统」。毕竟,陈水扁总有下台的一天。
有许多程序工具可以帮助我们检查程序中的语法/语义错误、Dead Code,甚至Dead Lock、效能瓶颈。但是SOP却没有这样的检查工具,一切只能靠SOP编写者的经验。
所幸,人和程序不一样,人是有弹性的,许多SOP的缺失可能会因为人的介入,能视情况应变而不会发生问题。但是,好的SOP并不能保证公司营运不会出问题,许多公共安全意外发生的原因,是检修人员偷懒,没有确实按照SOP规定的步骤进行维修所造成。
因此,虽然写SOP与写程序相似,但两者终究不同,SOP的执行者是人,不是机器。所以写SOP时,一定要充分考虑到人的因素,纳入人的弹性,排除人的偷懒(或自作聪明),才会写出真正实用的SOP。
作者简介:
蔡学镛-技术顾问
清华大学资讯工程硕士,曾任华硕集团软件工程师、元智大学信息系讲师、美商欧莱礼出版社技术编辑、台湾微软特约专栏作家
http://news.csdn.net/n/20080109/112558.html
甚至,日前警方查获的诈骗集团也有SOP,该集团将诈骗手法详细记载成为诈骗执行手册。当诈骗集团也懂得蓝海策略(诈骗手法推陈出新)、知道长尾效应(对准特定小众族群进行诈骗也能获利),并充分运用SOP时,或许也正代表我们社会相当进步,已经进入所谓的知识经济的时代吧。
一般公司内部的运作,处处仰赖SOP。有的公司虽小,但SOP累积多年之后也是厚厚一大本。一般来说,SOP会告诉人员,要怎么做一件工作、处理一件事情、调用公司的资源……等。
这一切,是不是让热爱程序的你有所联想?
把公司看成一个计算机系统,有许多的资源(设备、材料、人员、线程、I/O),每个员工都是一个线程,柜台和仓储是I/O,负责数据的进出,其中,SOP扮演程序的角色,以有效的方式协调、处理、运用这些资源,以达到特定的目的。
如果SOP是在公司内执行的程序,那么,写SOP其实就是写程序,写程序的方法自然也可以套用在SOP撰写上。写程序的经验,对于写SOP,其实是有帮助的。当你需要写SOP,却不知从何下手时,不妨往程序设计的方向来思考。
我认为SOP可以分成三大部分,第一部分是常规作业(Routine),第二部分是事件驱动(Event-Driven)作业,第三部分是例外处理(Exception Handling)。如果你了解程序设计,这三者该写些什么,你应该就会知道。
一个好的SOP应该具备哪些要素?从判断程序的准则来看,应该是:执行效率高且耗费资源少、容易理解、支持跨平台(在不同的分店一体适用)、方便修改维护。
既然SOP是一种程序,那么,也可以采用不同的编程思维(Paradigm),例如面向对象、命令式、逻辑式、函数式。许多时候,用文字叙述的SOP,往往不够清楚,如果能够改用写程序的方式来表达(不使用真正的编程语言,而是使用Pseudo Code),搭配批注,也会是不错的方式。
除了可以套用程序设计思维,写SOP时也可以套用软件工程的作法。或许SOP比较适合采用敏捷(Agile)与反复式(Iterative)的开发方式。因为SOP在执行之后才会发现缺失,就可以继续进行修正补强。别忘了每次的改变,记得要做好版本控制。
UML(Unified Modeling Language,统一塑模语言)支持许多种图,几乎每一种图都可以在SOP内派上用场。UML可以帮助SOP作者编写SOP,也可以帮助读者理解SOP。
和程序设计一样,写SOP不能光靠语言和逻辑,还需要特定专业领域的知识。
例如,写3D绘图的程序,必须先了解3D图学的许多知识。对于SOP来说,专业领域可能是会计、税务、法律……等。所以编写SOP时,最好与了解该领域的人一同合作。
OO的封装和继承也可以套用在SOP,利用封装将资源和动作集中在一起,利用继承将某些方法进行扩充或修改(例如「同A作业,但步骤3更改如下」)。但是OO的多型似乎不可能用在SOP上,所以还是得大量使用switch/case的语法。
另外,逻辑式编程的作法似乎相当适合用在SOP,因为大部分的人都有足够的逻辑能力,可以理解与判断。使用逻辑编程可以让SOP的编写较简洁。当一个资源许多人抢着用时,你就可以引进Concurrency编程的方法。
写程序时,我们要多使用变量,而不是将数据写死在程序代码中,写SOP也是一样,例如,你不应该在SOP内写「把这份数据交给陈水扁」,而是应该写「把这份数据交给总统」。毕竟,陈水扁总有下台的一天。
有许多程序工具可以帮助我们检查程序中的语法/语义错误、Dead Code,甚至Dead Lock、效能瓶颈。但是SOP却没有这样的检查工具,一切只能靠SOP编写者的经验。
所幸,人和程序不一样,人是有弹性的,许多SOP的缺失可能会因为人的介入,能视情况应变而不会发生问题。但是,好的SOP并不能保证公司营运不会出问题,许多公共安全意外发生的原因,是检修人员偷懒,没有确实按照SOP规定的步骤进行维修所造成。
因此,虽然写SOP与写程序相似,但两者终究不同,SOP的执行者是人,不是机器。所以写SOP时,一定要充分考虑到人的因素,纳入人的弹性,排除人的偷懒(或自作聪明),才会写出真正实用的SOP。
作者简介:
蔡学镛-技术顾问
清华大学资讯工程硕士,曾任华硕集团软件工程师、元智大学信息系讲师、美商欧莱礼出版社技术编辑、台湾微软特约专栏作家
http://news.csdn.net/n/20080109/112558.html
相关文章推荐
- SOP是Standard Operation Procedure三个单词中首字母的大写 ,即标准作业程序
- 取证分析标准作业程序???
- 作业 4 函数应用 编写一个程序,判断从键盘接收的数字是否为回文数字。回文数字就是顺着看和倒着看是相同的数。如121、656、2332等
- 检验程序的唯一标准就是你会不会用自己写的程序
- 【IE知识】最系统、完整的标准工时学习资料;标准作业(SOP)详解;生产线布局规划
- IT项目管理标准作业程序 1、任务分配
- 编写程序从标准输入读取几行输入。每行输入都打印在标准输出上,且前面加上行号
- 程序、进程、作业之间的区别与联系
- java标识符标识符就是用于给 Java 程序中变量、类、方法等命名的符号。
- 工具接口标准(TIS)可执行链接格式(ELF)规范-卷III-操作系统特性-程序加载和动态链接(三)
- 2017 程序设计实习之C++部分作业题汇总 - C:运算符重载
- 2017 程序设计实习之C++部分作业题汇总 - D:继承与派生
- 用Qt编写带有C++11标准的程序
- 输入输出流cout:写到标准输出的ostream对象; cerr:输出到标准错误的ostream对象,常用于程序错误信息; clog:也是输出标准错误流(这点儿和cerr是一样的),貌似平时很少用到这
- 小飞鱼通达商务平台课程 OA开发程序基础课 3月1日 mySQL第二部分课程签到及作业
- 习题课第一次作业:1、去除C程序中的注释
- 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同
- gcc文件后缀及c程序与传统c++常用的头文件与标准c++头文件
- 编写一个程序从标准输入读取字符,并把他们写到标准输出。除了大写字母转换成小写字母之外,其他的原样输出。
- 第三周作业二(读程序)