本文与理论上的“软件工程”是不同的,而更加偏向于集成商的角色。更加推荐简化的MM(市场管理)流程或者IPD(集成产品开发)流程。
格鲁夫曾经说过,在一个组织中,某管理层的战略/愿景,通常即是高他一层的经理人考虑的战术,而你作为执行者是负责实施上级战略的。
大前研一也曾经说过,做任何事情,都要以顾客的顾客为中心,所以你的技能不能只满足于编码或当包工头,而是让所有人都满意,因此你个人就算是只写CURD代码也要高看一层。
此外还有创造性张力
, 格物致知
, 形而上学
等类似术语,我这里就不掉书袋了,这些属于都强调了最高方向的重要性。
以企业向IT项目为例
角色 | 战略 | 战术 | 关键事项 |
---|---|---|---|
Sponsor | 提高过程管理效率30%,助力数字化转型 | 找IT部门来实施 | 定下时间,出钱、出需求与验收,防止钱白花了 |
PM | 打造一个全部门/公司/甚至超越IBM的XXX系统愿景 | 制定3年规划 | 对齐上游,防止下面瞎搞 |
SE | 对抽象的需求进行外显化,进行Demo演示,设计技术方案,参与核心编码 | 设计方案、管理搬砖过程 | 对齐需求/买买买,实施进度,防止下面瞎搞 |
编码工 | 通过编码完成需求,分享编码手册与经验 | 搬砖干活 | 量化/流水线化招聘标准,确保交付质量 |
通过这种分析方法,可以把所有人的思路给连接起来,有了最高战略,我们才有共同目标,这样就可以引入方法论框架进行实施。上述过程在H公司叫做【对齐(Aligenment)】,一旦方向大致正确,就用超高的执行力实施。
如果你与其他人的理念不合适,那么就赶紧散伙。如果你自己都不认可所做的项目,我觉得还是换家公司吧。
假如客户无法自己想要什么,那么可能会把IT团队给累死,部门名声差了,后面就没人敢接这个部门的活了。这里是很常见的,有一本《管理咨询的神话》就专门介绍战略规划是多么愚蠢。
假如领导挖掘需求能力较弱/二传手,脑子里是浆糊,或者天天开会效率低,那么就算是CURD的业务,你也要996搬砖,万一项目搞砸了,就等着34岁被淘汰。这类市场观察与用户画像的能力可能是需要交学费的。
假如我对抽象领域的“externalization”能力较弱,软件架构能力差,那么要么996,要么走人。
当然这些话题扯远了,我这里主要还是想强调先方向、后方案、再实施。假如你是技术设计者,切忌上来就陷入代码细节、高可用与源码分析,这样你就把下面的实施人力给浪费了。
除了方向正确外,还需要有强执行力、有活力的组织与技术视野确保成功开头,执行过程中需要有流程与经验支持,有了流程才能守破离,否则瞎搞会导致下面996加班/跑路。
高层领导与客户交流是高纬度的战略,因此这种方案一般是需要2~3年才能彻底完成的项目,而下面干活的肯定不止你一个,因此你要把属于你的活给抽出来,自己搞一个思维树。
举个例子,我做的X项目中有大量的领域术语(terminology)缩写,甚至连中文资料都很少,你需要如下操作
你在这个阶段是顾问的角色,将Wiki协同发布后,后面你就可以用这些符号与客户在同一个语境下交互了。
这里是隐性的,经验的,感性的,无法量化的知识,要用基于story的观察方式进行描述。本文这里主要使用了还原论作为框架
联系客户(1~2个人,不要拉一堆人),打开会议室的投影,打开绘图工具,然后采用问答的方式画业务总体流程图,举个例子
这种会议将非常高效,因为你是主持人,场景补全后,将这些流程图共享,这就是第二阶段的成果。
我个人比较喜欢的两个场景工具进行分析(可以看我写的npm等绘图插件),一个基于亨普尔覆盖律,一个基于休谟的齐一律
注意这里只是符号与概念,还没有到UI/Axure/User Journey等细节
这里一定是高阶方案,千万不要陷入细节、定义或者术语(约束范围)的争论
上述所有的现象分析一定是可证伪的客观结论,一定要与用户达成一致再进行设计
设计一个超大的菜单,并将上述场景承载录入到菜单层次中。此处暂时可以不用原型图,偷懒可以用Excel等工具画一个即可,再次强调不要上来就用UX工具或者UML进行DB建模。
这样就可以开始写Demo去忽悠客户了
(此操作可以与上一个任务并行执行)
技术方案需要拿来主义,可以网上查商业与开源方案,买Cookbook,甚至花钱找顾问的经验/招聘比你强的人。至于说如何设计好的架构,由于需要视野积累与业务场景,本文不多讲,但是最终汇报材料至少如下
这些搞定了,再与领导对一遍,然后再搞,架构方案是可以调整的,但是主要方向不能改。
源码分析/技术视野应该在轻松业余时间完成,上班时很难集中精力去搞,如果你的代码读的少,那么设计架构明显会很吃力,看源码逆向固然快,但是你的一天时间也被耗没了。如果招聘招的准,这一步就快。
这里你真的就要开始编码了,还是先不要急着看源码,建议先看各个框架官方的架构文档。
把Demo报上去给客户看看,根据客户的意见补充改进,直到最终客户拍版同意实施正式开发。
此处用户会提出很多诉求,但是你本人当前时间非常珍贵,不要耗到细节中,也不要这么早当用户的客服,否则其它的就没法做了,进而影响总体功能。
另外,只用找几个客户补充验证场景即可,不要盲目扩展多个客户,否则你的人力也会被耗完
最后,要识别种子客户,明确“诉求”与“诉求的实现”的区别,你做的是SaaS产品,而不是定制外包,诉求实现的决策权在你这里
POC过程中,用户也会提出一些需求,但是作为SE,一定要平衡长期与短期诉求,定制与通用诉求,它们的投入产出是不一样的。任何情况下,都要考虑SaaS化。比如用户短期想马上用,你可以给一个简陋的版本,但是还是不要耗进去了。不要在这里直接否定用户,而是说”先评估下“婉拒;不与用户讨论底层实现,只讨论最终要求。
build an impressive proof of concept to take to later stage investors to raise more money.
一般来说,假如你是纯技术SE,一般是不需参与撰写这种Slider,但是没人的话就只有你来干了。可以参考各大公司的招股说明书,比如这里,或者参考顶级的Y combinator的标准。这个是有极高难度的,对于纯技术人员来说并不擅长。
当可行性ok后,也就是已经上一版本后,那么就要进行真正的设计了。
PAAS层: 尽可能快,使用厂商中立且廉价的云原生方案,亦可搭建私有云,这里是要求广度高于深度。
技术承载层: 指SpringBoot/Rails等开源框架的选型
SAAS层
业务Portal层
CICD:由于当前开发人数过少,更需要自动化
SaaS项目的主要难点是在于挖掘场景(The Challenge, the solution),并提前克服墨菲定律进行枚举分解,而不是多个问题混在一起,也不要被短期诉求/条件所限制(你先出方案,再找上级解决限制问题)。
这里推荐使用PERT图来绘制依赖关系(详见UML),依赖清楚后,把任务按照1~2天的颗粒放到总backlog里面,然后与领导讨论哪些功能先上,最终整理出一个MVP迭代计划。
这时可以开始用专业的DevOps工具导入项目,比如Azure DevOps就可以从持续集成到需求管理全部帮你搞定。
拆解一定要按照功能需求-技术实现-实施细节-度量标准的维度进行拆解,而不是用技术-功能-实施来拆解,否则项目会遗漏。
此处是最小可行版本,也就是短期诉求,我们可以先搞两个月,然后用较少的用户去试点业务流程
Portal场景要贴身定制,打包整理为"解决方案",并找客户使用,企业客户使用后一般会内部汇报,再由上级一层层下发使用。这种官僚流程与toC场景也极不一样。
无论你是对内IT,还是天使轮项目,都有竞争者,MVP的目标始终是通过最快试运行的运营结果获得决策者的认可,要求始终是快速出产品(quick win/Leads to Cash),而不是高并发微服务等技术细节(Buy don’t build)。
我在这个位置就再次陷入源码分析与高可用细节了,导致投入耗费了一周。startup项目是绝对不适合应届生的,根本没有时间去培训
这里是一切痛苦与团队矛盾的开始
有了POC与MVP的案例,后续推广与开发就方便多了,基本上堆人就可以搞定很多事情。
特性开发与维护成本比可能是1:3,最后的10%进展非常慢,ROI也低,它们一不小心就会拖垮项目的人力。同时,也不要为了100%无债务而降低RD速度,技术债务只是可控负债而已,决策在你身上。
此处如果需要从软件工程理论角度也能进行度量分析,可以参考CMMI模型(CMMI本质也是泰勒制)
后续工作主要就是一个迭代一个迭代的做场景,MVP,再按照敏捷(不管是真假敏捷,反正就是要搞定)等流程拆解与完成。场景挖掘、项目扩张都是相当复杂的问题,也是SaaS降低成本的关键因素。核心就是用调研出的通用场景来满足大量用户需求,降低定制是核心。
在扩张过程中,有如下的时间分配与节奏最难把握
你作为Owner,这时就不得不…加班了,这个与我的不加班信念抵触。要解决这些问题,就必须要有估算时间与预测成本的能力,并防止力量碎片化,然后找人、要人、培训与搬砖。
本文只是记录搬砖的,所以关于"节奏"控制就不多指导了,因为这个的确需要一个经验丰富的指挥官。
自己不能控制的,优先推动做;尽可能不要亲自部署
通篇下来,我觉得在搬砖中,重要性依次如下
有一个优秀经验的领导带你工作,的确可以帮助你少走很多弯路,节省很多时间。优秀的领导每天的工作时间分配的很棒,列举如下
这样可以放大自己时间的效率,把工作外包化/自动化,基本上不会有浪费。
上述方案讲得基本是就是泰勒理论的生搬硬套,目前来说还是有作用的,但是缺点也很明显
总的来说,这套方法在大型搬砖组织作为中高级螺丝钉是足够的,但是在小型组织中是不够灵活的,希望后期能够做到守破离,实现更佳的方法。