拿什么拯救你,我的团队

2023-05-16

一向认为软件开发就像是在搭房子或者说是在构建一座宏伟的大厦,当然这根据工程的大小而定。其实细细想来软件工程的很多地方都是借助于建筑方面的知识,就从“工程”这个词来说就是从建筑学引进的,类似的还有设计模式等概念也是来源于建筑学。如此说来软件的开发和建造房屋一样,一般是多人合作完成的。如果您非要自己动手盖一个小平房也不是不可以,但请注意那一定是一个足够小的小平房。

其实要说起团队开发让人最头疼的不是什么技术问题,而是队员之间的合作问题。尤其是遇到矛盾重重的团队,那项目的进度一拖再拖将是家常便饭。团队开发绝不是架个SVN拉几个有水平的程序员就可以开始的事情!需要注意很多方面才有可能出色的合作完成一项工程。

 

l  给力的项目经理(项目组长)

首先,项目经理(项目组长)必须全面的了解项目的需求,根据需求和组员们商讨出一套合理的解决方案来。在这个过程中遇到不同的解决方案项目经理(项目组长)要敢于拍板,敢于承担责任。无论选择的对错都要比不选择要强,选择时畏首畏尾只会令项目延期,而选择错误大不了下次升级版本。一般说来在能实现功能的前提下,用户更加关心完成的日期而不是性能。因为每拖一分钟用户对软件能否实现的信心就减小一分。

其次,项目经理(项目组长)要有霸气。相信每个团队都可能会遇到不配合的队员,对于这样的队员尽量为他分配一些灵活性小的工作。如果队员严重影响合作那么就需要项目组长(项目经理)出面了,让你干嘛就干嘛,不要废话,出了事我担着!毕竟在一个项目中项目经理最大,项目如果出了问题客户或老板不会去责怪一个程序员,他会直接劈头盖脸的骂项目经理(项目组长)。所以在项目中队员有义务也有责任听项目经理(项目组长)的安排。这也是为什么项目经理(项目组长)在招人的时候格外注重队员的合作能力的原因(是否听从安排也属于合作能力的一种),招个不听话的人是多么郁闷的事情。

 

l  敢于否定自己

在项目的设计阶段,大家一起商讨具体的解决方案。很多时候大家是为了面子而不愿意否定自己的解决方案。其实这很容易理解,大家都是从程序员走过来的,程序员的通病就是常常盲目欣赏自己的代码,在软件设计的时候依旧“本性”难易,对于自己的设计不忍抛弃。一旦别人说自己的设计的有问题,恨不得马上和其大吵三百回合。争论,对于软件的设计绝对是好事,越争论对软件的需求、设计越清晰,“辩则明”就是这个道理。但是必要的时候(大多数人不肯定自己的时候)就应该好好的想一想:争论是因为面子还是因为自己的想法真的是完美的、无懈可击的?难道别人的想法真的是不可就要的、烂到不行的?如果是前者,无论你是谁(普通组员也好项目组长也罢)为了整个项目、为了团队,请放下自己的面子,否定自己!!!

 

l  不要正面否定他人的意见

无论什么时候都不要正面否定组员的意见,就算你是项目组长(或者项目经理)也不行!

在项目设计阶段,当组员为系统提出其他的见解的时候,如果你觉得合理那自不必说表示赞同即可。如果觉得不合理,你要做的仅仅是把你的观点摆出来和他的观点对比,让团队所有人进行讨论、选择,到底哪个更有利于软件的实现。

一旦项目设计完成,无论组员有任何好的方案都不应该采用!!!这时候要做的只是记下来为以后升级系统做准备,这也是为什么大公司的软件(例如windows系统)往往在上一个版本还未发行的时候下一个版本就已经开始准备了。很多时候开发人员就是在开发的过程中产生了更好的解决方案。好的解决方案——记录下来下次系统升级就从些方面做起。

为什么设计完成后不能“完善”?

如果在项目设计完成后再去修改设计,那么很有可能对项目其他部分造成影响。整个系统经过了长时间的设计可以说很少再有前后矛盾的地方。如果突然改变某一方面的设计,很大几率会造成牵一发而动全身的结果,甚至因为沿着这一处小小的改动走下去而使得整个软件前后矛盾,最终导致推倒从头再来的恶果。(还有什么比重头再来更糟糕?!!)

 

l  善于利用第三人避免“踢皮球”

不得不说的是任何详细设计文档,任何UML图都不会把系统的各个细节照顾到。毕竟文档以及UML仅仅是建模,一个大概的样子而已。这样一来难免会有细节部分没有涉及到如果非常不幸,这些细节恰恰是在两个开发者任务之间那就麻烦了。相互推诿责任,相互“踢皮球”是不可避免的,类似下面的话就会变成团队的主要语言。

A:“你的方法中怎么没有……的数据处理啊,这样传给我的我还得再处理!”

B:“处理这个数据不应该是你做的么?”

A:……

可能无论谁处理一下这个数据仅仅需要1个小时,但是争论到底是谁的责任却会花费数小时,这也是导致团队开发进度缓慢的原因之一。但是如果有另一个人在场(要是项目经理最佳),无论第三人到底向着谁,这场“战争”双方人员比例肯定是2:1。这样一来对于整个项目来说会大大缩短不必要的争论时间。

整个预期对话如下:

A:“你的***方法是不是没有处理……数据呀?”

B:“这个数据处理应该在你哪吧,C你说对么?”

C:“按道理来说,这应该是B的责任,你看啊我是这么认为的……”

A:“我也是这么认为的,还有就是……,B你说呢?”

B:“好吧,我这就去加”(虽有一千个不愿意,虽有一万个骂娘,但是……你懂得!)

 

l  沟通的方式无比重要:Change your words,change your world点我呀

要注意自己的说话方式,同样的意思不同的表达,效果不同。不用或少用第二人称,要多用“我们”、 “咱们”、“您”或者直接用昵称(*哥、*姐等等)之类的代词开头。试比较下面的句子

方式一:“你为什么不这么写这个方法?”

方式二:“咱们为什么不这么写这个方法?”

毫无疑问第一句带有责怪的语气,尽管你说的时候可能没有这个意思,但是听者会很容易这么认为。如果再加上任务繁重、心情烦躁,那么这势必会造成团队内部的不和谐。

无论自己的心情是多么的不好,请使用礼貌用语!试比较如下不同的对话。

对话一:

A:“你的那个方法写完了没有啊,快一点啊!哥等着测试呢!”

B:“哦”(TMD跟谁充哥呢,慌你妹,赶死啊!就不给你写!)

对话二:

A:“*哥(*姐)咱们的那个**方法实现了没有呀,拜托稍微快一点啊,你那一搞定我这就基本可以完工了,完事儿咱一起去喝茶啊。”

B:“好的呀,马上啊~~

一样的意思两种不同的表达方式,感受就截然不同。第一种很难让人接受,正常的人听了多少会不好受,虽然括号里面的话并没有说出口,但是那已经影响到了团队内部的和谐氛围。要尽量多用第二种那沁人心脾的话语才能使团队更有战斗力!

其实关于礼貌用语方面中国人普遍做的不好,很多人认为大家都是自己人,那样说话未免太虚假,恰恰相反正因为是自己人所以才更加需要尊重彼此!从接触的外国信息(例如外文、美剧)来看,在国外无论是不认识的人之间,还是亲的不能再亲的亲人之间都是非常尊敬对方的。虽说中国是什么“礼仪之邦”但是国内外对中国人礼貌方面评价普遍不高。我想这也可能是为什么中国造不出大型软件(操作系统、数据库等等)的原因之一吧。缺乏友好的沟通,组员之间彼此不服气、整个团队矛盾重重、相互使绊,那这个团队还合作个磷啊!!!

 

以上几方面是自己在合作时候的感受,希望可以帮助您的团队更好的合作,请牢记:没有凝聚力的团队最终的结果必是“食尽鸟投林,落了片白茫茫大地真干净!”

注:食尽鸟投林,落了片白茫茫大地真干净——(《红楼梦》 第五回)

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

拿什么拯救你,我的团队 的相关文章

  • 算法模型---时间序列模型

    文章来源 时间序列 时间序列是时间间隔不变的情况下收集的不同时间点数据集合 xff0c 这些集合被分析用来了解长期发展趋势及为了预测未来 时间序列与常见的回归问题的不同点在于 1 时间序列是跟时间有关的 而线性回归模型的假设 xff1a 观
  • java: 找不到符号 符号: 类 BASE64Encoder 位置: 程序包 sun.misc

    1 问题 新项目编译报错如下 xff1a java 找不到符号 符号 类 BASE64Encoder 位置 程序包 sun misc 2 解决方案 依图如下 xff0c 修改jdk对应的版本即可
  • tar 打包隐藏文件

    前言 xff1a 先说一下遇到的场景 xff1a 前段时间在配合做 DevOps xff0c 组内有块代码是 php 的 xff0c 需要用 tar 命令打包归档上传到 nexus 库 xff0c 后来发现解压出来的包居然缺失了隐藏文件 x
  • The server selected protocol version TLS10 is not accepted by client preferences [TLS12] 报错处理

    一 问题描述 xff1a 项目工程需求要连接 SqlServer 服务器 xff0c 但是报错了 xff0c 完整错误如下 xff1a com microsoft sqlserver jdbc SQLServerException 驱动程序
  • 23种设计模式

    目录 创建型 1 Factory Method xff08 工厂方法 xff09 2 Abstract Factory xff08 抽象工厂 xff09 3 Builder xff08 建造者 xff09 4 Prototype xff08
  • SpringBoot开启异步多线程

    前言 xff1a SpringBoot 的异步多线程需要从 java 的多线程基础说起 xff0c 可以参考 java 多线程实现的三种方式区别 SpringBoot 在此基础上进行了多次封装 xff0c 所以使用起来非常方便 一 核心参数
  • 制作 java-sdk 的两种方式

    前言 xff1a 平时maven工程里 pom 中的引用的依赖就是别人开发好的 sdk 包 xff1b 工作中为了方便一些开发也需要自定义开发 sdk 包 xff0c 下面介绍下怎么开发 一 两种方式 我们平时引用 sdk 有两种方式 xf
  • SpringBoot 之 AOP

    前言 xff1a Spring 三大核心思想是啥 xff0c 还记得不 xff1f IOC xff08 控制反转 xff09 xff0c DI xff08 依赖注入 xff09 xff0c AOP xff08 面向切面编程 xff09 回顾
  • mongodb 的常用数据操作

    摘要 xff1a 主要记录一些常见 的mongodb 的增删改查 xff0c 方便以后查阅 1 增 基本格式 xff1a db test doc insert 或 db test doc save 样例 xff1a db test doc
  • Python键盘输入转换为列表

    Python输入字符串转列表是为了方便后续处理 xff0c 这种操作在考试的时候比较多见 1 在Python3 0以后 xff0c 键盘输入使用input函数 eg1 span class hljs prompt gt gt gt span
  • java.lang.NoSuchMethodError 原因和处理方案

    问题描述 工程中明明有该方法 xff0c 却提示 java lang NoSuchMethodError 错误 1 原因 java 的类加载机制是把所有不同名称的本类和引用类的包全部加载到内存 xff0c 这样就有一个问题 xff0c 如果
  • java:try...catch跳过异常继续处理循环

    问题描述 在代码循环体中 xff0c 抛出异常后代码会停止执行 xff0c 导致代码不能完整运行 解决方案很简单 xff0c 捕获异常并简单处理一下就可以 1 捕获异常继续执行代码 只贴核心样例代码 public void getTest
  • python去掉空格常用方式

    前言 xff1a 处理字符串时经常要定制化去掉无用的空格 xff0c python 中要么用存在的常规方法 xff0c 或者用正则处理 1 去掉左边空格 string 61 34 it is blank space test 34 prin
  • 20190226-LCD_GUI

    LCD GUI 这里需要先剃度填色 xff0c 然后再显示汉字 xff0c 最后在显示符号和数字 xff0c 否则会被覆盖 xff0c 显示不出来汉字或者数字符号
  • Arch安装

    从2021年4月起 xff0c Arch Linux安装镜像中已经包含了一个官方的简易安装程序archinstall 可以支持在连接网络后进行英文交互式安装 Arch Linux News Installation medium with
  • 存储过程懂不懂

    存储过程的官方定义是这么说的 xff1a 存储过程 xff08 Stored Procedure xff09 是一组为了完成特定功能的 SQL 语句集 xff0c 经编译后存储在数据库中 用户通过指定存储过程的名字并给出参数 xff08 如
  • ArchLinux的用户配置和KDE安装

    用户配置 建立用户 目标是新建一个普通用户 xff0c 这个普通用户可以使用sudo提权 以下默认使用username作为用户名 建立无密码用户并创立其默认用户组 useradd username 更改账户密码 passwd usernam
  • Zsh的简单配置

    Zsh 简体中文 ArchWiki archlinux org 本配置的目标是增加一些简单的功能以及一个能过得去的界面 安装 安装zsh xff08 本体 xff09 和zsh completions xff08 补全 xff09 两个包

随机推荐

  • Arch(KDE Plasma)中文化

    Localization 简体中文 Simplified Chinese 简体中文 ArchWiki 生成中文locale xff08 这一步在安装篇就有写 xff09 在 etc locale gen中取消中文的zh CN UTF 8 U
  • yay的安装与使用与Anbox的安装

    yay的安装 安装 首先安装所需软件包base devel和git pacman Syu base devel git 之后使用git clone下载代码 git clone URL FORM AUR 这里的 URL FROM AUR 指从
  • linux下利用C语言实现对文件的操作(创建、复制、修改权限、修改文件名)

    今天在ubuntu下编写一个了C程序实现如下功能 xff1a xff08 1 xff09 创建一个文本文件 xff0c 写入 Hello World xff01 xff08 2 xff09 获取该文件的所有权限 xff08 3 xff09
  • 设计模式案例分析与实现

    1 UML类图及Java实现 案例 xff1a 某基于C S的即时聊天系统登录模块功能描述如下 xff1a 用户通过登录界面 LoginForm 输入账号和密码 xff0c 系统将输入的账号和密码与存储在数据库 User 表中的用户信息进行
  • 决策树算法

    目录 1 概述 1 1 算法导入 1 2 决策树定义 1 3 决策树发展 1 4 结构 1 5 从树到规则 2 决策树的构建 2 1 基本原理 2 2 特征选择 2 3 实例分析 ID3 2 4 增益率 C4 5算法 2 5 基尼指数 CA
  • 机器学习——图像分类

    1 图像分类的概念 1 1 什么是图像分类 xff1f 图像分类 xff0c 根据图像信息中所反映出来的不同特征 xff0c 把不同类别的目标区分开来的图像处理方法 1 2 图像分类的难度 任何拍摄情 况的改变都将提升分类的难度 1 3 C
  • 日常开发报错记录

    20230424 python3 7中报错 xff1a No module named typing extensions 在网上找到的解决办法 xff1a pytorch 错误 xff1a No module named typing e
  • 基于C++的通讯管理系统

    1 系统需求 通讯录是一个可以记录亲人 好友信息的工具 本教程主要利用C 43 43 来实现 个通讯录管理系统 系统中需要实现的功能如下 添加联系人 向通讯录中添加新人 xff0c 信息包括 姓名 性别 年龄 联系电话 家庭住址 最多记录1
  • 存储过程进阶(vb.net+SQL Server2008环境)

    写过一篇 存储过程入门 的博客 xff0c 那仅仅是入门 xff0c 下面和大家一起深入学习存储过程 xff08 也许以后还会有更深入 xff09 以经典的注册为例子 xff0c 篇幅有限只写了核心部分 xff0c 其他略过 无参数无返回值
  • 基于C++的职工管理系统

    1 管理系统需求 职工管理系统可以用来管理公司内所有员工的信息 本教程主要利用C 来实现一个基于多态的职工管理系统 公司中职工分为三类 普通员工 经理 老板 显示信息时 需要显示职工编号 职工姓名 职工岗位 以及职责 普通员工职责 完成经理
  • C++提高编程

    本阶段主要针对C 43 43 泛型编程和STL技术做详细讲解 xff0c 探讨C 43 43 更深层的使用 1模板 1 1模板的概念 模板就是建立通用的模具 xff0c 大大提高复用性 例如生活中的模板 一寸照片模板 1 2函数模板 C 4
  • 在卸载东西时,一不小心把window资源管理器给结束,电脑黑屏了。

    今天在卸载东西时 xff0c 有个卸载的残旧文件删除不了 xff0c 显示资源管理器正在使用 xff0c 然后我二话不说直接杀进程去了 xff0c 一不小心将资源管理器的进程给就地正法 xff0c 删完之后电脑直接黑屏 话不多说 xff0c
  • 什么是 JDK?

    JDK 是 Java Development ToolKit 的简称 xff0c 也就是 Java 开发工具包 JDK 是整个 Java 的核心 xff0c 包括 Java 运行环境 xff08 Java Runtime Envirnmen
  • 对《Java编程思想》读者的一点建议

    Java 编程思想 这本书在豆瓣的评分高达 9 1 分 xff0c 但我总觉得有点虚高 记得刚上大学那会 xff0c 就在某宝上买了一本影印版的 Java 编程思想 xff0c 但由于初学 Java xff0c 对编程极度缺乏信心 xff0
  • Caused by: java.lang.NumberFormatException: For input string: "performance-now.js"

    DEBUG 2019 01 08 10 43 53 507 org springframework web servlet DispatcherServlet Handler execution resulted in exception
  • spring mvc执行过程

    springMVC执行的过程 流程如下 xff1a 用户发起请求到前端控制器 xff08 DispatcherServlet xff09 xff0c 该控制器会过滤出哪些请求可以访问Servlet 哪些不能访问 就是url pattern的
  • 如何解决电脑无法访问个别网站

    今天重装系统后 xff0c 将所有的系统软件都安装了最新的版本 xff0c 在上网的过程中 xff0c 发现了一个奇怪的问题 xff0c 电脑可以访问网络 xff0c 但却有很多国内的网站都访问不了 xff0c 换了不同的浏览器测试也是同样
  • Springmvc基础

    springmvc入门 springmvc概述 controller层的框架 xff0c 代替Servlet xff0c 处理请求和响应 springmvc快速入门 64 Controller xff1a 将Bean交给Spring管理 x
  • Ocelot简易教程(五)之集成IdentityServer认证以及授权

    Ocelot简易教程目录 Ocelot简易教程 xff08 一 xff09 之Ocelot是什么Ocelot简易教程 xff08 二 xff09 之快速开始1Ocelot简易教程 xff08 二 xff09 之快速开始2Ocelot简易教程
  • 拿什么拯救你,我的团队

    一向认为软件开发就像是在搭房子或者说是在构建一座宏伟的大厦 xff0c 当然这根据工程的大小而定 其实细细想来软件工程的很多地方都是借助于建筑方面的知识 xff0c 就从 工程 这个词来说就是从建筑学引进的 xff0c 类似的还有设计模式