第一次开发电商项目

摘要:
)除了老板,我是第一个正式进入公司的员工,面试我的项目经理两周后正式被聘用。组建团队花了大约一周的时间。另外两个团队加入了NET开发,两个艺术家和项目经理正式加入了公司。开发架构应该由项目经理决定。需求的重复修改在开发项目和软件中是正常的,但对于在需求确定之前尚未开发的项目来说,这是不正常的。起初,老板对电子商务只有一些想法和想法。

先讲一下工作经历吧,09年上大四时就偷跑到北京做开发(moss),10年大学毕业后正式来北京。先做了近两年的网络教育平台开发,后来跳到一家物联网创业公司,做了两年的C# 仓储物流、手持机、RFID设备软件的开发。个人觉得再这样下去技术杂而不精今年3月份就跳到了现在的这家电商创业公司。

其实进入这家公司之前也曾经犹豫过,因为开的工资太低了,比普通行业C#开发 4年经验的工资还低,更不用说跟互联网公司比较了。跟我原来的公司薪酬一样,跳了跟没跳一样。不过为了能学到更多的东西,能进入互联网行业,忍了!(不过一想到一旦电商做的成功了,就能拳打京东脚踢淘宝,融资上市,买辆特斯拉 ,再包养个奶茶妹,想想都有点小激动!)

我是正式进入公司除了老板的第一个员工, 面试我的项目经理也是 在我之后两周后才正式入职。所以完整的经历了整个公司的创建运行,项目开发全过程。

整个项目的过程可以分为:

(1)环境搭建阶段

(2)团队搭建阶段

(3)团队磨合阶段

(4)技术选型阶段

(5)需求开发阶段

(6)项目管理、进度失控阶段

(7)寻找成熟电商产品阶段

(8)二次开发阶段

(9)系统部署上线

(10)运维阶段

目前处于二次开发后期阶段。

(1) 环境搭建阶段

环境搭建是指工作环境的搭建,我跟老板两个人,整桌椅办公用品、电脑组装、开发服务器的搭建、网络布置等 。时间约一周

(2)团队搭建阶段

开发团队的搭建,陆续又进来了两个.NET开发,两个美工,项目经理也正式入职了。

(3)团队磨合阶段

在人员未到位前,尤其是项目经理未入职的时候,我们为了进行磨合也为了团队进度管理的需要,开发了一套OA系统。采用了ASP.NET MVC4 +EF6.0+EasyUI。这套系统主要作用是对任务进行分配,制定工作计划,对每日进度进行管控,以及每天的工作日报等。同时制定了开发代码规范,和其他一系列的规范文档。

*吐槽一下:其实这套系统使用者应该主要是老板和项目经理,由项目经理制定工作计划和任务分配,我们开发人员应该只是对每日进度进行更新及提交工作日报。但老板非让我们每个人制定工作计划,你这是在逗我吗(你见过让建筑工盖楼的时候,自己定任务定计划的吗

(4)技术选型阶段

开发语言:当然C#了 不然招我们过来干嘛。

(老板也是听项目经理说的,用C#开发快。后来老板买了本《淘宝技术十年》,把这本书奉为圣典。又觉得还是用Java好,无奈开发团队已经成立,也就没有提更换语言的事。)

开发框架:ASP.NET MVC4+EF6+Autofac+三层+ADO.NET+Redis+Mangodb+Solr+Mysql。

开发架构这事本来应该是项目经理去定。项目经理和老板天天在那讨论需求,把这事全交给我了(他也真放心!)。我之前也只是做了4年行业软件,互联网尤其是电商的框架跟行业软件的不可能一样呀。这段时间就开始参考网上各种资料,还有各种开源的C#平台如 nopCommerce (那时候BrnShop还没发布呢)。我原本制定的方案是 MVC5+WebApi2+Signalr +EF6+ADO.NET+Autofac+三层+Redis +Mangodb +Solr + Mysql,由于技术太新不好招人作罢。

Asp.NET MVC+Html静态页+ADO.NET+Redis做前台模块。

Redis 缓存和消息系统

Solr作为搜索引擎,搜索商品信息及店铺信息。

WebApi2作为服务接口,和对手机端服务接口(WCF太复杂)。

Signalr 作服务器推送,提供IM和消息提醒功能。

EF6 作为ORM工具,采用的CodeFirst poco 但使用的是从数据库通过ef power tool工具生成 codefirst代码。

MySql 作为持久化数据库 ,选它主要是免费。

Mangodb 是项目经理硬要往上加的,个人觉得 前期用途不大还影响开发进度。

地图模块 选用的百度地图。

其他小的组件如 图片转换和剪切的 imageMagic,图片服务器的选型、跨域上传的组件、静态页、路由配置、url重写 内容太多了不细说。

光从网上东拼西凑搞出来这个东西也只能是纸上谈兵。所以要把平台搭建出来,去验证框架的可行性。有机会专门写篇这部分的文章 详细讲一下我们搭建过程中出现的问题及解决方式。

第一次开发电商项目第1张

第一次开发电商项目第2张

(5)需求、开发阶段

在这个阶段需求和开发同时进行,这也是我们公司的特色吧。在那边讨论需求的时候,我们就开始技术准备和数据准备。我写了段代码抓取了京东30万条商品数据,又写了工具从百度地图和搜房网上抓取了北京的小区信息(抓了没两周,博客园上就有了一篇 从谷歌上抓取全国小区信息的文章,你为啥不早点发文章,害的我自己想办法抓取百度的信息,百度有返回总条数限制,最后我是把北京切成几百个区块然后抓取的信息)。Ip地址库等其他数据也进行了完善。我们这时也进入了封闭开发阶段,一天10个小时,一周六天,疯狂加班的干活,晚上十点半之前没有下班过。(加班加的太厉害,媳妇都有意见了)

这段时间开发过程中遇到不少问题。

需求反复修改

需求反复修改这个在开发项目和软件中是很正常的事,但对于一个需求还未确定就开发的项目来说是不正常的事。

老板最初只有一些电商方面的想法和理念。项目经理按照老板的思维一遍又一遍的 做界面和功能原型设计。出个大概就让我设计数据库和修改数据库。反反复复,他们倆天天京东淘宝的看,想功能,规划我们平台的功能。我这边收到一个简单的文档就开始修改数据库,添加相应的功能和模块,老板是对产品的细节很挑剔的人。我郁闷的是为什么不把同一个模块的功能一次性提完,他们郁闷的是只有原型做出来了,才想到这个功能应该怎么修改怎么完善。

流程中基本没有什么完善的文档,基本都靠嘴上说一下这个大概的功能。然后你去改去吧。

开发进度缓慢

开发进度缓慢,进行一个多月了才把个人后台的功能和界面实现。原因有以下几个方面:

  • 开发人员对架构不熟悉

招的开发人员对ASP.NET MVC和EF,Linq等技术不太熟悉,对Redis和Solr也要从零学起。

  • 架构设计复杂

架构是在三层架构上改的,数据从数据库到EF 的DTO模型,再在业务逻辑层加工成VO模型传递给MVC。中级需要数据格式转换,而且在业务逻辑层也有Redis缓存的保存,获取的判断等。新增一个表要重新生成单独的DTO对象,对应的VO对象、AutoFac配置、各层的接口文件添加等。

  • 需求不明确,变更频繁

不需多言,都明白

  • 没有使用成熟的UI框架

之前做OA时js控件全部使用的EasyUI,做这个电商平台时,觉得这种成套的UI界面影响性能。结果各种控件都要找 头像js剪切、弹出层、浮动框、跨域图片上传控件、IM界面等。

项目经理离职

由于项目经理和老板对产品的理念,及观点不同,二人分歧越来越大,结果是项目经理离开了。

老板自己做产品经理,我临时暂代项目经理。(一直代到最近,最近老板自己又当产品经理又当项目经理)

(6)项目管理、进度失控阶段

项目经理走了之后,为了控制进度及更好的掌握每个员工,老板又要大改原来的OA系统。我通过找我原来公司的项目经理请教,在公司部署安装了JIRA作为开发的任务分配,及bug跟踪,工作日报(自定义的模板),会议通知及记录(自定义模板)。从而取代了原有的OA系统。

项目开发继续,需求还在讨论,功能越来越多,复杂度越来越大,开发人员没有添加,看着那么多功能,我们越来越觉得上线时间遥遥无期。这时又有两个做UI的人员离职,老板觉得仅剩的一个UI也能做图也能切图也能制作,就没在找UI。

每次讨论决定 功能模块的取舍时,一个我认为复杂但不常用可以放到二期的,老板却觉得这块很重要,这块是核心不能去掉。而总是会去掉一些几个小时就能干完的小功能,小改动。

渐渐老板也意识到产品的复杂度,不是我们三个开发两月能完成的,上线时间会晚于黄金周。老板也很着急。。。

(7)寻找成熟电商产品阶段

短暂的迷茫之后,我们开始在网上选择已经成熟的商业产品。

选择的原则是

  • 功能最大程度的符合我们的需求
  • 开源,易修改
  • 有较多成功案例
  • 以上三条都相同时 C#优先

通过调研发现php的居多c#和java较少,php的成熟产品有:ecshop、ecmall、shopex、shopnc、phpshop等。选定完产品后,原有的代码封存,开发人员开始学习php。(我的心很不是滋味,我一手搭建的平台,架构,数据库,还有我们共同开发的后台,前台,还有架设的Redis、solr等 很舍不的。我们三个月努力的心血,一下子所有心血付之东流。唯一值得安慰的是已经越来越清晰的需求)

(8)二次开发阶段

选定完成熟产品后,将我们和选定平台的功能差异详列出来,制定需求变更文档。制定开发计划。这时老板又发话了让在那些威客网上找那些有该平台开发经验的去开发这些功能。核心的我们自己开发。结果在猪八戒网站上投放了一两周,也没发现靠谱的,同时招聘php也进行的不顺利。没办法我们自己上,经过了几天的学习,php的基本语法掌握了,再说在它原有的模块上修改添加功能,我们可以参考原有的设计和实现方式。目前也已进入到了开发收尾阶段。

后 记

在闲暇时间我会继续完善 c#版电商 原有的功能。让它成型、成熟。

现在我也关注BrnShop的进度和功能,brnshop的设计很好有很多值得借鉴的地方如视图引擎、NOSQL实现、插件机制 。美中不足的 界面和功能不是很完善。比如没有首页配置、没有广告位管理、商品促销形式不完善、只支持单店等。

最后福利

第一次开发电商项目第3张

免责声明:文章转载自《第一次开发电商项目》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇程序设计原则(总结)java日期转换下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

干货分享:ASP.NET CORE(C#)与Spring Boot MVC(JAVA)异曲同工的编程方式总结

我(梦在旅途,http://zuowj.cnblogs.com; http://www.zuowenjun.cn)最近发表的一篇文章《.NET CORE与Spring Boot编写控制台程序应有的优雅姿势》看到都上48小时阅读排行榜(当然之前发表的文章也有哦!),说明关注.NET CORE及Spring Boot的人很多,也是目前的主流方向,于是我便决定系...

让C#程序run anywhere 脱离.net Framework框架环境

为了运行一个100K的C#程序,而安装100M多的.NET 框架。。。。。于是发现偷懒的方法多多,试验总结如下:现成的工具有:(1)Xenocode 的postbuidle或者vas(2)Salamander .NET Linker .(3)MaxToCode 作者以前做的 framework linker. 以及一些支持注册表模拟和文件模拟的打包工具mol...

LabView调用C#混合模式dll

在一些特定要求下,我们的C#可能需要制作dll给LabView进行调用,并且我们不能够保证C#的程序是完全自己写而不调用第三方的dll库。很多时候我们需要使用诸如Sqlite.Net、AForge.Net之类的开源库,此时我们发现我们需要使用混合模式去兼容这些由.NET 2.0版本运行时开发的开源库。 一、C#中的混合模式 如果是C#应用程序,那么我们只要...

C#的dll被其他程序调用时,获取此dll正确的物理路径

    当C# dll被其他程序调用时,用Application.StartupPath获取的dll路径并不一定是此dll的物理路径,有可能是调用程序的路径。 以下方法或者能够获取dll正确的物理路径(未经过严格验证): //获取到文件完整路径 string path = Assembly.GetExecutingAssembly().Location;...

通过实例学习C#开发中的泛型

C#中所谓泛型:即通过参数化类型来实现在同一份代码上操作多种数据类型。泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。   C#泛型赋予了代码更强的类型安全,更好的复用,更高的效率,更清晰的约束。   C#泛型机制简介   C#泛型能力由CLR在运行时支持,区别于C++的编译时模板机制,和java的编译时的“搽拭法”。这...

C# 与 Java 的一些差异

如果你是 Java 开发人员,则可以在 Xamarin 平台上充分利用你的技能和现有代码,同时获得 C# 的代码重用优势。你会发现 C# 语法与 Java 语法非常相似,这两种语言提供非常类似的功能。此外,你会发现 C# 的特有功能,这些功能将帮助你轻松进行开发工作。 概述 本文介绍面向 Java 开发人员的 C# 编程,主要侧重于在开发 Xamarin....