小议企业开发部门的分工与合作

2023-05-16

周五帮以前部门的同事查一个测试环境的权限错误的问题。一个用户在系统里的权限设置,一切很正常。但是从中间层的权限检查老报错。虽然这个系统的权限检查部分是我一年多以前做的,而我已经换到另外一个部门有一段时间了,但是看到同事为难的表情,还是义不容辞的过去帮了忙。


大家把问题的排查主要集中在权限检查部分。其实,这个权限检查的设计很简单,当时由于检查的数据非常多,而且全部存在一个数据库中,所以我把核心逻辑全部封装在一个数据库函数中,然后为不同的检查情况提供了不同的存储过程接口。核心逻辑在当时根据不同数据情况也设计了上千个单元测试。每次对核心逻辑进行修改或者优化的时候,都要经过严格的测试检查。同事给我看了用户的权限设置,和中间件的存储过程调用,都没有问题,但是为什么会报错呢?而且这个权限模块当时经过了严格的测试,难道真的到两年后会找到这么明显的问题?经历了一个小时的痛苦调试,最后终于发现问题不是发生在权限模块,而是在前端的Flex部分。前端在界面切换的时候错误的使用了缓存中的信息,导致把错误的参数发到了中间件中,造成真个的问题。


问题找到了之后,我自然接受了一顿感谢。看着同事给前端和中间件的程序员打电话解释问题,又写了一封冗长的邮件要求他们修改代码,我只能一笑:一个小时前还颐指气使的前端程序员有的忙了。这个故事其实很平淡无奇,每天发生在不同的IT公司,不同的IT部门。写程序就是这样,发现问题永远比解决问题难,更有意思的是问题往往不在我们所关注的地方,所以程序员加班调程序找bug,可以说是再正常不过的了。


看到这里,大家肯定要问你为什么要在周末花时间写这么一个无聊的故事呢?难道真的是闲的蛋疼?你不嫌浪费时间,不要浪费我们看的时间啊。呵呵,其实下面开始才是今天要讨论的问题,那就是IT开发部门的分工和协作问题。这个问题在很多年以前其实本不是问题。在那时候,大多数程序员都是像Iron Man一样的孤单英雄,一个人从客户需求,编写代码,到测试,上线和生产支持全部搞定。随着软件开发产业化和规模化,这个手工作坊式的经营慢慢被抛弃了。一是由于一个人的精力实在有限,二是随着IT系统越来越重要,公司无法接受这种一人包揽的风险性。IT软件行业的第一次分工也就这样形成了:软件需求,软件开发,软件测试,软件部署,软件维护。


今天我们不在这里讨论以上分工是否合理,不去研究为什么搞需求的为什么后来都成了项目经理,而写代码的却还是程序猿。我们在这里只看软件开发这部分。随着软件越来越庞大,软件开发分层理论的提出,软件功能又被细分为表示层,中间件,后台,和数据库。很多公司也就根据这种横向的软件层次划分对开发部门进行行政划分和管理,程序员也就根据自己的术业专攻被安排在某一个功能层面上了。很多程序员也乐于这种模式,因为这样可以专注于某一领域,而不是什么都搞,什么都不精通。这样的模式使用长了,IT公司和部门也就自然而然的按照这种模式去划分公司的行政部门了。发展到这个阶段,一旦软件出现问题,我们就会看到几个部门的经理在一起和自己底下的程序员加班加点,问题严重的话,不免也会互相推卸责任。而程序员呢?由于只了解自己的代码,但只见树木不见森林,所以不免相互推脱。这样不但解决问题的效率非常低,而且会产生很多不必要的人事矛盾。


其实,我们应该更推崇另外一种IT部门管理模式,那就是根据业务的功能划分,每一个小组来实现Front to back的功能,这样,一个小组,一拨人会掌握一个相关功能的全部知识,当问题出现了,由于整个功能都是一个部门做的,不但不会有互相推卸责任的问题,问题解决起来也会比较快,因为每一个程序员都应该对整个业务流程有理解和认识。


对上面说的这种模式,很多IT管理者都会不以为然,因为,他们会认为这样做的话我要为每个团队配备DBA,中间件开发,和前端开发的人,他们还要干自己不精通的东西,这不是重复劳动和提高成本了吗?其实不然,只要作为管理者鼓励这些团队互相交流,并且对每个团队的技术方案进行整体审批,当你打开了大家交流的通道,聪明的程序员们都会自己互相学习的。管理这方面其实我不想多说,因为明白的管理者是不需要我说的,而糊涂的管理者看到我说的也不会去改变什么。当然,还有一种管理者,他们明白事情该怎么样,而自己的影响力却不能改变什么。


从我们每个程序员的角度来说,究竟哪种模式好呢?很多人会认为精通一个领域,成为专家大牛是理想的,所以前一种模式会优于后一种。我个人并不否认成为技术大牛是很厉害的,但是在这里我提出一种新的思维方式。首先,我们要考虑几个问题,有多少程序员可以成为领域的大牛呢?有多少企业在IT领域是靠技术吃饭的?有多少IT项目是因为技术而不是人事管理搞砸的?在公司招人的时候,是一个高级管理难找,还是一个会特定技术的人难找?这些问题的答案告诉我们两点,那就是,成为技术大牛很难,而技术不是在IT行业最安身立命的本钱。对于像我一样的大多数程序员来说,其实一味的去钻营技术并不是什么好的出路。相反,学会在IT公司于人打交道,把事情做成,将会使你的职业发展如虎添翼。作为一名程序员,如果你现在的工作允许你接触很多东西,请你一定要珍惜。如果你现在的工作只是整个软件中一个层中的一小部分,那么,其实也不要担心,没有条件,我们可以创造条件。这几年流行跨界,其实程序员,最需要跨界。

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

小议企业开发部门的分工与合作 的相关文章

  • Jetson Nano设置风扇自启动

    Jetson Nano跑一些如目标识别等需要较大计算量的程序 xff0c 散热板会非常的热 xff0c 为避免主板过热 xff0c 通常在散热板上加装一个风扇增强散热 风扇需要软件指令进行驱动 xff0c 驱动风扇的指令为 sudo sh
  • Ubuntu 18.04安装gazebo9

    首先 xff0c 把gazebo的源添加到apt的source list中 sudo sh c echo deb http packages osrfoundation org gazebo ubuntu stable 96 lsb rel
  • 问题解决:/usr/bin/ld: cannot find -lbz2

    在项目编译过程中 xff0c 出现类似如下的错误 usr bin ld cannot find lbz2 经查询 xff0c 是找不到bz2的库文件 xff0c 用whereis命令查询 whereis libbz2 找不到对应的库文件 x
  • 常用Git命令

    通过git命令可以对项目代码库执行克隆 拉取 提交等操作 常用的git命令有如下 git clone 克隆代码库 xff0c 把远程代码库克隆到本机当前目录 xff0c 如 git clone https github com PX4 PX
  • 【Android】原来Toolbar还能这么用?Toolbar使用最全解析。网友:终于不用老是自定义标题栏啦

    一个Toolbar的UI可以做成什么样 xff1f 做出什么效果 xff1f 这是我最近在研究的问题 目录 带导航图标的Toolbar带标题的Toolbar带小标题的Toolbar带Logo的Toolbar带进度条的Toolbar带菜单的T
  • Linux安装Beyond Compare

    Beyond Compare是一款很好用的代码比对软件 xff0c 提供了在Windows xff0c Linux等平台的安装包 在Linux下安装Beyond Compare的方法如下 参考链接 xff1a https www scoot
  • Linux下压缩解压文件和目录的方法(zip, tar)

    Linux下可以用zip命令方便的压缩文件或文件夹 压缩文件 zip data zip data xls zip data zip data1 xls data2 xls 上述命令把一个文件或者多个文件压缩到一个zip文件 压缩目录 zip
  • Jupyter Notebook安装

    Jupyter Notebook是一个非常好用的交互式Python运行的软件 安装方法如下 在命令行输入 pip3 install jupyter 安装后根据提示 xff0c Jupyter相关软件安装在 local bin目录下 xff0
  • Ubuntu添加截屏快捷键的方法

    在Ubuntu下面具有截屏的命令 xff08 gnome screenshot xff09 xff0c 可以通过简单的设置方便的添加截屏快捷键 通过 Settings gt Devices gt Keyboard选项 xff0c 添加快捷键
  • Windows下修改Jupyter Notebook默认字体的方法(custom.css)

    在Windows下Jupyter Notebook代码显示的默认字体为宋体 xff0c 视觉效果不是很好 xff0c 可以通过设置修改默认的显示字体 通过用户目录 C User Administrator jupyter custom 下的
  • Jupyter Notebook添加代码自动补全功能的方法

    Jupyter Notebook成为一款非常受欢迎的交互式Python运行环境的软件 通过如下的方法可以添加代码自动补全的功能 输入命令安装插件 pip3 install jupyter contrib nbextensions 然后运行
  • 修改grub默认启动选项的方法

    在Windows系统基础上 xff0c 再安装Linux xff0c 形成双系统 这样在grub启动菜单中会包含Linux Windows等多个选项 xff0c 默认为第一个选项 xff0c 常规的Linux启动 通过修改配置文件 etc
  • 在云服务器上搭建Jupyter Notebook服务

    Jupyter Notebook提供了远程登录的功能 xff0c 可以在云服务器上配置Jupyter Notebook xff0c 用户可以远程登录和运行Python代码 这里使用的是腾讯云的Ubuntu服务器 xff0c 配置方法如下 1
  • 常用Linux命令

    记录一些常用的Linux命令 1 用户管理 增加用户 useradd lt user name gt useradd g lt group name gt lt user name gt g选项指定新用户所属的用户组 修改用户的组别 use
  • 在云服务器上安装VNC远程桌面服务

    云服务器操作系统通常不包含图形界面 xff0c 通过在服务器上安装VNC服务 xff0c 可以让用户以图形化界面远程登录到云服务器 这里服务器使用的是Ubuntu Server 18 04系统 1 安装图形界面 首先在服务器端安装图形化桌面
  • 【Android】ADB无线连接Android设备

    目录 简介无线连接的条件adb连接设备方法一方法二 修改端口号方法一方法二 辅助工具android toolscrcpy gui 问题集合 简介 Android Debug Bridge xff0c 简称adb xff0c 是一种功能多样的
  • 人工智能学习:载入MNIST数据集(1)

    MNIST数据集是人工智能学习入门的数据集 xff0c 包含了一系列的手写的数字图片 载入MNIST数据集的方法很简单 xff0c Tensorflow集成了载入数据集的方法 首先导入tensorflow模块和matplotlib pypl
  • 人工智能学习:MNIST数据分类识别神经网络(2)

    在MNIST数据集上构建一个神经网络 xff0c 进行训练 xff0c 以达到良好的识别效果 1 导入模块 首先 xff0c 导入必要的模块 span class token keyword import span numpy span c
  • 人工智能学习:NMIST数据分类识别-CNN网络(3)

    这里采用CNN模型 xff08 卷积神经网络 xff09 来进行MNIST数据集的分类识别 1 导入模块 首先 xff0c 导入需要的模块 span class token keyword import span numpy span cl
  • 人工智能学习:CIFAR-10数据分类识别(4)

    与MNIST类似 xff0c CIFAR 10同样是人工智能学习入门的数据集之一 xff0c 它包含飞机 汽车 小鸟等10个类别的图片 xff0c 一共60000张图片 xff0c 其中训练集占50000张 xff0c 测试集占10000张

随机推荐

  • 人工智能学习:CIFAR-10数据分类识别-VGG网络(5)

    这里尝试采用VGG网络对CIFAR 10数据集进行分类识别 1 导入需要的模块 span class token keyword import span numpy span class token keyword as span np s
  • 人工智能学习:PASCAL VOC数据集读取(6)

    PASCAL VOC是一个国际的计算机视觉挑战赛 xff0c 数据集包含了20个分类的3万多张图片 挑战赛及其数据集基础上涌现不少知名的目标检测模型如R CNN xff0c YOLO xff0c SSD等 可以通过下载和读取的方法载入PAS
  • 人工智能学习:Microsoft COCO数据集读取(7)

    Microsoft COCO xff08 Common Objects in Context xff09 是微软研发维护的一个大型的数据集 包含了30多万张图片和91个目标分类 可用于目标识别 xff08 Object Detection
  • 人工智能学习:ResNet神经网络(8)

    ResNet是一种非常有效的图像分类识别的模型 xff0c 可以参考如下的链接 https blog csdn net qq 45649076 article details 120494328 ResNet网络由残差 xff08 Resi
  • 人工智能学习:倒立摆(CartPole)(9)

    倒立摆是强化学习的一个经典模拟对象 xff0c 通过对倒立摆对象的持续的动作输入 xff0c 使倒立摆保持在竖立的状态或者倒下 Python提供了一个模拟库 xff08 gym xff09 来模拟倒立摆等一些典型的难度控制对象 首先载入gy
  • 理解卡尔曼滤波

    卡尔曼滤波被广泛的应用于运动估计中 xff0c 在飞行器中多有应用 xff0c 区别于普通滤波如低通滤波 xff0c 卡尔曼滤波具有不延时的优点 xff0c 即普通的低通滤波在过滤噪声的同时也会引入信号滞后 xff0c 而卡尔曼滤波则可以实
  • 【Kotlin】Kotlin函数那么多,你会几个?

    目录 标准函数letrunwithapplyalsotakeIftakeUnlessrepeat小结作用域函数的区别作用域函数使用场景 简化函数尾递归函数 xff08 tailrec xff09 扩展函数高阶函数内联函数 xff08 inl
  • 2021-02-13

    昨天学习了关于位运算的一些常识 xff0c 自己也跟着视频敲了一些位运算代码如下 xff1a package com raisecom tiap ems basic mgt domain acl import java util Array
  • 字符串匹配中KMP算法的next数组构造与思考

    对于KMP算法的next算法 xff0c 匹配规则i不动 xff0c j而是根据 next j 61 k 如果在j位置失配 xff0c 则退到k位置 构造next数组的 是根据前缀与后缀的最长匹配 如ababaa 的next数组是 1001
  • 字符串匹配的后缀数组的直接比较和利用rank[i]=k的倍增法

    public static Suff getSa String s Suff SuffArrays 61 new Suff s length sa i 61 k表明的排名为i的后缀是从k开始的 for int i 61 0 i lt s l
  • 关于求后缀数组的公共前缀的长度height数组求法思路与代码

    字符串匹配之后缀数组 概念 xff1a 后缀数组 xff1a 是所有后缀按字典排序后 xff0c 数组中记录的起始下标 sa 0 61 5 起始下标为5的后缀 在所有后缀中字典最小 rank数组 xff1a 是给定后缀下标 xff0c 返回
  • Excel 2013 Power Programming with VBA 翻译

    第14 章 xff1a 基于VBA开发的Excel实用工具 545页 是什么让它成为一个优秀的工具 xff1f Excel工具 xff0c 理所应当的让你的工作变得更容易或者更有效 但是 如果你正在为其他用户开发一个实用工具 xff0c 你
  • myeclipse中编写小java项目遇到的一些问题(持续更新)

    刚开始学习java程序 xff0c 读了 lt lt thingking in java gt gt 刚开始编写正常 xff0c 可后来再次打开时看到所创建的java项目都会出现红色叉号 后来搜了一会儿却还是什么感觉很乱 xff0c 最好也
  • IT成长录

    少壮不努力 xff0c 老大学IT xff0c 初次听到这句话是我大学老师在一次上课时看到满班乱哄哄的气氛说的 xff0c 当时以为他是嘲讽我们或者是略微自嘲呢 xff0c 现在回想起来有些不一样的感觉 从自己第一份接触IT工作 xff08
  • 我所了解的大数据

    大数据如今越来越热 xff0c 数据量再大不会用 xff0c 放到那里也是存储垃圾 所以随着数据量的越来越大 xff0c 对数据的各种处理和挖掘需求也很多 这就促进分布式存储和计算软件的快速发展 xff0c 集群的规模也越来越大 从以前的某
  • 通过Jetty搭建一个简单的Servlet运行环境

    最近在做一些简单的Servlet开发的时候 感觉每次调试的时候都要发布到tomcat上很麻烦 把程序共享给同事也很麻烦 需要帮他设置本地的tomcat环境 在网上找了找其他的Servlet运行环境 发现用Jetty可以很方便的实现嵌入式We
  • 一些常用的Maven Plugin配置

    Maven是一个常用的Java build Manager 使用Maven可以很好的对Java Project的dependency进行管理 这里我记录几个比较常用的Plugin配置 生成JAR打包文件 lt plugin gt lt gr
  • 【Android】测试方法汇总,助力打造完美应用

    目录 Log 打印日志Junit 单元测试Debug 断点调试Monkey 压力测试Profiler 性能分析器ADB 无线连接设备Appium 自动化测试BlockCanary 界面卡顿检测App Inspection 应用程序检查Dat
  • 在Java项目中整合Scala

    Scala是一个运行在Java JVM上的面向对象的语言 它支持函数编程 xff0c 在语法上比Java更加灵活 xff0c 同时通过Akka库 xff0c Scala支持强大的基于Actor的多线程编程 具有这些优势 xff0c 使得我最
  • 小议企业开发部门的分工与合作

    周五帮以前部门的同事查一个测试环境的权限错误的问题 一个用户在系统里的权限设置 xff0c 一切很正常 但是从中间层的权限检查老报错 虽然这个系统的权限检查部分是我一年多以前做的 xff0c 而我已经换到另外一个部门有一段时间了 xff0c