• 第一次开发电商项目


      先讲一下工作经历吧,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重写 内容太多了不细说。

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

     

      (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实现、插件机制 。美中不足的 界面和功能不是很完善。比如没有首页配置、没有广告位管理、商品促销形式不完善、只支持单店等。

    最后福利

  • 相关阅读:
    自实现简单线程池
    Object obj=new Object()的内存引用
    Java运行时内存模式学习
    C/C++、C#、JAVA(一):代码模板与库代码的引入
    java GUI 快速入门
    C# 一些类名的后缀及其意义
    ASP.NET Core 中jwt授权认证的流程原理
    .NET Core 获取主机运行资源的库
    .NET Core 获取程序运行环境信息与反射的应用
    【5分钟+】计算机系统结构-数据表示
  • 原文地址:https://www.cnblogs.com/xiaokangufo/p/3916543.html
Copyright © 2020-2023  润新知