维护型项目的管理

2023-05-16


最近,一直在维护一个项目。项目很大,有很多个系统相互配合,且使用的语言也不一样。有JAVA写的系统,有PHP写的,各系统用的数据库也不一样,还有一些我说不出来的技术。项目一直需要维护,每个月都有新的需求要开发,也要支持新系统的部署和日常管理。这是一个企业很常见的产品模式,思路都很清晰。但是,我之所以写下这篇感悟,是因为我觉得自己对项目管理的感受更深了一层。

首先,我要说的是我们项目的不合理之处。

第一点,没有使用诸如MAVEN等的项目管理工具,造成项目代码虚胖。

第二点,没有使用适合该类型项目的按业务分包的模式,归类代码。造成的结果就是高度的耦合。

第三点,虽然使用了SVN协同开发,但没有版本管理。由于需要面对多台服务器的升级与维护,以及新需求的开发,没有版本管理,升级是多么痛苦的一件事。现实结果是我们经常因为未知原因,造成升级线网失败而回滚。

第四点,数据库的建模不合理,缺少约束,技术使用不当。其实项目程序总是处在维护中,由于各类人员的变动造成项目理解误差,即便是经过测试后的代码,上线后总是因为程序漏洞或者业务变动而造成垃圾数据的产生。和程序逻辑变动相比,数据库模型的变动是很小的。我觉得应该尽量把逻辑优先设定在数据库层。如果说在数据库层设置逻辑约束而影响性能,那么再考虑在程序逻辑层把好数据关。另外,项目的数据库建模也糟糕透了。关系不清楚,就连我们开发人员自己都不是很清楚。这种状况与人员变动也有关系。因为没有正确使用缓存,造成数据总是不同步。

第五点,文档不规范,也没有及时维护。这一点是非常严重的。单词拼写错误最为常见。数据库的字段命名,程序代码中,接口文档中有很多单词错误。另外,项目中一个词语有多个版本,比如“用户名”,有“user_name,account”;“机构”有“organization,agency,institution"。项目中也存在命名格式不专业的问题,有"user_name"格式的,有"username”格式的,也有"USERNAME"格式的,常用的是“userName”格式,最后这个才是规范。接口返回不规范也有,虽然有一个文档规范了接口返回的代码含义,但是实际中用的不准确。

第六点,接口设计不合理。接口设计过于复杂,返回数据范围广。这造成了接口异常的慢。即便是使用了缓存系统,复杂的接口,蕴含了复杂的逻辑处理,也快不起来。接口设计应满足一定粒度限制。不能太大也不宜太小,太大响应时间长;太小浪费请求时间。

第七点,安全性问题。这个问题,我不详述。虽为第七点,却是最大隐患。

很多时候,因为项目时间短,我们就会以此为借口,仓促奔赴战斗。我们总是告诉自己,将问题的解决归到未来的优化中。但问题在于,大厦堆的高了,修复难度和成本也高。做事情,基础最为重要。以上的几点问题,首先是因为基础没有打好,缺乏前瞻性;其次是项目管理缺失,最后是执行力不够。

其次,大型项目的管理,需要有公司层次的思维。

人员总是在变动,但公司是不动的。不论集体还是个人都会在过程中过程后积累知识,经验,发现不足之处。如果优秀的东西能够得到继承与发扬,不足之处能够得到改进,那么做出来的产品会越来越好,劳动也会越来越轻松。之所以说管理要有公司层的思维,是因为这个层次可以推广好的生产方式,这是继承的思维。这个层次可以更多地协调事务,毕竟问题的最佳解决层次不往往都是在一个范围。有的问题放到小组内解决即可,有的问题放到团队内部解决为好,有的问题放到公司内部解决最妥。具备这种能力,也需要职员有意识。

最后,人力交接的重要性。人员总是在变动。我刚来的时候,就立马被派着处理数据割接的问题。这里我也表达了管理层用人不当的一个问题。由于没有接受公司项目的培训而直接上了战场,造成的结果就是我没有很好的解决问题,给系统造成了BUG,最后我不得不花很多时间修复它。我认为人力交接是一个问题。主要集中在项目适应上。每个人对陌生的环境都需要一个适应过程。需要去了解业务,了解团队工作模式,了解现有的工作成果。不管怎么样,不管公司层次怎么想,作为团队LEADER一定要有这种思维。否则,会给他人和自己造成麻烦。

虽然感悟了很多不足之处,但是团队中也有很多地方可圈可点。不过,我这人对不合理的地方总是那么映像深刻,然后喜欢去寻找解决办法。对好的东西总是因为认同它,最后因为形成习惯而记不清。现在记录这些,对自己对他人都会有用吧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

维护型项目的管理 的相关文章

  • oracle10g和11g版本自动undo管理模式下的手动问题

    糟心事情终于过了 xff0c 写写看PDF心得 参数 xff1a smu debug mode 来自 ITPUB博客 xff0c 链接 xff1a http blog itpub net 9606200 viewspace 2083963
  • PyTorch学习(10):训练技巧

    PyTorch学习 xff08 10 xff09 训练技巧 Pytorch官方文档 xff1a https pytorch cn readthedocs io zh latest 参考 xff1a https efficientdl com
  • 多个进程启动flask服务

    需求 xff1a 在不同的进程中分别启动flask服务 xff0c 或将其部署到不同的端口号上 span class token comment 导入flask类 span span class token keyword import s
  • python进程池Pool

    需求 xff1a 多进程 xff0c 加快程序运行 span class token comment 示例1 span span class token keyword from span multiprocessing span clas
  • Python进程池报错TypeError: can‘t pickle cv2.dnn_Net objects

    Python进程池报错 Traceback span class token punctuation span most recent call last span class token punctuation span span cla
  • Win10 RTX30系列 安装tensorflow1.15

    Win10 RTX30系列 安装tensorflow1 15 1 遇到的问题 xff1a 直接PiP安装 xff0c 能够安装完成 pip install tensorflow span class token operator span
  • Socket报错:BlockingIOError和greenlet.error

    报错 xff1a BlockingIOError Errno 11 Resource temporarily unavailable greenlet error cannot switch to a different thread Ex
  • 调研:AI货架识别

    综上 xff0c 为AI货架识别的调研结果 不是特别全面 xff0c 粗略了解
  • 基于改进SSIM算法的图像清晰度识别

    文章目录 基于改进SSIM算法的图像清晰度识别1 SSIM算法流程2 SSIM算法实现3 信息熵函数4 图像测试流程5 测试结果总结 基于改进SSIM算法的图像清晰度识别 转载 xff1a https www heywhale com mw
  • 基于DCT算法的图像模糊检测

    文章目录 基于DCT算法的图像模糊检测1 离散余弦变换DCT2 基于离散余弦变换DCT来估计图像模糊度的图像质量评价算法总结 基于DCT算法的图像模糊检测 转载 xff1a https yinguobing com dct blur ima
  • 标注工具——VGG Image Annotator (VIA)

    VGG Image Annotator VIA VGG Image Annotator VIA 是一款开源的图像标注工具 xff0c 由Visual Geometry Group开发 地址 xff1a http www robots ox
  • 0gR2最大保护模式DataGuard创建 (转载)

    10gR2最大保护模式DataGuard创建 一 设置主库归档 设置主库为force logging SQL gt alter database force logging 设置主库为归档模式 xff1a SQL gt archive lo
  • PyTorch学习:对比CV2和PyTorch的预处理

    验证预处理一致性 span class token keyword import span os span class token keyword import span cv2 span class token keyword impor
  • word中删除分节符时页面格式会发生改变

    word中删除分节符时页面格式会发生改变 问题 xff1a word xff08 word2007 word2010 word2013 word2016等 xff09 删除分节符 xff08 下一页 xff09 以后 xff0c 分节符以前
  • Ubuntu终端代理工具——proxychains

    安装proxychains sudo apt install proxychains 配置proxychains 打开proxychains配置文件 sudo vim etc proxychains conf 在proxychains co
  • 只是因为多看了你一眼

    不得已的选择 高考 xff0c 应该是每个学生心中最难忘的一场考试了 xff0c 在过去十二年里有无数场大大小小的考试 xff0c 无论你过去是多么的优秀 xff0c 还是多么的差劲 xff0c 只要这一次你 xff0c 赢了就是赢了 xf
  • Cmake之CMakeLists.txt

    我们知道makefile是在Linux编译c或者c 43 43 代码的时候的一种脚本文件 xff0c 但是每一个功能都要写一个makefile文件 xff0c 这样如果这个工程很大 xff0c 而且相关性比较强的话 xff0c makefi
  • 【网络排故】能ping通但是不能ssh服务器

    花了一天时间找到了问题原因 xff0c 中途找厂商售后排故无果 xff0c 自己用时间啃出来的结果 问题现象 xff1a 某日下午同事突然告诉我某服务器 xff08 Error A xff09 无法访问了 xff0c 接着是一批服务无法访问
  • 10 | apt 常用操作命令

    目录 1 linux系统1 1 RedHat系列1 2 Debian系列 2 apt 命令2 1 列出所有可更新的软件清单命令2 2 升级软件包2 3 列出可更新的软件包及版本信息2 4 升级软件包 xff0c 升级前先删除需要更新软件包2
  • linux线程调度策略

    系统中既有分时调度 xff0c 又有时间片轮转调度和先进先出调度 学习这个主要为了在linux多线程中 xff0c 解决几条指令间延时在1 2ms内 xff1b 1 比如之前处理过 xff1a 给一个板子发送一个can指令 xff0c 接着

随机推荐

  • Linux 平台安装 VNC

    VNC一共有三个版本 xff0c TightVNC RealVNC UltraVNC xff0c RealVNC旨在推进商业化 xff0c 因此需要License xff1b TightVNC旨在改善服务器和查看器之间的VNC压缩 xff0
  • git push origin --tags失败,提示prohibited by Gerrit

    环境 xff1a linux 43 jenkins 43 gradle 情景 xff1a gradle 编译android包的时候 xff0c 希望Push tag到remote 服务器 xff0c 每次都失败在git push origi
  • PB编程:键盘enter默认触发和界面打开默认输入

    1 键盘enter默认触发 xff1a 键盘按下enter后 xff0c 触发某个按钮 在该界面的KEY事件中 xff0c 输入代码 xff1a if keydown keyenter then cb 1 triggerevent 34 c
  • Mininet

    部分转载自 负载均衡 常用命令 link s1 h2 downlink s1 h2 up通过 switch 选项跟 controller选项可以分别指定采用哪种类型的交换机跟控制器 xff0c 例如使用用户态的交换sudo mn switc
  • 我的2014

    我是一个双鱼座的女孩 xff0c 我很喜欢幻想 没事时总是会喜欢去想象自己的未来或者近期生活的样子 进入大学后 xff0c 我发现很多东西很多事都不是想象中的那么美好 大学生活不似想象中的那么简单轻松 xff0c 想要学好自己的专业 xff
  • 开源的文本标注工具

    开源的标注工具 自然语言处理标记工具汇总 https blog csdn net wangyizhen nju article details 94559607 spacy原来有两个标注工具 xff0c displaCy ent和displ
  • 网络虚拟化协议GENEVE

    去年看到过一篇文章 1 xff0c 说是通过OpenVSwitch的测试 xff0c GENEVE的性能要略优于VXLAN 我相信大多数人的反应可能跟我的第一反应一样 xff0c 这不又是一种Overlay协议吗 xff1f 为什么性能会更
  • C++ 一个简单的判断子网掩码是否有效的函数

    简介 子网掩码 subnet mask 又叫网络掩码 地址掩码 子网络遮罩 xff0c 它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网 xff0c 以及哪些位标识的是主机的位掩码 子网掩码不能单独存在 xff0c 它必须结合IP
  • css中块元素和内联元素有什么区别?

    块级元素和内联元素 xff0c 我想接触过CSS的朋友都有所了解 xff0c 但是在实际写CSS代码时却考虑的并不多 xff0c 我们无意中就已经按照块级元素和内联元素的规则进行布局样式了 我有时在想 xff0c 为什么要区别块级元素和内联
  • 用docker启动ubuntu的桌面环境

    在win10下使用了docker之后 xff0c 已经完全抛弃了之前虚拟机的开发方式 xff0c 在学习一些计算机视觉相关的内容时 xff0c 可能需要在图形化界面进行开发和调试 xff0c 所以尝试了下在dockerhub上搜索了下支持d
  • 使用Git Extensions直接push代码到Gerrit审核

    公司使用Gerrit代码审核 xff0c 本地push代码只能提交到refs for branch xff0c 所以使用git bash进行push时 xff0c 需要使用如下命令 git push origin HEAD refs for
  • C++避免变量重复定义

    C 43 43 小白选手 求轻拍 在A cpp B cpp文件中同时包含B h 这样的话在B h中的变量就会重复定义了 解决的办法是在B h中 变量前面加上extern关键字 在B cpp文件中再定义一次
  • 使用Eclipse编译运行MapReduce程序

    下载eclipse 64位 http eclipse bluemix net packages mars 1 JAVA LINUX64 解压到安装目录 安装 Hadoop Eclipse Plugin 要在 Eclipse 上编译和运行 M
  • 内部网盘phpdisk创建记录

    PHPDISK的这次创建是在PHPWIND8 7的基础上 xff0c 一起安装的 xff0c 所以单独安装PHPDISK所需要的RPM包就不需要再安装了 将PHPDISK解压缩后 xff0c UPLOAD文件夹里面的东西 xff0c 复制到
  • July 17th 模拟赛C T2 Number Solution

    空降题目处 外网 点我点我点我 空降题目处 内网 点我点我点我 Description 给出一个整数 xff0c 你可以对 进行两种操作 1 将x变成4x 43 3 2 将x变成8x 43 7 问 xff0c 最少通过多少次操作 xff0c
  • np.maximum vs np.minimum

    一直按照字面意思理解 xff0c 以为maxmum取最大值 examples 原来是有广播机制的 xff0e np maximum 取对应位置上的大值 xff0c np minimum 取对应位置上的较小值 xff0e import num
  • tensorflow通过模型文件,使用tensorboard查看其模型图Graph

    Google提供了一个工具 xff0c TensorBoard xff0c 它能以图表的方式分析你在训练过程中汇总的各种数据 xff0c 其中包括Graph结构 所以我们可以简单的写几行Pyhton xff0c 加载Graph xff0c
  • numpy中np.maximum的使用

    np maximum X Y out 61 None X和Y逐位进行比较 选择最大值 xff0c 最少接受两个参数 gt gt gt np maximum 2 3 4 1 5 2 array 2 5 4 gt gt gt np maximu
  • [svn]status命令

    wangyetao 64 linux u1604 LinuxRoom SVN FILE 个人空间 xx wangyetao 64 linux u1604 LinuxRoom SVN FILE 个人空间 xx svn help status
  • 维护型项目的管理

    最近 xff0c 一直在维护一个项目 项目很大 xff0c 有很多个系统相互配合 xff0c 且使用的语言也不一样 有JAVA写的系统 xff0c 有PHP写的 xff0c 各系统用的数据库也不一样 xff0c 还有一些我说不出来的技术 项