我应该先改进公司的哪个工作流程?

时间:2010-04-30 09:32:46

标签: java development-environment

我刚刚开始在一个新的地方工作,我看到他们做的几件我发现非常糟糕的事情,我想知道他们是不是真的错了,或者我太严格了。如果我的批评到位,请告诉我,以及您对哪个问题最严重的看法,应该先修复。开发全部都是Java。

  1. 不使用svnignore。这意味着无法使用svn stat,开发人员忘记添加文件并破坏构建。

  2. 生成的文件与提交的文件一起转到相同的文件夹。不能使用简单的maven清洁,必须逐一找到它们。 Maven clean并没有删除所有这些。

  3. 未修复IDE分析警告。分析代码返回大约5,000个警告,有许多不同类型。

  4. 不遵循惯例:spring bean名称有时以大写开头,有时不是,ant属性有时带下划线,有时带点分隔符等。

  5. 增量构建需要6分钟,即使没有任何更改。

  6. 开发人员仅使用远程调试,并且不知道如何从IDE内部运行Tomcat服务器。

  7. 开发人员总是在每次编译后重新启动服务器,而不是动态重新加载类并保存服务器的状态。开始检查代码中的任何更改至少需要10分钟。

  8. 开发人员只能从命令行进行编译。当出现编译错误时,他们会手动打开文件并转到有问题的行。

  9. 项目依赖项完全混乱。超过200个开源依赖,没有人知道确实需要什么以及为什么。他们确实知道并非所有依赖都是必要的。

  10. 以一种无法兼顾两者优势的方式混合Maven和Ant。在一种情况下,甚至依赖性检查也不是由Maven完成的。

  11. 不正确使用泛型。

  12. 开发人员不使用Subversion与IDE集成(Eclipse,Intellij Idea)。

  13. 你怎么看?我应该从哪里开始?我提到的任何事情都不是真正的问题吗?

7 个答案:

答案 0 :(得分:6)

我会这样看:

  • 任何影响生产力的事情都应该先解决
  • 影响盈利能力的事情第二次解决(大多数生产力修复也是盈利能力修复)
  • Nitpicky的东西最后

因此,您应该具备以下内容(按照我的意见):

  1. 7 - 编译后重新启动服务器
  2. 5 - 增量构建速度
  3. 6 - 仅限远程调试
  4. 8 - 从命令行编译
  5. 12 - 颠覆整合(与上述同一联盟中的那种)
  6. 2 - 生成的文件
  7. 11 - 未正确使用Generics
  8. 然后

    1. 1 - svnignore
    2. 9 - 项目依赖项(这需要花费大量时间我确定)
    3. 10 - 混合Maven + Ant
    4. 3 - IDE警告
    5. 4 - 约定
    6. 我在这个意义上订购的原因是时间与利益。如果需要一个用户 16分钟来编译和检查他们的代码,说实话它真是太疯狂了。假设开发人员每天编译5次,我们需要大约80分钟, nothing

      之后就是生产力。如果加快开发人员开展工作的速度,完成工作的营业额将大幅增加。 (Profitability++

      此后是“挑剔”的事情。我说这不是为了推断它们并不重要,但事实是从你有更大鱼的东西的外观来炒,所以在修改代码中的套管之前先完成那些。

答案 1 :(得分:6)

不是maven用户,我不能评论上面的一些内容,但是列表中的大多数内容看起来都是改进的好方法。我认为我能给出的最好建议是:

  • 慢慢来。他们可能已经这么做了多年,可能会抵制变革。
  • 让团队(可能还有经理)参与变更。举行会议讨论你看到的改进(保持简单,只有少数),他们对他们的看法,以及他们是否认为实施它是明智的。然后,如果同意,与某人配对以获得改善。
  • 提供易于更改的工作实践演示文稿。例如。在实时设置中显示调试会话期间动态类加载的差异。
  • 优先考虑上面的列表,并一次关注几个。
  • 要温柔。改变很难!很快就会疏远或脱离民众。
  • 从快速获胜开始,这将对团队中的开发人员产生直接和积极的影响。这将增加他们对接受更加困难的变革的信心。

祝您好运......

答案 2 :(得分:2)

对问题的评论

  

1)不使用svnignore。这意味着无法使用svn stat,开发人员忘记添加文件并破坏构建。

对我来说听起来不是很关键 - 我从上面假设你有一个CI或每晚构建(如果没有,那确实是一个重大问题)。 CI构建的目的是捕捉这些问题,所以恕我直言,如果它不时被打破,它不是一场灾难。当然,如果它每天都发生,那就是另一个故事: - (

  

2)生成的文件与提交的文件一起转到相同的文件夹。不能使用简单的maven清洁,必须逐一找到它们。 Maven clean并没有删除所有这些。

这很糟糕,并且修复起来相当简单(在正常情况下: - )

  

3)不修复IDE分析警告。分析代码返回大约5,000个警告,有许多不同类型。

这很糟糕,修复需要很多时间。但是,浏览分析结果以发现真正关键的问题可能是一项高优先级的任务。

  

4)不遵循惯例:spring bean名称有时以大写开头,有时不是,ant属性有时带下划线,有时带点分隔符等。

不是灾难,OTOH容易修复。

  

5)即使没有任何改变,增量构建也需要6分钟。

这很糟糕,(考虑下面的案例9和10)可能是一项相当艰巨的任务。

  

6)开发人员只使用远程调试,不知道如何从IDE内部运行Tomcat服务器。

简短的演示和指导不应该花费很多精力。但是,可能存在文化问题,团队的老成员可能不愿意学习新的技巧。因此需要一种敏感的方法。

  

7)开发人员总是在每次编译后重新启动服务器,而不是动态重新加载类并保存服务器的状态。至少需要10分钟才能开始检查代码中的任何更改。

与上述相同。

  

8)开发人员只能从命令行编译。当出现编译错误时,他们会手动打开文件并转到有问题的行。

与上述相同。

  

9)项目依赖项完全混乱。超过200个开源依赖,没有人知道确实需要什么以及为什么。他们确实知道并非所有依赖都是必要的。

这很糟糕,需要修理。

  

10)以一种无法兼顾两者优势的方式混合Maven和Ant。在一种情况下,甚至依赖性检查也不是由Maven完成的。

与上述相同。

  

11)不正确使用泛型。

你的意思是他们仍然使用非泛型集合等编写Java 1.4方式吗?如果代码是稳定的,那么这可以逐步修复(和开发人员接受教育)。

  

12)开发人员不使用Subversion与IDE集成(Eclipse,Intellij Idea)。

见案例6。

优先级

我会尝试根据成本与收益比率订购任务。我的订单是:

首先,简化和加快日常工作的任务,并在团队中建立你的可信度和权威:7,6,8,12,2

然后是基础但困难且耗时的任务,您需要团队提供更多支持:(如果还没有,则持续集成),5,10,9

其余的可以逐步介绍:1,3,4,11

答案 3 :(得分:1)

你没有提到持续集成,但开始的一件好事是,如果构建被破坏,给开发人员一个快速的反馈。获得后,您可以添加代码质量指标,以鼓励他们纠正警告或错误使用泛型。

只有完成所有这些工作后,您才能通过向他们展示如何热部署,调试,使用IDE等来开始提高工作效率......

祝你好运:)。

答案 4 :(得分:1)

总的来说,我认为应该首先考虑那些浪费时间的开发人员。开发人员闲置越少,收益就越大。

1)这与12)一起应该优先考虑更高,因为破坏的构建需要时间。

3)IDE警告并不重要,因为它们只是警告,可能像未使用的导入一样简单。

4)缺少命名约定不会破坏任何内容,并且可以逐步强制执行。这样做会花费很多时间。这不应该高度优先。

5)我假设你有一个独立的构建服务器负责构建,六分钟听起来不是很长时间。如果您没有构建服务器,那将是一项很好的投资。

7)听起来很多时间浪费在所有开发者身上,这应该是高度优先

11)这些可能导致3)中的很多警告,应该是固定的,但不是最高优先级。

12)与IDE的Subversion集成应该有很多帮助,我认为开发人员会认为这非常有用。

答案 5 :(得分:1)

首先,我完全同意你的问题清单,因为我一直在处理基本相同问题的项目。

如果您从您认为可以获得最高生产力的地方开始。 我认为你可以节省相当多的时间:

  • 让IDE在IDE中运行。
  • 修复任何构建脚本,也可以测试问题,以使构建快速运行。
  • IDE和hotdeploy(hotswap / jrebel)中的编译也将为您节省大量时间。

如上所述,为项目启动并运行连续构建服务器。 如果您有问题跟踪器,请将这些问题添加到其中,以便每个人都知道需要执行的操作。当高优先级的东西已经完成时,试着花时间修复其他东西,它真的很烦人的所有小问题,即使它们看起来很小,现在它们会在一段时间后引起相当大的麻烦。

答案 6 :(得分:1)

首先,既然你是新手,你需要注意不要被认为非常讨厌。

我建议你先与自己的老板交谈,然后说你可能有一些可能对你的新公司有用的经验。如果您想要快速完成某些事情,管理备份是必不可少的。

您需要向您的老板和同事证明您的建议在他们的日常工作中立即对他们有益。因此,选择一个痛点并将其修好(但可逆转,因为回去是一个很好的选择,在尝试时)。准备好自己做很多工作,并且很多的指导。

根据您的描述,我建议快速演示在IDE内部运行的概念验证Web应用程序,通过热点编辑和即时重新部署已更改的文件将非常引人注目。 NOT 快速行动 - 确保每个人都明白你的所作所为。然后作为最后的演示,再次再次,但正常速度。