(转)软件产品化,国内IT人之痛
原文链接:http://blog.csdn.net/harrymeng/article/details/5254415
记得在网上看过一则印度软件的有趣故事,意思是先从印度6个不同城市的软件公司中选出6位软件开发人员,出一道千行程序的题目,让6位开发人员分别开发,最终拿出来的6个程序竟然完全一样;另一个测试是,将一个千行程序分成六段,让每位开发人员只开发其中指定的一段,结果6段程序合在一起就是一个完整的程序,不用做任何改动!简单太强了,阿蒙佩服得五体投地,心想如果我的开发人员也是如此,那将是多么美好的事情啊!
无论如何,这个故事至少说明印度的软件人才相当地统一化、标准化与规范化,难怪别人会成为世界软件工厂,而看看我们国内,大部分软件公司的产品/项目开发还是主要依赖于开发牛人或软件高手,始终较难摆脱作坊式的开发模式,我想,如果我们也来搞类似的测试,结果一定是乱七八糟五花八门的,印度的长处正好是我们的短处。
之所以引出这么个故事,一是无奈地自我讽刺一下,二是勉励自已乃至国内IT人当自强,努力奋斗,早日实现软件产品化,真正做到赶印超美,呵呵,总觉得好怪,为什么我们一直在追赶?当年中国经济要赶英超美,现在中国软件要赶印超美,中国足球要赶日超韩,上帝啊,求求你,让别人来追我们赶我们一次吧!
本文想说的是软件产品化。众所周知,软件产品的魅力在于一次开发多次复制,这种复制是无声无息的,基本上不花什么成本,不象硬件那样总是要有材料与生产成本,IT企业的主要利润也是来自于不断地复制产品与销售,这是相当吸引人的地方,但比较悲哀,我们现在很多人还停留在项目化定制开发模式,项目开发的目标就是以最低成本、最短时间交付客户需求,而较少去在项目的可持续发展方面进行研究和构架,完成后的项目很难产品化。做项目的成本是相当高,如果管理不当监控不好,往往会亏本,因此软件产品化是IT企业发展的关键所在,能否产品化决定着企业的日子是否好过。
那什么是软件产品化?引用网上较好的定义:“软件产品化,即客户无需为软件添加或调整代码和语句即能完成软件的安装配置、应用初始化、系统管理、用户使用的全过程,并且软件至少能满足80%以上的用户某一组应用需求。软件产品化只是完成了产品的生产环节,后面的产品销售、市场推广和售后服务都需要逐步建立完善的体系。”个人觉得,通用软件产品可以调研后直接立项并进行产品开发、推广与销售,比如金山词霸、杀毒软件、游戏软件、学习软件等等,而行业软件产品往往是由项目做起,经过多年对行业管理理念与理论、产品技术、客户数量的积累,而逐渐抽象、提炼、整合而成的行业应用软件产品,比如BI、ERP等等。
那么我们如何才能做到软件产品化呢?结合网上学习与阿蒙自身的经验认识,我想主要遵循以下的一些原则:
(1)正确的产品定位。
基本上,我们的一生都在做很多的定位,工作定位、生活定位、品牌定位、市场定位、产品定位等等。定位是对产品在未来的潜在顾客的脑海里确定一个合理的位置。“定位的基本原则不是去创造某种新奇的或与众不同的东西,而是去操纵人们心中原本的想法,去打开联想之结。定位的真谛就是“攻心为上”,消费者的心灵才是营销的终级战场。”产品的定位决定了产品后续需求管理的策略和指导思想,决定了产品营销的策略与战略。就如同我们的人生,在不同的阶段都要给自已做一个正确的定位,才不至于缺乏奋斗与前进的动力,不至于迷失方向。
(2)明确产品的亮点,并得到客户的认可。
这一点无疑是最重要最关键的,最好的亮点就是我有你无或你有我强的创新点,我们作为个体,其实也是一个产品,我们每一个人都有自已的亮点,没有亮点的人多般平庸且碌碌无为,我们都喜欢一专多能的人才,我们往往80%的时间是在使用与发挥人才的一专,产品也一样,没有亮点的产品就如同一个没有亮点的人一样平庸平淡乏味。
(3)采用可定制、可扩展的技术架构:丰富的参数设定,功能可组装。
我们是搞技术的,这一点应该很容易理解。我经常陪儿子玩积木,我觉得积木是一个非常棒的产品,我们可以根据需要拼出各种各样漂亮的成果,比如火车、轿车、高楼、别墅、木屋、长城、沙发、桌椅等等,这些不同形状不同色彩不同大小的组件,就是构成不同产品成果的可重复应用的元素,软件大部分的功能理论上也是可以分解成许多可用来组装与重用的组件,如果一个程序员第一次写增删改的数据库代码,可能他觉得很有意思并且学到了东西,但如果他写到第一千次的时候,我相信他会开始厌倦与烦燥,软件复用性是软件开发所应该追求的目标,也是软件产品化很关键的技术。
(4)简单易用,操作易懂。
这也是软件产品应该追求的目标,试想一个软件产品的使用与操作过于复杂,花了用户很多的学习时间,我想到最后没有人愿意使用这样的产品。如果你的软件能够让用户在很短的时间内就明白如何使用,那么你就已经成功了一大半了。
(5)二八原则。
二八原则是19世纪末20世纪初意大利经济学家帕累托提出的,这个原则很简单:
任何一组事物中,最重要的只占其中约20%,其余的80%虽然是多数,但是却是次要的。 比如,80%的财富掌握在20%的人手中,而剩下80%的人,只拥有那20%的财富。同样的,20%的恋情才决定了你的终身幸福,而80%的桃花,只是过眼云烟。再比如,人生中20%的时间,决定了80%的成就,而另外80%的时间,浪费在了20%的事情上。
呵呵,太有道理了,此原则应用到软件产品上一样地有道理,很悲哀地说,我们所千辛万苦开发出来的软件产品,实际上只有20%的功能是用户经常使用的,其他80%的功能是较少使用的。另外,我们的产品不可能满足所有人的需求,我们只需关注最广大的80%的用户,因为另外20%的需求很可能会使另外的80%的人产生困扰。
估计还有很多很多的原则,是阿蒙暂时还没有学习到或领悟到的,但无论如何,软件产品化应该是软件企业认真思索与谨慎执行的事情,它所带来的好处不言而喻,而且它也是行业发展的趋势,产品化是一个很诱惑的词汇,现在也开始盛行服务产品化了,我想自已需要不断地学习与成长,以至于可以跟上技术的进步与行业的发展!
(转)软件产品化,国内IT人之痛的更多相关文章
- 软件项目发展历史<人月神话>这本书好
几乎是计算机软件开发的发展历史 人月神话,增加人手并不一定能提高开发速度. 原因在于,有些任务是无法分解的,存在先后顺序.无法同步进行. 增加人手,增加的是沟通成本,相互牵制.可以分解的任务就 ...
- Linux Mint如何安装“微信、QQ、迅雷、WPS办公软件”等国内上瘾软件
很多小伙伴都用ubuntu或者Linux Mint,但由于已经习惯了让人成瘾的国产软件,比如迅雷,qq,微信等,其实我们应该培养更为健康的上网习惯,这些软件不是非用不可,但如果你不用不行, 那么也是有 ...
- Linux安装软件时90%的人会遇到这个报错,如何解决?
提示 Could not get lock /var/lib/dpkg/lock 报错? 有些小伙伴在使用 apt 包管理器更新或安装软件时,可能会遇到过诸如以下的错误提示: E: Could not ...
- 关于变量参数的传递,python让人蛋痛的地方
def find_file(file_table): with open(file_table, 'r', encoding='utf-8') as read_f: line_dict = {} fo ...
- 软件推荐-国内参数优化软件:1stOpt - First Optimizationg
首页:http://www.7d-soft.com/index.htm 4.0新功能 (预定2010年8月6日): 1:支持复数拟合.复数方程组计算: 2:支持微分方程拟合求解: 3:通用全局优化求解 ...
- IT软件外包行业深入分析:现状、前途、趋势、待遇 什么是软件外包 外包公司是怎么工作的 软件外包公司的面试 软件外包公司需要什么样的人
目录: [0] - 为什么要对大学生谈软件外包? [1] - 什么是软件外包? [2] - 软件为什么要外包? [3] - 为什么要承接软件外包 [4] - 做软件外包有前途吗? [5] - 外包公司 ...
- 第一章-第六题(帮人抢票,帮人选课这些软件是否合法 你怎么看?)--By梁旭晖
我觉得这些软件是合法的,符合道德规范的. 计算机当初设计的初衷就是简化甚至替代人类的工作.而软件作为计算机硬件的驱动着,其设计就是体现这些原则. 现在互联网上的订票,选课类型的网站还是有很多的,比如: ...
- [转]Fedora22添加国内软件源和本地软件源
Fedora22添加国内软件源和本地软件源 Linux系统和Windows系统一个很大的区别就是软件安装方式,windows系统下安软件,我们去相应的网站下载软件安装包离线安装就可以了.虽然Linux ...
- 获明略科技B+轮战略投资,思迈特软件Smartbi用强产品思维推动BI生态完善
今天,商业智能BI和大数据分析产品提供商思迈特软件(Smartbi)宣布完成亿级B+轮战略融资,本轮投资方为领先的全球企业级数据分析和组织智能服务平台提供商--明略科技. 此前,思迈特软件曾先后获得来 ...
随机推荐
- Java基础之Bridge method(桥接方法)
1.什么是桥接方法 桥接方法是 JDK 1.5 引入泛型后,为了使Java的泛型方法生成的字节码和 1.5 版本前的字节码相兼容,由编译器自动生成的方法. 判断方法 我们可以通过 Method.isB ...
- Dcoker docker: Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE).
https://stackoverflow.com/questions/46533482/error-starting-userland-proxy-bind-for-0-0-0-080-unexpe ...
- 【Go语言学习】匿名函数与闭包
前言 入坑 Go 语言已经大半年了,却没有写过一篇像样的技术文章,每次写一半就搁笔,然后就烂尾了. 几经思考,痛定思痛,决定金盆洗手,重新做人,哦不,重新开始写技术博文. 这段时间在研究Go语言闭包的 ...
- 第37课 智能指针分析(指针特征操作符( -> 、 *)重载)
1. 永恒的话题:内存泄漏 (1)动态申请堆空间,用完后不归还 (2)C++语言中没有垃圾回收的机制 (3)指针无法控制所指堆空间的生命周期------------指针是变量,可以指向内存堆空间,但是 ...
- HTTP Keep-Alive的作用
作用: Keep-Alive:使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接.Web服务器,基本上都支持HTTP Keep-Alive ...
- TCP 服务器端
""" 建立tcp服务器 绑定本地服务器信息(ip地址,端口号) 进行监听 获取监听数据(监听到的客户端和地址) 使用监听到的客户端client_socket获取数据 输 ...
- PHP sinh() 函数
实例 返回不同数的双曲正弦: <?phpecho(sinh(3) . "<br>");echo(sinh(-3) . "<br>" ...
- 如果你大学上过编程课,一定被老师提醒过:不要使用 goto 语句!
如果你上过编程课,一定被老师提醒过:不要使用goto语句! 因为goto语句不仅让代码的可读性很差,随意的跳出还会给程序带来安全隐患. 但是这种几乎被现代编程明令禁止的语句,在计算机诞生之初却司空见惯 ...
- MySQL 笔记 —— 中文乱码解决、修改mysql服务端编码
https://blog.csdn.net/qq_19865749/article/details/79235422
- Java线程池的了解使用—筑基篇
前言 Java中的线程池是一个很重要的概念,它的应用场景十分广泛,可以被广泛的用于高并发的处理场景.J.U.C提供的线程池:ThreadPoolExecutor类,可以帮助我们管理线程并方便地并行执行 ...