跟我开发NSP(网上查询平台):如何选择开发项目
我想通过一个真实的项目开发的全过程,记录一下开发过程的点点滴滴,记录一下过程中的前思后想。这个全过程包括,如何选择项目、如何分析项目、如何组织项目开发、如何设计开发流程、如何设计软件的总体架构、如何建立项目的技术架构,如何开始编程,如何面对具体编程中出现的问题、如何处理编程中的技术难点、如何进行数据库设计、如何进行参数化设计、如何进行项目开发的合作、如何确定开发的先后次序,如何进行项目测试和包装、如何开展项目的试运行、如何将项目投入到市场等等。通过具体的、可见的开发时的想法和做法也许可以给那些想了解如何选择软件开发创业的、如何进行项目开发的全过程的,如何编程的,如何提高技术水平的、如何了解软件市场和价值的朋友们有一点点参考。以此来展示自己在开发过程中的
我选择NSP(网上查询平台)作为一个开发项目,作为自己博客的一个写作对象。NSP是EOM系列的一个产品,我想通过记录开发NSP全过程,与大家分享和交流一个项目开发的全过程。我的另外一层意思是,几乎每个程序员都会编写数据查询程序,因此,对数据查询有一定的了解和积累,便于和我进行沟通和交流。
这次博客不给自己太多的压力,想写就写,不给自己规定期限,好在NSP正在开发之中,所以写作的动力还是有的,希望自己能够坚持。
一、 如何选择开发项目
很多程序员会认为,如何选择开发项目是公司老板的事,是领导的事,跟自己没有什么太大关系,这话有一定道理。但是,有两件事必须要清楚,第一,程序员的职业特殊性,也就是说程序员有时间有能力开发自己的项目,这就说明,今后有一天自己会遇到如何选择开发项目的问题。第二,我们也许不能选择单位的开发项目,但是我们要能学会评价项目的优劣。因此,程序员还是要对选择项目花上一点时间,无论是你做还是不做,对自己今后的成长都是有益的。
1、 有市场价值的软件
选择项目的第一原则是市场价值,通俗地说,项目要能挣到钱。这话说起来很简单,但是,现实中很多软件公司项目开发是亏钱的,这里的原因很多,常见的有项目需求变动太大,超出预期;开发人员的技术水平影响了开发进度;因用户的原因项目投产时间不确定或延长等。因此,我们要以最小的成本来获得最大的收益,这才是评价一个项目的优劣的标准。很多项目只能在事后进行评价,这是软件开发不确定性造成的,但是,随着开发项目的增多,对自身或其他软件公司的了解增多,选择项目就尤为重要。在多个项目可以选择情况下,要避免亏本和盈利少的项目,争取做利润最大的项目。公司如此,程序员也应如此,这就是市场价值的导向。
程序员可以花时间用在技术学习和技术积累上,但是,千万不要浪费时间花在不能产生经济效益的开发上。
2、 通用的软件
满眼望去,很多软件公司都在为客户做定制软件的开发,这种拼人工的软件开发也是现实不可避免的存在。但是,软件的价值在于复用,复用次数越多,价值越大,复用范围越大,价值越大。因此,我们在选择项目的时候,要问问这个项目是通用软件吗?如果不是通用软件,其产品复用的个数有多少?如果项目一个功能都不能复用,那么程序能够为其他项目复用吗?
3、 前瞻性的软件
当我们要开发一个项目的时候,大多数是用户提出来的需求,用户需求相差很大,有的需求有前瞻性,有的需求非常普通,因此,要关注具有前瞻性的需求;有时候,一个项目是自己想出来的,这个时候也要想一想,这个想法有没有人已经做过,如果做过,自己能不能比别人做的更好,更有特点,更有竞争力。选择前瞻性的软件开发可以更加吸引用户,减少竞争对手。
4、 有积累的软件
有好的项目想法是一个好的开端,但是,好的项目需要可行性,对于软件项目来说,积累非常非常重要,有两个积累非常重要,一个是需求积累和业务积累,这个积累保证你的产品功能的领先,一个是技术积累,这个积累能保证你的开发没有什么技术障碍,大大节约开发时间。千万不能从头再来,从新再来,这样没有积累的开发是非常非常辛苦的,开发出来的产品一定是不成熟的。
5、 有用户的软件
选择一个项目另一必要条件就是项目要有用户使用,无论这个用户是付费的还是免费的都不重要,重要的是有人来验证你的项目的使用价值。因此,事先进行项目的用户调研,为项目找好试点用户非常重要。如果不能做到次,再好的项目也必须放弃和等待。
6、 可把控的软件
如果你选择的项目,既有市场价值,又有一定的通用性和前瞻性,又有用户。但是,你要想想这个项目你可以把控吗?从想法到产品,从产品到用户使用每个环节都能把控吗?你自己能把控最好,你不能把控,有人能把控也行,就怕项目谁都把控不住,市场把控不住、需求把控不住、开发把控不住,开发队伍把控不住,做到最后一盘散沙,断断续续,前功尽弃,以失败而告终。
NSP是Network Searching Platform网上查询平台的英文开头字母,选择NSP符合上面的6点要求。例如,有积累的软件一项。我做数据查询已经几十年了,几十年前就编过动态查询的程序,后来也开发很多大型的查询系统,尤其是几年前,自己一直想在数据查询方面有所突破,因此,对数据查询做过专门的研究,尤其是数据查询的流程和主要算法,也曾动手编过程序,但是,由于其他原因被搁置很久,但是,我对数据查询还是有很多积累的。又例如:通用软件一项。数据查询是企业信息化中一个重要内容,几乎三分之一的系统或功能都与数据查询有关,因此,数据查询具有普遍意义,因此,如果能做成一个通用的网上数据查询平台,那就符合了选择开发项目的第2点了。问题是,各个企业的数据源是不同的,查询流程和查询要求是不同的,能做到通用吗?这正是NSP要解决的问题。
当然,选择项目还有其他重要因素要考虑:包括开发团队、开发成本、合作伙伴、销售价格等等。这里就不再详细述说了。
当你能选择好,选择准一个开发项目,你就可以安心在这个项目花上你的精力和时间了,你就可以考虑动手去展开行动了。万里长征第一步,总是要迈的。
跟我开发NSP(网上查询平台):如何选择开发项目的更多相关文章
- 【原创】开发Kafka通用数据平台中间件
开发Kafka通用数据平台中间件 (含本次项目全部代码及资源) 目录: 一. Kafka概述 二. Kafka启动命令 三.我们为什么使用Kafka 四. Kafka数据平台中间件设计及代码解析 五. ...
- 基于C#和Asp.NET MVC开发GPS部标监控平台
基于交通部796标准开发部标监控平台,选择开发语言和技术也是团队要思考的因素,其实这由团队自己擅长的技术来决定,如果擅长C#和Asp.NET, 当然开发效率就高很多.当然了技术选型一定要选用当前主流的 ...
- 微信公众平台消息接口开发(24)图片识别之人脸识别API
微信公众平台开发模式 微信 公众平台 消息接口 开发模式 企业微信公众平台 图片识别 人脸识别 API 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/archi ...
- SNF开发平台WinForm之五-高级查询使用说明-SNF快速开发平台3.3-Spring.Net.Framework
5.1运行效果: 5.2开发实现: 1.按上面效果来说,先来看一下在程序当中如果调用.第一步在页面拖拽一个按钮为“高级查询”,事件上写下如下代码: 如果是单表查询的话,只需要传GridView就行,如 ...
- Winform开发框架之通用高级查询模块--SNF快速开发平台3.3-Spring.Net.Framework
最近项目确实忙,但也是一直忙于有关项目和框架技术的事情,也一直致力于改善我的WInform开发框架.使得自己及客户使用起来更加方便,更加友好,更加高效. 在很多程序模块中都很常见,也是给客户扩展查询的 ...
- .NET平台常用的开发组件(csdn)
.NET平台常用的开发组件 原创 2017年02月24日 09:20:04 工欲善其事,必先利其器.学习.NET也10年有余,其优雅的编程风格,高效率的开发速度,极度简单的可扩展性,足够强大开发类库, ...
- C#开发微信公众化平台
C#开发微信公众化平台 写在前面 服务号和订阅号 URL配置 创建菜单 查询.删除菜单 接受消息 发送消息(图文.菜单事件响应) 示例Demo下载 后记 最近公司在做微信开发,其实就是接口开发,网上 ...
- 微信公众平台消息接口开发(2)你的服务器没有正确响应Token验证的解决方法
你的服务器没有正确响应Token验证,请阅读消息接口使用指南 微信 微信公众平台开发模式 平台 消息 接口 启用 URL Token作者:http://txw1958.cnblogs.com/ 本系统 ...
- SNF开发平台WinForm之四-开发-主细表管理页面-SNF快速开发平台3.3-Spring.Net.Framework
4.1运行效果: 4.2开发实现: 4.2.1 有了第一个程序的开发,代码生成器的配置应该是没有问题了,我们只要在对应的数据库中创建我们需要的表结构就可以了,如下: 主表结构如下: ...
随机推荐
- git diff 使用
1. 本地工作目录与远程仓库对比(所有改动过的文件) git diff HEAD (HEAD指向最新一次的提交,即最新版本) 2. 之对比给定的文件 git diff -- filename //是 ...
- scheme代码高亮
(defun iedit-symbol-in-defun () "Enter `iedit-mode' to rename the symbol in current function, o ...
- 关于ArcGIS Rest API
ArcGIS Rest API: 9.3版本: http://resources.esri.com/help/9.3/arcgisserver/apis/rest/index.html 10版本:ht ...
- java设计模式--行为型模式--备忘录模式
备忘录模式,我们平常所做的备忘录么.还得深深研究哦. 备忘录模式: 备忘录模式 概述 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状 ...
- excel内容转成xml
简单记录下如何将excel中的一个表格内容转成xml格式的文件. excel菜单栏中的"开发工具"下有专门处理xml的模块,如下图. 如果你的excel中看不到"开发工具 ...
- 【转】Android C程序也可自己手动用交叉编译器编译 (
原文网址:http://blog.sina.com.cn/s/blog_533074eb0101ez5q.html Android 编译环境 本身比较复杂,且不像普通的编译环境:只有顶层目录下才有 M ...
- bzoj2018 [Usaco2009 Nov]农场技艺大赛
Description Input 第1行:10个空格分开的整数: N, a, b, c, d, e, f, g, h, M Output 第1行:满足总重量最轻,且用度之和最大的N头奶牛的总体重模M ...
- 几个js的linq实现
几个js的linq实现 linqjs.codeplex.com jslinq.codeplex.com javascriptiqueryable.codeplex.com fromjs.codeple ...
- Redis 3.0集群 Window搭建方案
Redis 3.0集群 Window搭建方案 1.集群安装前准备 安装Ruby环境,安装:rubyinstaller-2.3.0-x64.exe http://dl.bintray.com/onecl ...
- swift中通知的使用
1.发通知.(以这条通知为例,通知名字:gameOverNotification.通知参数:title) NSNotificationCenter.defaultCenter().postNotifi ...