使用新技术或语言开始项目

时间:2010-01-27 08:43:36

标签: project-management

在开始使用您以前从未使用过的技术或语言开展项目时,您是否获得了最佳实践?

您是否只是继续了解您所知道的事情,并在遇到障碍时了解更多信息,或者您是否有任何必须采取的先决条件?

实际上,问题是你在处理一个众所周知的主题时会采取什么额外的措施。

修改 从管理的角度来看,你将如何处理这种情况?

  • 您如何估算项目的时间?
  • 你更喜欢指派有经验的程序员(更尴尬的项目)还是更喜欢分配年轻人(不管他们是否还要学习)?

还有同样的问题,你真的以不同的方式处理这些项目吗?

24 个答案:

答案 0 :(得分:20)

我首选的技术评估方法是使用以下步骤:

  • 确定必备功能确定技术所需的最重要功能。这构成了您的验收标准。

  • 研究技术以获得第一印象。 您正在寻找成本,社区采用,成熟度,功能,许可问题,与现有软件的兼容性等信息

  • 进行相对比较。确定一个你内心深处知道的小“宠物”应用程序。这样做的好处是您不必考虑需求,并且在使用您已经了解的技术之前已经实现了它。选择一个“宠物”应用程序,它可以触及典型项目的主要实现点。例如。您将看到许多Web应用程序开发人员实现一个简单的博客引擎,作为评估或演示技术的一种方式。 Twitter客户最近也风靡一时。

  • 避免分心有效评估的关键是要集中注意力,不要让自己陷入外围问题。例如。如果您的评估任务是查看Web框架,请不要关心GUI的CSS布局。有时最好是时间框评估任务,以迫使自己专注于你可以实际实现的目标。

答案 1 :(得分:13)

大多数情况下,我只是编写一个我用其他语言编写的程序,从概念角度来看,这并没有让我头疼。对我来说,它是一个神经网络,其他人使用简单的光线跟踪器或其他任何东西。

然后,您会看到语言的难点,以及与您所知道的不同之处。只是不要马上从实际项目开始。

答案 2 :(得分:10)

我总是把记事本放在手边。

对于我正在使用新语言/框架/ API的每一天,我都会将当天的日期作为标题。在那之下,我会记下那天我见过的任何有趣的怪癖。原因是我发现它经常需要重新审视两三次才能在我的脑海中根深蒂固。有记录可以参考是一个重要的帮助。

答案 3 :(得分:5)

通常,您首先要研究这项技术是否适合您的项目。

如果确实如此,你就可以继续开始这个项目,在你走的过程中遇到障碍。

这里最重要的是定义潜在的问题案例,对技术的疑虑并用优先级解决它们。它是否可以与其他技术接口,是否支持某些协议,是否可以使用它实现所需的体系结构,在某些情况下是否足够高性能。我们的想法是首先确定一艘船(您的产品)在您开始抛光船体之前是否可以移动,这样您就不会在最终可能无法解决的问题上投入太多时间和精力。

说到先决条件,建议您查找使用此技术完成的同等项目的故事。具有相似复杂性/大小,整体架构,您希望拥有的特定事物的实施的项目。这应该让你知道什么可以做什么,什么做不到。

答案 4 :(得分:5)

我启动了一个名为“XXXX Bible”的新Google文档文档,其中XXXX是有问题的新技术。然后每个小障碍或技巧或陷阱都会进入。

答案 5 :(得分:3)

总是,请务必阅读等效的“Hello world”教程并继续学习。

答案 6 :(得分:3)

我通常在两个方面同时处理这个问题。

  1. 阅读一些有关该主题的优秀/推荐教程或书籍。
  2. 开始实现与您的应用程序/项目相关的小功能片段,从下到上,使用这种新语言&技术。这是“探索式编程”,你将在这里使用大量的谷歌搜索,并阅读其他人编写的一些代码,以了解工作原理
  3. 两个并行意味着你将从理论和实践中受益,并且不会感到无聊。恕我直言,也不能跳过。许多人在没有阅读的情况下急于使用代码,并且通常会导致错误的非惯用代码。

答案 7 :(得分:3)

首先练习“hello world”教程是一个非常好的起点。

此外,为了获得大部分内容,我总是试着回答这个问题:为什么这样做而不是那样?

我的目标是获得技术背后的理念,找出创造者的大局和意图,即其技术解决的问题。

答案 8 :(得分:2)

留出更多的额外时间!

你总会犯错误而不是意识到 - 而不是花费大量时间先发制人地试图避免你甚至不知道为什么他们会犯错误的错误,只是接受你会犯错误,留出时间回去修理

答案 9 :(得分:2)

对我来说,重要的是要记住,你不必一次就知道这一切。

我开始看小块直到我理解它们 - 然后看看更大的碎片。

我也看一下大局 - 然后我会详细介绍。

在某个时刻,两人应该见面(我希望!),这一切都会落到实处。

我的正常方法是开始研究系统的一小部分以获得理解 - 当我研究它并与其他部分交互时,我学到的东西越来越多。这对于使用新技术来说是正确的,从基础知识开始然后继续。

答案 10 :(得分:2)

我最近使用Wicket和postgreSQL开始了一个新项目。这两个我以前从未使用过。

我强烈建议您一旦掌握了基础知识,如果您与其他技术(如数据库)进行任何交互,请尝试练习与它们集成。 保证你也会在那里找到挑战。

最好在一开始就解决这些挑战,这样你就可以知道自己面临的挑战,并且可以在项目的后期进行规划,当需要进行重大改变时。

答案 11 :(得分:2)

我会说这主要是这样:

  • 阅读如何/ forums / ...
  • 解决问题(毕竟这可能就是为什么你要使用你不知道的东西)
  • 经过一段时间和知识积累... REFACTOR / REWRITE 您的原始代码

答案 12 :(得分:1)

在我以前的工作中,我们有图书馆。

每当我们用新语言或技术获得新项目时,我们就去那里拿一些书并开始逐步测试。

答案 13 :(得分:1)

我首先会质疑使用新技术或语言是否是一个好主意。有时候,对你期望的项目使用最新的技术似乎非常重要。通常当我被这样诱惑时,我发现最新的闪亮东西和我已经知道的技术一样有缺陷。

在许多情况下,如果你真的关心这个项目,最好坚持你已经知道的。

答案 14 :(得分:1)

如果您需要学习多种新技术(例如,目前我正在学习Entity Framework + ASP.Net MVC 2),那么我建议创建端到端参考实现。尝试找到创建它的最佳方法,然后将此引用“复制”到程序/网站的其他区域等。

答案 15 :(得分:1)

这可能略微超出了范围,但是:

  1. 您应该决定您的开发过程,这与语言无关。

  2. 这将包括您的测试方式

  3. 您需要查看本技术中众所周知的人员的最佳实践(对于代码,可以从众所周知的开源项目中查看编码实践)

  4. 尝试在电子书店找到一些强烈推荐的书籍并获得高评价

  5. 通过电子邮件联系这个领域众所周知的人,并将他们的电子邮件留在某个项目页面上,当您向他们提出建议时,您会对花时间回复电子邮件的人数感到惊讶礼貌。

  6. 尽量不要在实施/工具相关问题中过于苛刻,并且在开始使用新技术时尽早采用最佳实践和惯例是我的建议。

    安东尼

答案 16 :(得分:1)

我能给你的最好的单一建议是问题领域。该技术是否适合您要解决的问题?

如果已经回答,答案是肯定的。

  1. 记笔记,前面提到过。
  2. 观看视频,在看到和理解这个人的行为时,我会更容易学习。
  3. 准备好文档。

答案 17 :(得分:1)

与我用我已经知道的语言开始一个项目的方式相同,除了手册稍微接近。

答案 18 :(得分:1)

我试着阅读手头的主题。看看有哪些其他可用的解决方案(因为让我们面对它,多久以前没有做过?)。如果可能的话,我也尝试用这项技术进行一些实验。

答案 19 :(得分:0)

阅读和学习一些东西不是一个好方法。任何你倾向于忘记你读的东西。所以我总是先从一个小小的程序开始,就像一个你好的世界,给自己一个“好男孩”拍拍肩膀只是为了提升。
然后开始查找博客并阅读其他大师们发现的难以实现的做法。并以技术或语言的名义在记事本中记下它。还写一个简短的一行,说明为什么保存链接,以便我可以在需要时返回。如果它与我必须开始的项目有关,那么也要在一个班轮之后放一颗星 下一步是根据手头的工作设置基础项目。在两者之间尽可能多地参考语言文档,以便我将阅读和尝试一些事情。

答案 20 :(得分:0)

对我来说,试用和错误的方法总是运作良好。我确实阅读了有关新语言/技术的一些基本信息,但在此之后,除非我的手脚湿润,我通常不会学到很多东西。我不确定这是一个好习惯,但这就是我学习的方式。

即使公司不采用新技术,我也会学习一门新语言。当然,这可能不是管理层希望你处理事情的方式。

答案 21 :(得分:0)

说到语言,我可以说一件事:

如果使用这种语言实际上是值得的,那么你在前6个月内编写的所有代码都将是废话,用语言可以做什么来衡量......有一个重要的规则要坚持:不要尝试使用你在新语言中从其他地方知道的习语,并抱怨语言是否支持它...而是尝试概述语言的特殊功能和流行习语,并尝试专注于使用该语言表达解决方案那些......尝试用这种语言推广的新方法......否则你选择转换语言毫无意义。

答案 22 :(得分:0)

根据需要spikes了解新技术。这些可以作为learning tests(单元测试)来完成,以保存知识。

答案 23 :(得分:0)

在尝试学习新语言时,我建议潜伏在IRC 。许多主要语言和技术都有关于freenode的频道,只是观看人们正在谈论的内容是一种很好的方式,可以找到你在阅读有关该主题的教程或书籍时可能没有考虑过的方面。

当然,当你开始遇到障碍时,IRC将是一个提问的好地方,但是我建议把所有这些问题都写在纸上,并在做更多研究时留下。这些不熟悉的术语和语法通常需要一段时间才能在您的大脑中插入并能够返回并交叉,或者重新评估您之前发现的任何我认为非常有用的问题。