分享一篇去年的项目总结
xxxTMS项目总结
追梦1819(2017-7-26)
作者:追梦1819
原文:https://www.cnblogs.com/yanfei1819/p/10856203.html
版权声明:本文为博主原创文章,转载请附上博文链接!
背景
今天是2019年5月13日,而这篇总结是去年7月26号写的。博主一直都有一个习惯,就是在一个项目完成时或者一个大的版本迭代后,都会对工作的方方面面进行一个总结。不过这篇总结比较特殊,公司领导要求我们写的,而博主的这篇总结,也被领导拿出来给其余同事当范例参考。当时开发的是公司的 xxxTMS 项目,项目开发不久,团队也是新组建的,大家处在一个探索期和磨合期。
可是再回头看是,这个团队以及当时领导的管理,是我见过的效率最高和管理最好的(此处的管理是指项目管理,不涉及公司层面的行政或者人事管理)。今天拿出这篇总结,目的是提醒自己不管什么时候,都不能忘记自己的初心,同时要对自己的工作的方方面面不断思考,而不只是做一个敲代码的机器。
前言
TMS本次迭代开发,我负责的模块主要有:到达确认、回单上传、回单确认、企业钱包等功能。在开发过程中,遇到了很多问题,以下是对所遇到问题的描述以及总结。
正文
一、问题描述
项目开发过程中,我将所遇到的问题分为两个部分,需求理解部分(1-6)和功能实现部分(7-9)。
1、需求文档不够详细。下面是所遇到的几个实例。
1) 回单录入列表,应该是“有回单”且“已到达”状态,但文档只有“仅显示待回单录入的运单”几个字;
2) 到达确认的逻辑,有到付金额显示到付金额,无到付金额显示尾款,两者都无不显示,这个逻辑在需求文档中都没有;
3) 钱包注册过程中,在使用体验上来说是应该有【上一步】按钮,但是需求文档没提到,后面使我们自己加入的;
4) 检索部,为提升用户的体验效果,有的字段可以作为检索条件,比如运单编号;
2、部分新的需求或者新的样式到开发后期产品部才确定下来,比如钱包相关的功能,这在一定程度上同样会影响开发进度;
3、需求的不断变更(难以避免);
4、如果是调用上海那边的接口,很容易出问题,他们所给的api文档,可能不是最新的;
5、每个人只关注了自己的个人开发模块,对项目没有一个整体的认识,或者说与自己相关的模块都没有去了解;
6、业务理解得不够深刻,甚至把比较复杂的逻辑理解得很简单,导致开发后期手忙脚乱;
7、基本上都只是相似功能代码的复制粘贴和修改。这导致了很多问题:
1) 出现很多没用的垃圾代码;
2) 不理解所以然,会出现很多意想不到的bug;
3) 很多不规范的代码甚至错误的代码会不断“流传下去”,会进入一个恶性循环;
4) 看似相同的功能,但是实现方式不同的代码,并不能复用,更加不能简单的复制粘贴。例如系统中有很多的照片上传功能,但是实现时,有的接口是接受图片路径,有的接口直接接收图片;
8、框架不熟,如angular和bootstrap;
9、部分字段的校验被忽略。
二、总结
遇到问题,我们得总结出相应的方法去解决,避免下一次掉进同样的坑。
1、关于需求理解,我一直都认为是开发过程中的重中之重。只有正确的、深刻的理解好需求,才能更好更快的进行开发,以下是关于需求理解的一些感想:
1) 尽可能细化需求文档,更深入理解,不理解的、不够详细的或者我们想到而产品部没有提到的,尽早跟产品部沟通;
2) 复杂的逻辑,尽量能画出图表,有助于理解和修正;
3) 需求的不断变更,是在任何项目开发、产品开发的过程中无法避免的。但是希望产品部的设计人员能够以书面的方式通知需求变更,然后调整相应的开发时间和测试时间。而不是仅仅口头说变就变,这样可能影响开发进度;
4) 在深入了解自己开发模块的前提下,至少要理解跟自己相关的模块,比如数据的来源的对应模块,数据的输出对应模块等。拿运单管理模块来说,运单的状态变化要了然于胸;
5) 如果是调用别人的接口,一定要保证沟通的正确性(如字段名、字段类型)、及时性(必须是最新的接口);
2、关于功能实现的总结
1) 在开发过程中,要善于总结,比如类似功能的代码,框架的基本使用,一些常用字段的校验等,形成自己的“代码库”,这样在后续的开发过程中会极大的提高效率;
2) 复制粘贴类似功能的代码,一定要多问几个为什么。尽量做到理解每一行代码的意义,不写无用无效的代码;
3) 所用到的框架(TMS系统主要用到了spring+hibernate(后端),bootstrap+angular(前端)),应该主动、多花时间去熟悉去学习,尽量能够做到知其然知其所以然;
三、后续
1、开发过程中,我们不应是为了开发而开发。要多多站在用户的角度考虑(当然,这个如果跟需求文档设计的不一致,就要先跟产品部沟通)。比如上面说到的检索部加一些比较实用的检索条件、钱包开户加【上一步】按钮等;
2、项目所用到的技术,要去深究,不能一直只浮在表面,不然可能会产生许多不可意料的坑。
转载于:https://www.cnblogs.com/yanfei1819/p/10856203.html
分享一篇去年的项目总结相关推荐
- 分享一篇我很喜欢的文章《不破不立的哲学与个人成长》
本文引用自张鑫旭的博客 原文地址:http://www.zhangxinxu.com/life/?p=801 前言 分享一篇我个人特别喜欢的一篇文章,每隔一段时间我都会搜出来看一看,提醒激励一下自己, ...
- 【无私分享:ASP.NET CORE 项目实战】目录索引
简介 首先,我们的 [无私分享:从入门到精通ASP.NET MVC] 系列已经接近尾声,希望大家在这个过程中学到了一些思路和方法,而不仅仅是源码. 因为是第一次写博客,我感觉还是比较混乱的,其中 ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 终结篇之发布项目
基于 abp vNext 和 .NET Core 开发博客项目 - 终结篇之发布项目 转载于:https://github.com/Meowv/Blog 既然开发完成了,还是拿出来溜溜比较好,本篇是本 ...
- 分享一篇关于陌生人社交的竞品分析报告
上次分享了学员写的陌生人竞品分析报告上(分享一篇关于陌生人社交的竞品分析报告(上)),这次接着分享下半部分,也欢迎大家提意见. 3.5 重要数据对比 数据来源 -- 易观数据2020年3月 根据以上数 ...
- 【爬虫】Python爬虫经验分享--爬取码市招聘项目
以下内容为本人原创,欢迎大家观看学习,禁止用于商业用途, ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/details/ ...
- 【社区分享 - 游戏篇】AWS云科技助力游戏内容开发 - 游戏项目构建篇 运行篇 增长篇
[社区分享 - 游戏篇]AWS云科技助力游戏内容开发 - 游戏项目构建篇 & 运行篇 & 增长篇 文章目录 [社区分享 - 游戏篇]AWS云科技助力游戏内容开发 - 游戏项目构建篇 & ...
- 分享一个进销存项目(多层架构)
分享一个进销存项目(多层架构) 花了点时间完成了一个进销存的项目,个人觉得对逻辑分析,架构思想都有一定的体会,故拿出来和大家分享下,首先介绍下项目的功能吧,主要功能有采购管理,销售管理,库存管理,人员 ...
- iOS开发拓展篇——如何把项目托管到GitHub
iOS开发拓展篇--如何把项目托管到GitHub 说明:本文主要介绍如何把一个OC项目托管到Github,重操作轻理论. 第一步:先注册一个Github的账号,这是必须的 注册地址:Github官网注 ...
- 「实战篇」开源项目docker化运维部署-后端java部署(七)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:「实战篇」开源项目docker化运维部署-后端java部署(七) 本节主要说说后端的部署需要注意的点,本身renren-fas ...
- [转]【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现
本文转自:http://www.cnblogs.com/yuangang/p/6000460.html 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 很长时间没有来更新博客 ...
最新文章
- Visual Studio 2005中文版
- CentOS上Nginx服务器安装phpmyadmin
- 剑网3 最新服务器,《剑网3》各服务器IP及所在地
- 从Windows上用SSH链接接入Ubuntu
- Ranger-Yarn插件安装
- easyui弹出窗关闭前调用确认窗口,先关闭页面后调用弹出窗口
- IDC:大数据——数字化转型时代的大商机
- Waves13混音效果全套插件
- 服务器字体显示繁体字怎么解决,win7繁体字乱码怎么办?win7繁体字显示乱码解决方法...
- Python中的and和or运算
- ubuntu下安装gfortran
- C语言 —— 多维数组
- 清理工作区git clean -fd
- 邓号用计算机怎么输入,电脑上顿号怎么打出来
- java输出GPA,简单的C GPA计算器问题
- 基恩士编程c语言,基恩士xg7000系列.pdf
- python 八进制转十_python进制转换(二丶八丶十丶十六)
- JavaScript的逆袭
- 使用sql如何找出两张表中同一字段的不同值
- 解决easyExcel读取EXCEL用String去接收数字,出现小数点BUG
热门文章
- #读取json某一节点数据_06596.2.0Hive处理JSON格式数据
- 为什么visual的联机浏览功能不能用_Minecraft非正版联机教程
- java 性能优化分析工具_【java】JVM性能调优监控工具、可视化在线内存分析工具...
- 翻译: 4.1 多层感知器MLP Multilayer Perceptrons pytorch
- c语言显示cpuid_ccpuid:CPUID信息模块。范例:显示所有的CPUID信息
- java 内部邮件_java – 来自内部存储的电子邮件
- mysql手动编译安装_手动编译安装Mysql
- MAB多臂老虎机/赌博机
- 说明assert()的作用:assert()是一个调试程序时经常使用的宏,在程序执行时计算括号内的表达式,如果表达式为假,程序报告错误,并终止执行;若表达式为真,则继续执行后面的语句。
- 创建一个超链接,点击这个超链接,显示数据库中的数据信息:MVC模式查询