如何在没有技术专长的情况下领导开发项目


17

我在整个职业生涯中都是动手开发人员,并且喜欢使用代码。我一直对团队负责人感到不满,他们对某项技术几乎没有专门知识,却坚持要求一定的实施。

现在我发现自己在镜架的另一侧。我是使用C#实现的胖客户端的主要开发人员,但是我的专长是构建Java Web应用程序。虽然我知道我可以使用任何一种语言来利用设计模式和OO范式,但是在编码标准,项目生命周期工具和发布/分发过程方面我迷失了。我毫不怀疑我可以在一两个月内掌握基础知识,但是有一些经验只能随着时间的推移而积累。

我应该怎么做,如何避免成为我在开发时讨厌的项目负责人?


12
为了避免像这样被讨厌,只需与您的团队成员交谈即可。定期讲话,经常讲话,1:1对话 “ ...您对健康1:1s的奖励是缺乏戏剧性。”
gnat 2012年

1
这个题目的确切名称和职责是什么?您是PM,高级开发人员,...?
NoChance 2012年


1
但严重的是,我写这个系列的文章前一段时间,你可能会发现有用:vbnotebookfor.net/2007/07/25/...
jfrankcarr

Answers:


19

老实说,您拥有多少技术经验并不重要,我的建议是相同的:不要在忙于管理的时候对那些必须与之共处的人们实施技术决策。

不要自欺欺人。我敢打赌,您讨厌这些前任经理的原因不是因为他们没有制定决策所依据的知识库,而是因为他们执行了决策并且从未处理过后果。

无论您以前从未接触过.NET还是您是团队中最专业的开发人员,这都适用。您的工作现在是管理,而不是做出技术决策。

根据开发人员的技能水平,管理可能意味着在他们要求时向他们提供建议。“您调查过Spring.NET吗?” (请注意那里缺乏指导)是一件非常好的事情。另外,“到处都是Google,看看世界其他地方在做什么,我们不是第一个面对这个问题的人。”

在某些方面,作为经验丰富的Java开发人员,您可能会比大多数人处于更好的位置。大多数Java框架和技术在.NET中具有类似的等效项。因此,您不必说“这是最好的用法”,您可以说“我已经在Java中使用了它,您知道.NET的等效语言吗?”

也鼓励团队内部进行大量对话。安排每周的技术讨论会。最后,您所需要的只是信息。您需要知道他们做出了哪些决定以及原因。您无需为团队做出这些决定。


2
对。最主要的是愿意让您的技术“明星”做出与您将要做出的决定不同的决定。如果您能做到这一点,那么每个人(当​​然,高级管理人员除外)将感到高兴和富有成效。
Daniel R Hicks,2012年

“因此,您不必说“这是最好用的东西”,您可以说“我已经在Java中使用了它,您知道.NET的等效语言吗?” 在大多数情况下,如果一个等效工具存在,它就会用“N”为前缀,这样你就可以大致找到这些你自己。
达恩·尼利

请记住,他将自己标记为“主要开发人员”,而不是“项目经理”。以我的经验,这是两件事。
Wonko the Sane,2012年

@WonkotheSane:的确,OP是指项目负责人,团队负责人和首席开发人员,就像他们都是同一个人一样,这很令人困惑。但是我从使用它们的上下文中得到了提示。
pdr 2012年

@pdr-差不多了。关于“我可以利用设计模式和OO范例”的部分使我有些疑惑。
桑科旺科(Wonko the Sane),2012年

6

我有一些非常优秀的经理/团队负责人,他们对该技术知之甚少,而我最糟糕的经理中的一些人则以为他们知道一切。

要成为一个领导者,如果您有足够胜任的人才,最主要的是能够判断他们的能力和判断力,并给予他们尽可能多的自由度,同时让“野鸭”承担任务,而“勉强”主管”忙于“安全”但富有成效的活动。确保每个人都在同一个鼓手前进。

您面临的更大挑战可能是使高层管理人员陷入困境。他们将需要报告,日程表和检查标记,并且您需要弄清楚他们想要什么以及如何合理地伪造它们。(嗯,不完全是“伪造”,而是提供可以使他们满意的文档,而不会花费您的时间或团队的时间。)


4

您不是因为C#编码技能而被选中的,除非您一开始就要编写代码,否则您是否知道C#都没关系。您需要开始更高层次的思考:

  • 您团队中的每个人都具备哪些技能?
  • 哪些组件对项目的成功至关重要?
  • 除了实际代码之外,您还需要产生什么?(测试?文档?)
  • 如果还没有,您将如何收集需求?
  • 您和您的团队将如何处理设计过程?
  • 您知道拥有一个编码标准很重要,但是您可以依靠您的团队来弄清楚他们想要遵循什么标准。
  • 您如何早日发现问题?

其中有些事情可能会涉及到项目管理领域,但是作为首席开发人员,您将在这些问题和其他问题上与项目经理紧密合作。

一定要学会尽快有效地使用C#。只需记住,您的职责就是查看语法和框架细节,并从更大的角度来看。


2

动手实践。首先获取一个简单的C#入门,然后编写一些代码。尝试一些基本的事情,您会用另一种语言蒙住眼睛。

阅读编程风格和约定。无论如何,您都应该在底漆中找到这一点,但是您也可以使用StyleCop和Resharper之类的产品来执行您不熟悉的样式规则。这将有效地训练您以一种普遍接受的方式来做事,从而避免编译软件时出现问题。

做自己,并运用您已经拥有的设计知识。不论使用哪种语言,基本知识都基本相同。语言在结构上的差异将存在差异的地方将非常小,并且当您将一个或两个测试应用程序放在一起时,其中的大部分将很快变得明显。

如果您不知道有明显的事情,那就快来。您的团队将更加尊重诚实,而不是简单地毫无头绪。做出明智和明智的决定,并且总是花几分钟时间考虑您的回应。您将需要有主见而不试图统治,并且您不能让自己在某一领域的知识不足似乎反映了您领导团队的能力。领导力意味着指导,但是指导并不意味着您也不会表现出学习新知识的意愿。


3
我会说这与担任经理的工作正好相反。进入并丢弃一些代码可能很诱人,但这不再是您的工作...您的工作是使您的团队能够做您雇用他们的工作,并信任他们的经验和判断力。试图在其他平台上加快速度会适得其反。
迈克尔·布朗

@MikeBrown仅在该职位为管理职位时才适用。我担任过的所有团队领导职务都需要大量的时间编码,除了您期望担任该职务的项目管理,计划和其他职责之外。如果OP表示他将担任经理,那么我的回答将大不相同。
S.Robins

你是对的。我假设他是经理,因为这是他没有经验的技术。进行编辑,然后撤消我的反对意见:)
Michael Brown

@MikeBrown我不确定您需要编辑什么。我已经根据OP的陈述回答了OP的问题,他说他将成为项目负责人...但是,我会稍微扩大答案。:)
S.Robins'2

哦,不是我觉得您需要进行编辑...只是这样一来,如果没有进行编辑,我就不会让我改变投票立场:(
Michael Brown

1

如果您这样想并且确实担心它,那么您已经避免了成为此类项目负责人的风险。这是一种完全不同的个性,他们敢于在没有适当知识的情况下做出决定。只要对您的同事所讲的内容保持开放的态度,并在团队中建立和鼓励对话和信息交流的文化。


1

听起来这里有一些问题。

您正在领导的项目中使用的技术以及控制该项目开发的过程。

您是团队负责人还是首席开发人员?首席开发人员还负责设计和开发工作。因此,解决此问题的唯一方法就是屈服并学习新技术

如果您实际领导团队,则需要信任团队,并让他们指导项目的大部分技术方向。当然,从概念上讲,您将能够保持正确的方向。

控制项目开发的流程应该大部分就位。只是阅读,理解和执行它们即可。

如果没有,请与您的老板协商以寻求指导,以帮助您进行一些开发。这很重要。如果该过程不适当且是临时的,它将很快失败。

祝好运!


0

机会偶尔会来..抓住它..我想说,尝试学习C#的基础知识。从在线获取一些教程,尝试进行操作。最初,学习新概念会很困难,而当您完成第一个任务时,您会对它有所信心。

积极思考,尝试艰巨的任务,调试自己的代码,并确保您会熟练掌握它。

不要失去机会。


0

我认为,如果您有大量的.Net开发人员,那么团队中就会有很多知识,也许您需要利用这些知识才能上手。Java和.Net之间有很多相似之处,您已经知道的实际上可能会更多地或更少地直接应用。重要的是要知道正确完成该项目的重要性以及所涉及的风险。必要时与您的团队进行沟通。软件工程实践在整个项目中不断发展,因此可能很难在项目的早期就拥有“最佳实践”。

我有点与您的经验相反,我得到了一个非常绿色的毕业生团队,他们不是来自软件相关领域。尽管我有充分的理由规定需要做的事情(我受雇于此),但我还是在寻找可以使我们前进的实践,并寻求大量的指导和讨论来发展我们的软件工程实践。我在旅途中从团队中学到了很多东西,经过一年多的工作,我们几乎可以完成我们的第一个内部项目!


-1

当我谈到编码标准,项目生命周期工具和发布/分发程序时,我迷失了。

查找使用与您将使用的技术相同的开源产品。

如果可能,找到某种与问题域类似的方法。这并不像查找具有相同技术和活动更新的项目那么重要。

下载他们的工作代码。阅读。

找出他们使用什么工具。使用它们。

弄清楚如何构建和发布开源项目。构建并发布它。

一个开源项目(有很多贡献者)将说明最佳实践。

我毫不怀疑我可以在一两个月内掌握基础知识,但是有一些经验只能随着时间的推移而积累。

真正。

向开源社区学习。


2
有时,从事开源项目的人们没有使用最好的可用工具,甚至没有遵循标准(良好实践)。我知道很少有开源项目(我不想为它们命名),就使用正确的工具甚至遵循行业惯例而言,这些项目确实非常糟糕。
克里斯蒂安·P

@ChristianP:虽然有一些不那么出色的开源项目,但是很容易找到相当不错的大型项目。以任何开源项目为例总比没有例子好。
S.Lott

我同意任何例子总比没有好。但是,当寻找最佳实践,工具等时,即使该项目不能解决同一问题,也可以从一个好的开源项目中学到更多。
Christian P
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.