您尝试打开的文件_您是否尝试过重新打开软件团队的身份?
您尝试打开的文件
by Victoriya Kalmanovich
由Victoriya Kalmanovich
您是否尝试过重新打开软件团队的身份? (Have you tried turning your software team’s identity off and on again?)
This series portrays my experience as an R&D group leader of a group that has the same behavior as a failing startup. In my last two blog posts, I’ve presented a short background regarding the developers and the technologies. This blog post will deal with the vague definition of a group’s identity.
本系列描述了我作为一个团队的研发团队负责人的经历,该团队的行为与失败的创业公司相同。 在上两篇博客文章中,我简要介绍了有关开发人员和技术的背景。 这篇博客文章将讨论一个模糊的群体身份定义。
In my last blog post, I portrayed an image almost too good to be true. An image of a productive software group, full of energy and hunger for projects. I knew I must look away from newly gained success and only into the problems, however unfortunate that made me feel.
在我的上一篇博客文章中 ,我描绘的图像太好了,难以置信。 一个富有成效的软件团队的形象,充满活力和对项目的渴望。 我知道我必须将目光从新近获得的成功转移到其他问题上,尽管不幸使我感到难过。
On the one hand, I felt the need to present the milestones I’ve created to restore some kind of productivity. I wanted to show the boss all the recent successes — the coding methodology, working regulations and other concepts we’ve begun implementing. I wanted to present the training concepts and procedures we’ve established. I wanted to present the strong cooperation I’ve led with another organization. This cooperation granted an opportunity to combine the organization’s knowledge pool and create better professional training for my group. On top of these, one of our projects was accepted to an acceleration program. I really wanted to show that off as well.
一方面,我感到有必要介绍我为恢复某种生产力而创建的里程碑。 我想向老板展示最近取得的所有成功-编码方法,工作规定和我们已开始实施的其他概念。 我想介绍我们已经建立的培训概念和程序。 我想介绍一下我与另一个组织的强有力的合作。 这项合作为合并组织的知识库和为我的小组创造更好的专业培训提供了机会。 最重要的是,我们的一个项目被加速计划接受。 我真的也想证明这一点。
But I knew this image would soon fade unless I continued targeting the main issues. The primary issue was this next hard truth. The group didn’t have a strong basis and it was just a matter of time until it might collapse again. I identified it as the group’s lost identity.
但是我知道除非我继续针对主要问题,否则这种形象很快就会消失。 首要问题是下一个硬道理。 该小组没有坚实的基础,只是时间问题,直到它再次崩溃。 我将其标识为该组的身份丢失。
什么是团体身份? (What is a group identity?)
When we reach a point in life where we seek our unique identity we look into various questions. Where am I from? What is my heritage? Who influences me? What’s exciting for me? What’s the reason I wake up in the morning? These questions helped me shape my personal identity both as a human being and as a leader. The same process happens one way or another in every organizational structure.
当我们到达生活中寻求独特身份的时候,我们会研究各种问题。 我从哪里来? 我的遗产是什么? 谁影响我? 什么让我兴奋? 我早上醒来的原因是什么? 这些问题帮助我塑造了作为人和作为领导者的个人身份。 同一过程在每个组织结构中以一种或另一种方式发生。
Defining a group’s identity must happen the moment a manager takes the reins. They must look at the group’s responsibilities and define each group member’s position. It clears many things up. It provides clear borders regarding the manager’s and the developers’ responsibilities.
定义组的标识必须在经理接管时发生。 他们必须查看小组的职责并定义每个小组成员的职位。 它清除了很多东西。 它为管理人员和开发人员的职责提供了明确的界限。
This process must occur at the group manager’s level and even higher. It is rare that a complex organizational understanding such as an identity can depend on the team leads’ scope or lower. It is also unfair to the team leads, who already have enough on their plate.
此过程必须在组经理甚至更高的级别上进行。 诸如身份这样的复杂组织理解很少取决于团队负责人的范围或更低。 这对于已经有足够实力的团队负责人也是不公平的。
As you may recall from my previous blog post, I talked about the vicious zero-products cycle. This cycle started somewhere, so I started retracing the group’s steps. I realized that the moment the last official product version was released was the breaking point. This was the point where there was no clear view on what the group’s main objective was, what was its purpose and what was the product it was responsible for delivering.
您可能还记得我以前的博客文章,我谈到了恶性的零产品周期。 这个周期开始于某个地方,所以我开始追溯小组的步骤。 我意识到发布最后一个正式产品版本的那一刻才是转折点。 在这一点上,对于该小组的主要目标是什么,其目的是什么以及负责交付的产品的种类,没有明确的看法。
主要目标是什么? (What was the main objective?)
The main objective was software and system maintenance for a very complex system. In order to perform software maintenance on such a large amount of code, a developer must work on the code. The developer must understand it and get to know its genius functions, but also its inherent faults and flaws. The developer must feel the code. They can only gain this feeling through massive research and deep understanding of procedures within the system.
主要目标是非常复杂的系统的软件和系统维护。 为了对如此大量的代码执行软件维护,开发人员必须处理这些代码。 开发人员必须了解它并了解其天才功能,还必须了解其固有的缺陷和缺陷。 开发人员必须感受代码。 他们只有通过大量研究和对系统内过程的深刻理解才能获得这种感觉。
In my view, it is impossible to maintain the entire system simultaneously, as a result of a small number of maintenance dedicated developers and a very serious lack of knowledge. So I declared that maintaining specific domains every year was good enough for us. The alternative would be scattered maintenance that would only lead to more gaps in the long run.
在我看来,由于少量的维护专用开发人员和非常严重的知识匮乏,不可能同时维护整个系统。 因此,我宣布每年维护特定域名对我们来说已经足够了。 替代方案是分散的维护,从长远来看只会导致更多的差距。
Let’s look at a simple example such as inserting an image on a screen. This is easy in modern systems written in readable code that follows proper coding methodologies.
让我们看一个简单的示例,例如在屏幕上插入图像。 在采用遵循适当编码方法的可读代码编写的现代系统中,这很容易。
In our case, to insert a feature, the developer needed to follow more complex steps. They would research the entire screen’s code and the entire code of screens that might be affected by the change. It might take up to a month of research. After the research would’ve developed some conclusions. They would try to decipher the relevant piece of the system’s architecture and find a few ways to implement image insertion.
在我们的案例中,要插入功能,开发人员需要遵循更复杂的步骤。 他们将研究整个屏幕的代码以及可能受更改影响的屏幕的整个代码。 研究可能需要长达一个月的时间。 经过研究,我们将得出一些结论。 他们将尝试破译系统体系结构的相关部分,并找到几种实现图像插入的方法。
In parallel, and this is the important part, the developer must document EVERYTHING. Every difficult method. Every process they discover. Every architecture or network insight they have. Every unusual phenomenon and its investigation all the way to its origin. This is crucial since the existing documentation and most of the written code are barely readable.
同时,这是重要的部分,开发人员必须记录所有内容。 每种困难的方法。 他们发现的每个过程。 他们拥有的每种架构或网络见解。 每一个异常现象及其调查一直到其起源。 这是至关重要的,因为现有文档和大多数书面代码几乎不可读。
The objective seems very straightforward, but regulated documentation and code maintenance is not the only thing that defines a group’s identity. The group has to have a purpose. Our purpose went missing.
目标似乎很简单,但是规范文档和代码维护并不是定义组标识的唯一方法。 该小组必须有一个目标。 我们的目的不见了。
目的去了哪里? (Where did the purpose go?)
At some point, software maintenance was performed under no regulations and slowly went out of the professional focus. What started flowing instead were side projects. Side projects became the main objective. Whenever a client approached one of the teams, in need of a quick fix, the group would pivot in that direction. People were working on side projects for the sake of working. The difficult yet crucial maintenance was completely abandoned.
在某些时候,软件维护是在没有规定的情况下进行的,并且慢慢地超出了专业的关注范围。 相反,开始流行的是附带项目。 附带项目成为主要目标。 每当客户需要快速解决方案中的一个团队时,团队就会朝这个方向发展。 人们为了工作而从事辅助项目。 困难而又至关重要的维护工作已被完全放弃。
When I started my position as group leader, almost every group member told me they didn’t know exactly what the group was actually meant to do. They felt they had no real goals when they came to work. Side projects scattered the purpose.
当我开始担任小组组长的职务时,几乎每个小组成员都告诉我他们并不确切知道该小组的实际职责。 他们觉得上班时没有真正的目标。 辅助项目分散了目的。
为什么有时我们需要管理客户? (Why do we sometimes need to manage our clients?)
A software group cannot blindly do what the client wants. Especially when the client changes their mind frequently. For example — back when I was a software developer, my team and I were working on a navigation project similar to “Waze”. Our product owner kept requesting changes that made no difference whatsoever to the system’s functionality. It was always a request to change button colors or move toolbars around the UI. This kept the team from making any progress for a very long time.
软件组不能盲目做客户想要的事情。 特别是当客户经常改变主意时。 例如,当我还是一名软件开发人员时,我和我的团队一直在从事类似于“ Waze”的导航项目。 我们的产品负责人不断要求进行更改,这些更改对系统的功能没有任何影响。 始终要求更改按钮颜色或在UI上移动工具栏。 这使团队长时间无法取得任何进展。
In my software group, the problem was on a larger scale. The group didn’t have one indecisive client. It had a few separate clients and each client pulled in their own direction. There wasn’t one integrating factor, looking at the larger picture and managing the clients and the projects. For a long time, the group worked through a queue — first client in meant first project the group developed. Therefore, almost any type of project could be brought to the group. In time the group began dealing with QA, IT and even hardware issues, rather than software development.
在我的软件小组中,问题更大。 该小组没有一个优柔寡断的客户。 它有几个单独的客户,每个客户都朝着自己的方向发展。 没有一个整合因素,要看大图并管理客户和项目。 长期以来,该小组一直在排队工作–第一个客户是该小组开发的第一个项目。 因此,几乎任何类型的项目都可以带到小组中。 随着时间的推移,该小组开始处理质量检查,IT甚至硬件问题,而不是软件开发。
Retrieving the purpose, and consequently the motivation, was an ongoing process. It began with a definition — I’ve defined, along with my team leads, our projects. We’ve prioritized them in accord with our clients’ demands, thus setting a roadmap we will not slip from, as happened in the past. This roadmap indicated our objective — system’s software maintenance was declared our purpose.
检索目的以及动机的过程是一个持续的过程。 它从定义开始-我已经与团队负责人一起定义了我们的项目。 我们已根据客户的需求对它们进行了优先排序,从而确定了我们不会像过去那样走过的路线图。 该路线图表明了我们的目标-宣布系统软件维护是我们的目标。
We’ve added one more project to the roadmap, a second main project, related to the system but not directly. It added to the purpose since it had great unimplemented potential. I believed it would be great for PR and to enhance the developers’ belief in their own skills. This dedicated roadmap focused the teams. We knew that by the end of the year we needed to deliver two products end-to-end.
我们在路线图中添加了另一个项目,第二个主要项目与系统相关,但不直接相关。 它具有很大的未实现潜力,因此增加了该目的。 我认为这对PR并增强开发人员对自己技能的信念将是一个很好的选择。 这份专门的路线图集中了团队。 我们知道,到今年年底,我们需要端到端交付两种产品。
Setting the professional compass was important. The bigger problem was regaining the developers’ trust in the group. After so many years, my developers — both experienced and new — had no fuel nor will to work. After some of my scheduled one on one talks, I mapped each developer’s strengths. If for example, one developer was really good at research — I let them do the research.
设置专业指南针很重要。 更大的问题是重新获得开发人员对该小组的信任。 这么多年后,我的开发人员(无论是经验丰富的还是新手)都没有燃料,也没有工作意愿。 在安排好一些一对一的讲座后,我绘制了每个开发人员的优势。 例如,如果有一位开发人员真的很擅长研究-我让他们进行研究。
After mapping individual strengths, I mapped team strengths. Some paired programming was performed in order to strengthen some developer’s self-esteem. We’ve held a professional workshop for team leads, to strengthen management abilities. I addressed the issues I picked up when I observed the programming process and the issues the developers themselves had presented.
在绘制个人优势之后,我绘制了团队优势。 为了增强开发人员的自尊心,执行了一些配对编程。 我们为团队领导举办了一次专业研讨会,以增强管理能力。 当我观察编程过程以及开发人员自己提出的问题时,我解决了我遇到的问题。
那么如何恢复身份? (So how was the identity restored?)
By finding a definition and restoring order. We’ve defined our field of expertise. I’ve put borders around our designated projects and let no other project cross that border. Limited the issues we work on (no more hardware issues!). Made sure there was proper usage of coding methodologies and version control. Made everyone document their work. Strengthened each programmer’s strengths. Sharpened the team leads’ set of soft skills.
通过查找定义和恢复顺序。 我们已经定义了我们的专业领域。 我已经在我们指定的项目周围设置了边界,并且没有其他项目越过该边界。 限制了我们正在处理的问题(没有其他硬件问题!)。 确保正确使用编码方法和版本控制。 让每个人记录他们的工作。 增强了每个程序员的实力。 加强了团队负责人的软技能设置。
I targeted both professional and personal values in order to restore the group’s inevitable software DNA.
我以职业和个人价值观为目标,以恢复团队不可避免的软件DNA。
The difficulties of leading changes in an unforgiving environment, leading innovation instead of sinking and how to survive as a young female in a very ego driven male environment? Stay tuned, all this and more as the series unravels!
在无情的环境中领导变革的困难,领导创新而不是沉迷的困难以及如何在自我驱动的男性环境中作为年轻女性生存? 请继续关注本系列,所有这些以及更多内容都将在此揭开序幕!
Part 1 — How Can Corporations Heal a Dying Software Group?
第1部分-公司如何医治一个垂死的软件小组?
Part 2 — Overcoming a Technological Gap — a Horrible Circumstance or a Creative Adventure?
第2部分–克服技术鸿沟–可怕的情况还是创造性的冒险?
Parts 1+2 — How I started the process of healing a dying software group
第1 + 2部分-我如何开始对垂死的软件团队进行恢复的过程
翻译自: https://www.freecodecamp.org/news/have-you-tried-turning-your-software-teams-identity-off-and-on-again-a06aad5f1f50/
您尝试打开的文件
相关文章:

vijos 1006 晴天小猪历险记之Hill——数字三角形的终极变化
题目链接:https://vijos.org/p/1006 数字三角形原题看这里:http://www.cnblogs.com/huashanqingzhu/p/7326837.html 背景 在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳、勇敢…

电磁学讲义6:高斯定理计算电场
高斯定理是电场力平方反比定律和线性叠加原理的直接结果。也可以由高斯定理作为基本规律导出库仑定律。这说明高斯定理和库仑定律是不同形式的表示电荷和电场关系的同一规律。库仑定律可以使我们从电荷分布求出电场分布,高斯定理可以使我们从电场分布求出电荷分布。…

ant table表格整行点击事件并获取当前行的数据
实现效果:点击表格中某一行,或者点击表格中某一行的一个字段,获取当前行的 item 下标数据,并用 Link 标签传参,下一个页面接收的实现。 如果使用 router 跳转路由传参,需要导入 import router from umi/router; 如果用 Link 跳转路由传参,需要导入 import Link from u…

以太坊公链私链_如何使用以太坊构建汽车制造供应链系统
以太坊公链私链by Marcelo Russi Mergulho由Marcelo RussiMergulho 如何使用以太坊构建汽车制造供应链系统 (How to build a car manufacturing supply chain system using Ethereum) Here at Daitan we are always looking for new technologies that can help our clients s…

微信一次性订阅消息
微信一次性订阅消息官方文档:消息管理>发送一次性订阅消息 开发者可以通过一次性订阅消息授权让微信用户授权第三方移动应用(接入说明)或公众号,获得发送一次订阅消息给到授权微信用户的机会。授权微信用户可以不需要关注公众号…

react控制组件的显示或隐藏, 根据state判断元素显示隐藏 , setState不实时生效解决方法
代码实现功能:根据 state 中的值判断子组件显示或隐藏,因为 setState 不是及时生效的,所以不做显示隐藏判断会报错。 render() {// 客户经理循环组件function CommentSpan(props){const numbers props.managers;if(!numbers) return;const l…

关于R语言plyr包的安装问题
平时安装R包都是从Rstudio中进行的,今天在装plyr包的时候,Rstudio一直报错,示例如下: 是不是很无语啊,搞了半天不知所以然,然后突发奇想从Rgui中安装试下,没想到轻轻松松就成功了,示…

regexp 好汉字符串_如何在JavaScript中使用RegExp确认字符串的结尾
regexp 好汉字符串by Catherine Vassant (aka Codingk8)由凯瑟琳瓦森(Catherine Vassant)(又名Codingk8) 如何在JavaScript中使用RegExp确认字符串的结尾 (How to use a RegExp to confirm the ending of a String in JavaScript) Using the Regexp ?️ constructor使用Regex…

【转】浅谈分布式锁
前言 随着互联网技术的不断发展,数据量的不断增加,业务逻辑日趋复杂,在这种背景下,传统的集中式系统已经无法满足我们的业务需求,分布式系统被应用在更多的场景,而在分布式系统中访问共享资源就需要一种互斥…

php中的抽象类(abstract class)和接口(interface)
一、 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类。 2 .抽象类不能被直接实例化。抽象类中只定义(或部分实现࿰…

React 父组件给子组件传值,子组件接收
父组件传值代码: render() {return (<div>{this.state.list?(<GeomLine list{this.state.list}/>):null}</div>);} 子组件接收代码: class GeomLine extends Component {// 在组件接收到一个新的 prop (更新后)时被调用。这个方法在…

unity 灯笼_如何创建将自己拼成文字的漂亮灯笼
unity 灯笼In this tutorial, we will go through how to create a group of festival lanterns that arrange themselves into the words you choose. An online demo can be found here.在本教程中,我们将介绍如何创建一组节日灯笼,这些灯笼将自己布置…

Android PackageManager packages.xml文件格式
packages.xml文件存放在/data/system目录下 该文件记录了系统中所有应用程序的包管理相关信息 PmS根据该文件进行包管理的各种操作 标签名称所包含的值举例last-platform-versioninternal"17" external"17"<permission-trees />暂时不使用<…

tplink wr886n v5.0 ttl 接线方法
我的倒是有ttl信息,但是全是乱码,换过RX和TX,也换过串口速率都没用,附上TTL接线图.2016-11-02今天晚上终于搞定了ttl了,步骤如下:1.先将串口波特率改为117500(推荐使用Putty).如果可以了就不用第二步了2.将usb转ttl转接板上的rx和tx的指示灯干掉,可以留下电源指示灯详细教程见s…

React子组件给父组件传值, 父组件引用子组件并给子组件传值
本博客代码是 React 父组件和子组件相互传值的 demo;实现封装一个折线图,折线图选择下拉框,获取下拉框点击的值并且传给父组件根据下拉框筛选的条件更新视图;效果图如下: 父组件代码: 代码解析:父组件 Parent 引用子组件 Sub ,传递了 list 组件给子组件,并且接收子组件…

我如何使用深度学习通过Fast.ai对医学图像进行分类
by James Dietle詹姆斯迪特尔(James Dietle) Convolutional Neural Networks (CNNs) have rapidly advanced the last two years helping with medical image classification. How can we, even as hobbyists, take these recent advances and apply them to new datasets? W…

Java——基础
1.数据类型 int,short,byte,long double,float char,String 2.变量 int var; var 12; int var1 12;final int v1 0; //常量 C/C变量的声明和定义是分开的,JAVA不区分。 //c/c extern int a; //声明 …

Gradle系列教程之依赖管理
这一章我将介绍Gradle对依赖管理的强大支持,学习依赖分组和定位不同类型仓库。依赖管理看起来很容易,但是当出现依赖解析冲突时就会很棘手,复杂的依赖关系可能导致构建中依赖一个库的多个版本。Gradle通过分析依赖树得到依赖报告,…

Ant Design Pro 登录流程以及路由权限设置
登录流程: 1.ant 框架最外层套了 SecurityLayout 布局 SecurityLayout 中判断用户是否登录,做自动跳转路由处理。 里面的 currentUser 和 currentUser.userid 很关键,是判断登录状态的值. 2.currentUser 是通过 src/models/user 中 fetchCurrent 绑定 type saveCurrentUs…

初级开发人员的缺点_这是我想放弃初级开发人员时所做的事情
初级开发人员的缺点Coding is hard. Really hard. There are times when you’ll think “this is amazing! I love this!”编码很难。 真的很难。 有时您会认为“这太神奇了! 我喜欢这个!” But you’ll also have the not so amazing times. The time…

C#之 HashSet(临时笔记,未参考资料,请慎重)
HashSet是一个集合,类似于DataSet,但是其主要用途是用来存放同一种类型的元素(string、row、table等),如果添加的元素跟定义时初始的类型不一致,就会直接编译失败。 例如: HashSet<string> hsnew Has…

Ant Design of React从入门到开发教程
Ant Design Pro 是一个企业级中后台前端/设计解决方案。 目录: 一:开发前的准备 二:创建页面 三:创建组件并引用 四:封装网络请求和网络请求走向 五:登录流程以及路由权限设置 六:父组件和子组件相互传值和接收 七:for 循环渲染组件 Ant Design Pro 全家桶技术…

适合初学者的数据结构_数据结构101:数组-初学者的直观介绍
适合初学者的数据结构了解您每天使用的数据结构。 (Get to know the data structures that you use every day. ) Welcome! Let’s Start with some Vital Context. Let me ask you this: ✅ Do you listen to music on your smartphone?✅ Do you keep a list of contacts on…

少侠,找个千手观音来帮你营销可好?
亚历山大公司营销主管老张最近有点儿烦,不是因为老婆更年期、女儿叛逆期,而是工作遇到了些麻烦。 社交营销很火,老张自认为公司始终游走在新科技最前沿,当然在第一时间就开通了微信、微博、QQ……各种社交网络的一大堆账号&#x…

Upload上传图片
实现antd上传图片,Upload 组件可以上传多张图片,多张图片上传成功的效果图: 每次上传 onChange 回调函数都会执行一次并且里面接收一个JSON对象,其中 file 对象是本次上传的图片信息,status 值为 done 就表示这一次上传成功了,fileList 中是一个数组,里面是组件所有上传…

将html中的代码拷贝到jsp后出现的问题 Failed to create the part's controls
Failed to create the parts controls 解决方法: 在文件上右键:open with转载于:https://www.cnblogs.com/flyoung/p/4885921.html

面试官问你想找什么工作_找工作时如何面试面试官
面试官问你想找什么工作在技术面试中要问的十二个问题 (Twelve questions to ask at tech interviews) I’ve just come off six weeks’ of interviewing for medior software developer roles, in a market that is desperate for talent (Amsterdam). That means I went…
windows7 端口查看以及杀死进程释放端口
1、调出命令窗口:开始---->运行---->cmd,或者是windowR组合键 2、输入命令:netstat -ano,列出所有端口的情况。在列表中我们观察被占用的端口,比如是4300,我们拿它来做实验。 3、查看被占用端口对应的…

web-view 跳转小程序页面 网页跳转小程序
H5实现代码: <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>测试H5</title><meta content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalable0" name"viewport…
MongoDB安装指南
0. 环境说明:Ubuntu 14.04, MongoDB2.6.1 1.输入MongoDB中public Key值到Ubuntu包系统中 2. 在Sources列表中创建MongoDB的文件 3. 又一次载入本地的文件包库列表 4. 安装MongoDB数据库 5. 启动MongoDB 6. 启动MongoDB shell,shell提供了一个类似SQLConsole的方式…