一个软件公司怎么积累自己的资产

前言

从昨天晚上开完例会,到现在,只要是醒着的时候,满脑子都是这个问题---- 一个软件公司怎么积累自己的资产?有感于公司目前的状况,有些建议真是不吐不快

什么东西才是一个软件公司的资产

在回答这个问题之前,我们先来回顾一下软件公司的典型工作模式(这里仅以项目模式举例)。首先是市场从客户那里接收到业务需求,然后市场和产品、技术一起沟通后,形成一份《解决方案》反馈客户,客户对方案满意,则正式的进入需求处理流程(这里省略商务环节)。需求的细化、和客户确认等工作,都属于产品的范畴了,产品在这个环境会把业务场景化、业务需求转变为产品需求,并辅以原型、流程图等形成一份图文并茂的《需求规格说明书》。
有了需求规格说明书后,就可以拉着开发、测试、页面设计一起进行需求评审了,通过需求评审会,大家对需求形成了业务框架层面的共识,开发的技术架构设计、测试的用例编写、设计的静态界面设计就都可以同时开工了。(需求评审阶段,对需求一般不需要做到各方完全达成一致,保证业务架构和业务规则这两个层面的东西即可,这个是基于成本考虑,也是绝大部分项目性软件公司的做法。当然这个是不适用于金融类项目公司的)。
接下来就研发任务编排了,这个的主要目的,一是评估完成的时间节点。二是通过合理的任务编排,减少人员直接的相互依赖,提高开发效率。(这里的研发任务包含开发、测试、设计)。同样也会形成《开发计划》。
开发根据需求文档,进行系统的设计,这里需要思考的问题太多就不一一描述了,大概可以分为部署结构设计、数据模型设计、代码结构设计、安全设计、性能设计、可维护性、可扩展等方面。形成《概要设计》和《详细设计》。(现在绝大部分软件公司都不会写详细设计文档了,主要是这部分要求转移到代码规范中去了,所以才会有“代码就是最好的文档”一说)
测试人员完成测试用例的编写后,形成《测试用例文档》,经过开发、产品的评审后,可以确保通过执行这个测试用例,是可以完全保证产品质量的。
接下来就是大家按部就班的完成自己的任务,最终形成一个可交付的软件产品出来。然而还没完,在这个软件产品交付前,还有一些技术参数需要确定,比如这个软件产品至少需要多少内存、有1000个用户同时使用的时候需要又需要多少内存、最多能支撑多少用户同时使用等等,这个就需要我们的测试对产品进行压力测试、性能测试、安全测试等,然后出具各种《测试报告》。
最终再辅以《安装部署手册》、《操作手册》,一个完整的软件产品就真正出炉了。此时我们可以非常自信的对客户说,我们的产品是高标准、高质量、可信赖的,非是那些靠“口口相传”开发出来的三无产品可比 :)

看到这里,可能大家会有疑问,你这个流程中写了这么多文档,好像都没有怎么用到啊,虽然对产品质量的提高,是有那么一点作用,但是我多测试几遍不一样可以达到同样的效果么?写文档还需要时间,有这个时间多写点代码不是产能更高,创造更多的收入么?
要回答这个问题,首先我们得明白一个软件公司创造的价值并不是由这个软件产品最终卖了多少钱决定的,而是由研发的效率决定的。把软件产品卖出去只能说明这个公司有了存在的条件,然后公司要发展,要找到自己的价值,要打败竞争者,要留着人才,最后终靠的一定是研发的效率。这里就引申出了下一个问题->

软件公司的研发效率体现在哪些方面?

托尔斯泰说“幸福的家庭都是相同的,不幸的家庭各有各的不幸”,我们先来看看有哪些效率低下的现象:

  • 需求没有经过仔细推理,在开发、测试过程中,不断改来改去,甚至有更深次的需求不断“发掘”出来;
  • 需求没有形成文档,大家口口相传,产品人员不断回答开发、测试、页面设计等人员的需求疑问;
  • 开发没有规范,每个人的代码都只有自己看得懂,每个人只能都只能处理自己开发模块的问题;
  • 测试没有规范,纯粹靠个人理解,测试覆盖率低,改哪里就测试哪里;
  • 故障频出,开发人员到处救火,开发工作不断被打断,每个人都说自己很忙,又不能按时完成开发计划;
  • 技术主管对产品的技术发展没有规划,对软件的架构演进、代码结构演进不清楚,出了问题只能压着程序员加班排查,只能压着测试多测试;
  • 一旦有人离职,又是一波故障来袭,结论就是离职的人各种没做好,接手的人各种不清楚;
  • 新人入职,第一句话:自己看代码去;第二句话:我们都是这么过来的;然后新人理解半吊子后,就开始各种挖坑。。。新一轮循环开始。。。

总结:各种无、各种忙、各种乱

各位看官,你们公司中招没?你个人中招没?如果作为程序猿的你全中,那么恭喜你,你就传说中的“不可缺少的人”,公司已经离不开你了,如果公司的这个产品多在客户那里部署几套,那只要公司不跨,你就再也不用担心失业这种事了(话说回来,公司这样都不跨也不容易!!!哈哈!!请原谅我无耻的笑了)。
要保证研发的效率,其实就是要一一去避免这些方面,当然有主有次,有枝有干,归纳总结一下,就是——保证研发各个岗位(产品、开发、测试、设计、运维、管理者)的工作效率。
到这里终于可以回答文章最开始提出的按个问题了,能保证研发效率的工作机制就是一个软件公司最大的资产,这个工作机制包括各个岗位配合协调的流程、统一规范的文档、代码

你可能感兴趣的:(一个软件公司怎么积累自己的资产)