转自 http://www.aqee.net/how-to-manage-your-programmers/
以一个组织的形式完成项目、任务或实现某些目标,这被称作公司,这需要有完善的信息流转机制和长期的规划。过程管理在这种组织里是一个非常复杂的问题。这就是为什么这些年会出现了大量的诸如Scrum,
Kaizen, Kanban等技术和方法论来尽可能简化这个过程。简言之,这些东西都是用来最有效的发掘你的员工的全部潜能的。
你有了一个领导
基于此,我们通常会有一个重要人物,他可能是一个领导,一个经理或一个总监,等等。这就有了问题:这些人有什么样的特征?一个管理者和一个程序员之间的不同之处在什么地方?他们的角色可以互换吗?
为了弄明白这个问题,我们需要从人的视角上去思考。换种方式来说,我需要用到人的因素这个词。
如果他错了呢?
首先,要想管理人,你需要去理解他们。要做到这些,我们需要有情商。这并不仅仅指只针对我们这部分人。我们做的任何事情中都存在情感,你要从个人角度去体验它,要熟练掌握,在我们的公司管理中的合作方式上不能忘记这一点。管理并不仅仅指控制和命令,它还包括聆听,理解,沟通和对复杂的情绪上的问题给出有效的方案,这都是至关重要的。
弄清他们的感受
很多人都忽略了管理工作中的这方面问题。有时候会很戏剧化,类似于这样:“鲍勃,从明天开始你就是一名项目经理了,因为我们的程序员太多了,需要去管理,但不用担心,你就要去上一个Scrum大师班了”。我们都知道这样的认证证书是什么样的,有什么价值。这跟那个10天的ICC培训课程后成为一名教练的故事非常的相似——这行不通,你要铭记!
另一方面,Mark Foster在他的标题为《How to make your dreams come true(如何实现你的梦想)》一书中谈到,实现目标有两种方式:推(Push mode) 和 拉(Pull mode)。前者是使用一种工艺上的技术来完成一项任务,比如程序员编程,而后者依赖于经验、直觉和情商,从而选择最好的方式解决一个问题——这是管理者的视角。当使用这种管理模式时,管理者是不能和程序员进行角色互换的,反之亦然。一些大公司通常使用这种管理模式。而这种方式有时会损失一些员工的潜能,因为在多个级别的管理职位中产生的太复杂的层级关系。
相互协作
为什么?很多的小公司都使用敏捷方法论。这是一种基于合作的方法论。上面描述的模式并不能满足他们的需求。在不同层级上的管理者和程序员之间始终存在着一个隔膜。人们会被分成“脑力劳动者”和“体力劳动者”。结果就是导致我们失去那些同样有大脑却从来未被使用的人。如今,所谓使用有效率的员工就意味着把所有人都当作脑力劳动者。
Evan Rose 说:
命令/控制(Command-and-control)文化使人们把公司成员分成了脑力劳动者和非脑力劳动者。他们让脑力劳动者去思考,让其他人去执行命令。这种文化中,合作没有基础。更重要的,信息的流转应该是多向性的,而不是瀑布式的从高层经过多个管理层流到一线员工。事实上,如今的每个人都有资格成为一个脑力劳动者
现在出现了一种称作自我管理的形式,这种形式本是我们这个世界的基础。如果我们本来是自我管理的,为什么不更进一步呢?也许我们根本不需要管理者。37Signals 和 DHH都实现了这样的思想,描述起来如下:
我们同样也让我们的团队管理自己。每周,一个员工会站出来当管理者,他制定简单的日程计划,审查其他人的工作,更新公司动态信息,他对于其他同事来说是一个关键人物。这种职务轮换每周一次。你知道我们发现了什么吗?当每个人都知道自己要当一周的国王时,神奇的事情发生了。对管理者强迫自己做某些事情的抱怨消失了,因为职务的轮换让他们有机会同时清楚的了解了围栏两边的景观。如果你让员工们这样做,这给了他们提高和成长的机会。
找到共识,一起努力
但不要想当然。这并不是适用于任何地方任何人。但就像David说的:这种方法可行性很大。如果你能理解这点,你可以在团队或部门里试验一下。通常在小公司里当某方面出现问题时你能相当很快的对其作出反应,这能让你更容易的避免重大事故的发生。
简言之,不管你的管理方式是什么样的,永远要记住,在公司组织结构的深处有一种叫“人的因素”的东西,它在等待着你去照顾,它能摧毁你所有美丽的计划。唯一你防止这种灾难发生的办法就是要认识到:你在跟人打交道,不是机器。
[本文英文原文链接:How to manage your Programmers ]
分享到:
相关推荐
程序员专用个人知识管理是针对开发人员设计的一种高效的知识整理与检索工具。对于程序员而言,每天都要接触大量的技术文档、代码示例、问题解决方案等信息,这些知识如果不进行有效管理,容易变得杂乱无章,影响工作...
"程序员管理项目综合系统"是一个针对IT行业,特别是软件开发领域的项目管理平台。这个系统旨在帮助程序员和其他项目参与者更有效地组织、协调和监控项目的进展。它涵盖了从需求分析到项目交付的全过程,确保项目的...
在Windows操作系统中,DLL(Dynamic Link Library)和内存管理是两个至关重要的编程概念,尤其对于Windows程序员来说,理解和掌握它们是提升程序效率和稳定性的关键。这篇指南将深入探讨这两个主题,帮助程序员更好...
软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---...
《WINDOWS程序员使用指南》主要涵盖了DLL(动态链接库)和内存管理这两个关键的编程主题,这对于Windows平台上的软件开发人员来说至关重要。DLL是Windows操作系统中一个核心特性,它允许多个程序共享同一段代码和...
计算机程序员考试题是程序员考试必备的复习材料,本节总结了计算机程序员考试题中重要的知识点,涵盖操作系统、计算机系统、存储管理、进程管理、设备管理、文件管理、作业调度等方面的知识。 一、操作系统 * 操作...
本文将详细探讨“超好用的资源管理器”这一工具,它以其四窗口同步操作的功能,秒杀了系统自带的管理器,成为程序员不可或缺的辅助工具。 首先,让我们聚焦于这个64位的资源管理器——Q-Dir_X64。64位版本的设计是...
针对文件信息,接下来的内容将基于“程序员到...最后,从程序员到项目经理的转型不仅需要不断学习新的管理技能,更需要在实际工作中不断实践和积累经验。只有通过不断的尝试和反思,才能真正成为一个优秀的项目经理。
软件工程课程设计(管理系统)--程序员SUMER 软件工程课程设计(管理系统)--程序员SUMER 软件工程课程设计(管理系统)--程序员SUMER 软件工程课程设计(管理系统)--程序员SUMER 软件工程课程设计(管理系统)--程序员SUMER ...
它涵盖了程序员需要掌握的各种关键知识点,无论你是刚踏入编程领域的新人,还是希望巩固和提升现有技能的开发者,都能从中受益。 首先,教材的基础部分将引导你走进编程世界,讲解编程语言的基本语法和逻辑。这包括...
操作系统是管理计算机硬件与软件资源的核心系统,理解操作系统的原理能帮助程序员更好地优化程序性能,处理进程调度、内存管理等问题。 ### 4. 计算机网络知识 计算机网络涉及数据传输、网络协议(如TCP/IP)、...
程序员工作日志示例管理文档 工作日志是程序员日常工作中不可或缺的一部分,它可以帮助程序员更好地管理自己的时间、提高工作效率、记录工作进度、总结工作经验等。本文档是一个程序员工作日志示例,旨在帮助程序员...
在团队合作中,程序员不仅要处理与同事的技术交流,还要面对项目管理、沟通协调等复杂的人际关系。如何在技术领域保持专业,同时又能处理好与他人的关系,是程序员生涯中不可或缺的一环。这就像菜肴中的盐,虽然看似...
程序员项目交接文档概要 ...程序员项目交接文档是程序员在项目交接过程中的重要文件,涵盖了项目的所有方面,包括人事管理、消息推送等模块的数据结构和关系、执行流程、功能实现等方面的详细记录。
在编程领域,代码是程序员与计算机对话的语言,而程序员记事本则是程序员与代码对话的桥梁。随着技术的不断迭代和项目的日益复杂,代码片段的有效管理成为提升开发效率的关键。程序员记事本应运而生,它不仅仅是一个...
【标题】"程序员青戈毕设资料库,程序员青戈毕设资料" 涵盖了程序员在进行毕业设计时可能会遇到的各种知识点,这通常包括软件工程的基本原理、编程语言的应用、项目管理、数据库设计、前端开发、后端开发、算法与...
大公司是如何做信息安全管理的__程序员注意事项__Java_Python_C语言_C++等项目管理
1. **基础编程概念**:面试通常会测试你对基本编程概念的理解,如变量、数据类型、控制结构(条件语句和循环)、函数、数组和链表等。理解这些概念的原理和应用场景是必要的。 2. **算法与数据结构**:熟练掌握常见...
《黑马程序员匠心之作 C++教程_第2阶段实战-通讯录管理讲义》是一份针对C++初学者精心编写的教学材料,旨在帮助学习者掌握C++编程语言的基础知识,并通过实际的通讯录管理系统项目来提升编程技能。这份讲义以简洁...
内存管理是高级程序员必须面对的挑战之一。理解内存分配、释放过程,以及如何有效地使用内存池、智能指针等工具,能帮助你编写出内存安全、无内存泄漏的程序。同时,了解内存对性能的影响,如缓存机制和内存局部性...