人们对你是否真的很慢的一切质疑都是愚蠢的。成为一个更快的程序员而不牺牲质量始终是一个好目标,无论您已经有多慢。这是我作为程序员的第一目标,而且我永远也做不完。我一直在努力提高速度而不牺牲质量,我对此非常着迷。到目前为止,以下是对我有用的工作,最后是一些实验性想法:
1)永不停止学习:全面学习有关编程和使用计算机的所有知识。找到您薄弱的领域并学习它们。即使它看起来与您的工作和C#完全无关,我保证即使您正在寻找它,也经常会找到将其应用于您所做工作的方法。学习也是关于经验的,所以不要只是阅读东西,而是尝试并扩大自己的技能。如果您习惯使用Windows,请尝试Unix,反之亦然。如果您通常喜欢使用IDE的try命令行工具和文本编辑器,反之亦然。如果您听说过以前从未听说过的工具或技术,或者对此不太了解,请不要屈服于继续前进的诱惑。查一下!不要害怕跳出框框思考,学习别人认为不切实际的实验性新技术。
2)分解项目:尝试将您的项目分解成小型项目。尝试每天或最多每几天进行一次新发布。问问自己“我可以发布的最小功能量是多少,而仍然发布对用户有用的功能。” 这是您通过学习将学到的技能。您可能需要说服经理让您执行此操作,但是他们通常会很快对结果感到满意。通过这样做,您将开始注意到,您认为对该功能必不可少的东西实际上是可以在以后开发的其他功能。这样,您和您的经理就可以仅对最重要的功能进行优先级排序,而不必对与您正在使用的功能相关的所有功能进行优先级排序。通过保持头脑清晰和专心,您可以更快地思考。反过来,您将可以更合理地编程。您的经理或至少经理的经理也可能会认为您现在的编程速度甚至比实际速度还要快,因为您将发布更多的发行版。这样做的另一个巨大好处是,您将更好地估计发行需要多长时间才能完成,并且您的经理会为此而爱上您。由于您已经在进行大量的自动化测试,因此在进行稳定的频繁发行时应该没有问题。但是,您可能需要增强自动构建系统。我强烈建议阅读Martin Fowler系列丛书“持续交付”。这是一本很难读的书,因为它是非常重复的,但仍然很有帮助。s经理们还可能会觉得您现在的编程速度比实际速度还要快,因为您将发布更多的版本。这样做的另一个巨大好处是,您将更好地估计发行需要多长时间才能完成,并且您的经理会为此而爱上您。由于您已经在进行大量的自动化测试,因此在进行稳定的频繁发行时应该没有问题。但是,您可能需要增强自动构建系统。我强烈建议阅读Martin Fowler系列丛书“持续交付”。这是一本很难读的书,因为它是非常重复的,但仍然很有帮助。s经理们还可能会觉得您现在的编程速度比实际速度还要快,因为您将发布更多的版本。这样做的另一个巨大好处是,您将更好地估计发行需要多长时间才能完成,并且您的经理会为此而爱上您。由于您已经在进行大量的自动化测试,因此在进行稳定的频繁发行时应该没有问题。但是,您可能需要增强自动构建系统。我强烈建议阅读Martin Fowler系列丛书“持续交付”。这是一本很难读的书,因为它是非常重复的,但仍然很有帮助。您的经理会为此而爱上您。由于您已经在进行大量的自动化测试,因此在进行稳定的频繁发行时应该没有问题。但是,您可能需要增强自动构建系统。我强烈建议阅读Martin Fowler系列丛书“持续交付”。这是一本很难读的书,因为它是非常重复的,但仍然很有帮助。您的经理会为此而爱上您。由于您已经在进行大量的自动化测试,因此在进行稳定的频繁发行时应该没有问题。但是,您可能需要增强自动构建系统。我强烈建议阅读Martin Fowler系列丛书“持续交付”。这是一本很难读的书,因为它是非常重复的,但仍然很有帮助。
3)使用番茄技巧并适应/更改对您不起作用的内容。如果将其与此列表中的2相结合,您将获得巨大的生产力提升。
4)学习Vim。即使最终通过ViEmu在Visual Studio中使用这些命令,或者在Eclipse中通过插件或在Emacs中使用了这些命令,您也将获得生产力。学习Vim的最好方法是开始使用它,并强迫自己在精通它之前不要(禁用它/返回到旧工具)。刚开始时很痛苦,但是您永远都不想退缩,甚至在没有它的情况下不得不畏缩。有人会说这不会大大提高您的速度。但是越快越快,特别是当我们要阅读和修改代码时,我发现自己有时会节省很多时间。
5)不一定推荐最后一个,因为我不确定这是个好主意,它实际上可能会降低您的生产率,但是无论如何我都会通过它。您可以尝试进行更多的验收测试,而减少单元测试,或者至少确保进行一些验收测试。我在SpecFlow上取得了成功,但是我怀疑那里还有更好的东西。即使编写规范也可能是相当技术性的,因此您可能只想先让经理/客户编写一个草稿版本,然后进行重大更改,或者您可以自己编写整个内容,然后阅读并确定。这将帮助您使用此列表中的2。同样,验收测试比单元测试更实用,并且需要更少的代码。这并不是说它们取代了它们,它们是针对不同事物的不同工具。
6)这是更具实验性和争议性的。我本人实际上并没有这样做,所以我不能完全推荐它。从JetBrains学习和使用元编程系统。使用它来创建工具,经理/客户可以使用这些工具来自己创建所需的软件。如果您可以使用它来制作经理/客户用来以非常直接且不复杂的方式指定行为的工具,您甚至可以停止进行单元测试和验收测试。这个想法不是要摆脱程序员。当程序员(人员,而非工具)无法轻松创建某些所需功能时,程序员仍然需要向客户/经理使用的这些工具添加新功能。我确实相信MPS或与其类似的其他工具都是未来的方式。