it-swarm.cn

如何成为一个“更快”的程序员?

我最近的工作评估只包括一个弱点:及时性。我已经知道我可以做些改进的事情,但是我正在寻找更多。

在提高其输出速度而又不牺牲其质量的情况下,有人对它们做什么有技巧或建议吗?

您如何估算时间表并遵守时间表?您如何做才能在较短的时间内完成更多工作?

非常感谢您提供任何反馈意见,谢谢,

142
Nick Gotch

关闭电脑。拿起铅笔和一些纸。草绘您的设计。与您的同行一起审查。然后编写代码。

190
gatorfax

一些想法...

  • 避免镀金-仅执行要求您的要求(就要求而言)
  • 了解业务需求并在第一时间做到正确
  • 彻底了解您的环境和工具
  • 成为出色的打字员,使用键盘快捷键代替鼠标
  • 采取迭代方法并进行健全性检查,以确保您走上正确的道路
  • 不要重新发明轮子,考虑重用过去的工作和其他人的工作
  • 消除分心,不要继续检查电子邮件,向外看,与同事交谈等。
  • 不要劳累过度-识别何时需要休息
149
Mayo

您自己想成为“更快”的程序员的愿望值得称赞。 但是,不按时交付并不意味着您很慢,这意味着项目计划不周。成为“更快”的程序员将无济于事;这只是意味着您可以更快地完成截止日期。

您(和您的团队)正在犯以下错误之一(或所有错误):

  • 低估需要完成的工作;
  • 缺少在计划期间有很大的需求或体系结构;
  • 令人困惑带有日历估计的工作估计,而不考虑会议/电话/其他开销之类的事情;

您可以通过多种方式解决上述三种情况中的任何一种。但是,在对它们中的任何一个进行改进之前,您需要知道事情为什么会如此发展。 对最后两个或三个项目进行验尸估算与实际花费的时间,并找出多余的时间在哪里。

我会再重复一遍-编写代码的速度很慢,不会导致错过截止日期,如果您已适当地计划它以解决这个问题。

132
Franci Penov

真的,真的要学习您的编辑器。如果使用IDE,请确保使用其提供的所有功能。获取备忘单,以了解所选编辑器的键盘快捷键。如果您使用的是Shell设置,常用目录的快捷方式

89
slashnick

“有人在提高输出速度而又不牺牲输出质量的情况下,有任何技巧或建议吗?”

许多人以(a)简单,(b)可靠和(c)正确的东西为代价来追求“终极”质量。

加快开发速度的最重要方法是simplify您在做什么,以使其尽可能地简单。

大多数在按时交付方面存在问题的人都在交付方式,方式太多。给出的原因通常很愚蠢。它们通常只是感知的需求,而不是实际的需求。

我听到很多人告诉我客户的“期望”。这是一个坏政策。

构建最简单的东西。如果客户需要更多,则增加数量。但是首先要构建最简单的东西。

38
S.Lott

避免完善代码,仅使其工作即可。这就是企业的期望。

但通常,提高速度意味着牺牲质量。

32
user8685

重用-我尝试排除以前项目中的任何聪明之处,以便在以后的事业中再次使用它们。总是值得问自己:“有一天我可以再使用一次吗?”

29
Phil Jenkins

把事情简单化。

如果使用TDD,则应遵循“ 红色,绿色,重构”:

  1. 编写失败的测试(红色)。 (通常出于您的代码尚不具备的功能。)
  2. 犯下可怕的编码犯罪,以使您的测试通过(绿色)。必要时进行硬编码。
  3. Refactor,可能会暂时中断测试,但总体上会改善设计。
24
bryanbcook

将您所有的语言/库文档本地下载到计算机,然后拔下网络电缆/关闭 Wi-Fi

不想在这里变得有趣。这真的对我有帮助!

22
mcjabberz

请注意,当您阅读堆栈溢出时间太长时。 “编译”借口只能使用这么长时间。 :)

20
Matthew Jones

避免过于频繁地切换任务。即使您使用 Mylyn 之类的工具来管理任务,分心和任务切换也可能会浪费一天的时间。

确定粒度(例如30分钟),然后仅处理与当前任务相关的事情。其他所有问题(新的错误报告,有关其他问题的电子邮件,与程序无关的事项)至少会延迟到“下一个检查点”。确保禁用弹出的电子邮件通知,以免您陷入困境。

如果您的团队中有一个好友,他会告诉您事情是否真的消失并需要您的直接关注,这将特别有效。

20
Uri

第一次正确地做最好的方法。如果那意味着您必须停下来思考一下,然后再开始,那么那就做吧。 90%的时间有效。

14
ck01
14
AJ Johnson

明天再做

完成任务 也非常有用。

无论如何,我的注意力都不集中,所以这些书可以帮助我保持专注……我又在做什么?

12
Matthew Jones

实践和努力。

您需要花费时间和精力。当您对使用的任何工具变得更加舒适和自信时,应该遵循的速度和创造力。

如果您想提高任何特定技能,也可能有助于设计练习,使您可以专门从事此工作。如果您的设计进度很慢,请尝试查找可在线处理的设计问题。重做相同的练习将使您更快地完成练习并加快练习速度。我个人喜欢 TopCoder的算法练习 ,用于练习纯粹的编程速度。它们也有设计挑战,但我没有尝试过。

12
DisplacedAussie

了解有关“区域”的信息,了解如何使自己进入该区域,并学习如何识别自己不在的区域。

一旦我“处于区域内”,我就会变得非常有生产力,并且代码刚从我身上冒出来,通常我可以在1天内完成2或3天的编码。但是我发现通常很难到达那个地方,我发现自己拖延,被其他事情分散注意力(例如Stack Overflow)。

引用 什么技巧可以使您自己进入该区域

11
Dustin Getz

熟悉您的IDE)和框架。每件小事都必须向Google寻求帮助。

10
Mike Hall
9
ZeroCool

在开始开发之前:

  • 注销您的邮箱
  • 关闭任何 [〜#〜] im [〜#〜] 客户端
  • 礼貌地请同伴给你时间集中精力
  • 当然,停止上网

每次您被打扰时,您都会放慢脚步,因为它会花费您的时间来使其思想重新回到正轨。我听到的数字显示,每次中断都会使人的大脑恢复到中断之前的思维过程,需要花5到10分钟的时间。每次中断有那么多时间,浪费一整天并不需要太多时间。

实际上,我们公司的员工已经习惯于推迟日历时间,然后每天搬到空旷的会议室几个小时。

8
dhable

了解您的开发IDE进出。学习快捷键。学会减少使用鼠标。我发现这为我节省了很多时间。

7
D3vtr0n

您是否比同事慢,或者您的估计是否过于乐观?

7
pjc50

为了更快地生产软件,我发现最好的方法是尽可能地学习您的运行时API。当LINQ扩展可以使用时,请不要键入列表逻辑。当绑定可用时,不要构建一堆事件监听器,等等。

据估计,这是有经验的。您可以在那里使用估算软件来帮助您确定更好的估算。

就我个人而言,我发现与初级开发人员一起,将他们的初始估计值乘以2,然后将其加倍。这将包括所有的学习,会议,浪费的时间等。高级开发人员的工作往往比他们的估计高2倍。

通常,问题不是您的估计是否错误。您的估计是否解释了所有正确的事情?您是根据编码工作量还是日历时间给出估算和时间表?想一想您一天中的所有时间,以及其中有多少是实际的,富有成效的编码,而不是会议,学习,调试等。

7
James Schek

可能暗示了两件事,但是在提高生产率方面我还没有看到答案:

  • 使用某种构建和部署脚本。编译,部署,重新启动应用程序服务器,并且不会浪费时间或精力,这应该是一键式的事情。

  • 有某种版本控制。无需回滚更改就可以编码,就像在踩鸡蛋一样

7
Buhb

有两个想法:

  1. 从您的估计中获取其他意见-是否有其他开发人员会问类似“嘿,您认为可以在此时间范围内完成这种功能?”的问题。在某些情况下,其他人的输入可能有助于提高准确性,因为有人可能会注意到您在进行估算时错过的一堆东西。

  2. 磨练您的估算技能-开始跟踪您的估算状况如何以及为何中断:其他工作项是否导致无法按时完成?您是否一直低估事物的复杂性?您是否在不可行时给出了完整的时间表,例如所要求的含糊不清,仅准备一个原型就需要数周时间,然后应该重新评估还需要做些什么?这样做可能最有助于建立该技能,因此,如果您说某件事将花费x个小时,您将对此充满信心,因为您已经一遍又一遍地重复了。另一种陈述方式是实践,实践,实践。

当然,您可能已经考虑过这些,但是我认为值得为那些尚未考虑这些想法的其他人指出这一点。

7
JB King
  1. 全面了解技术。
  2. 停止!认为!走!
  3. 架构师可以解决任何可能出现的问题,但是只能执行真正需要的内容。
  4. 吻-保持简单愚蠢
  5. 如果它变得太复杂,则可能不是很好的想法。 (回到2和4)
  6. 不要卡在5中。通常需要从头开始(返回2和4)。
  7. 回到1。
7
Rui Craveiro

我认为他们这里的关键词是“及时性”。他们没有说你太慢,而是说你不及时。

在项目管理中,经理必须能够准确估计何时完成您的工作项目,这一点很重要。我怀疑您的工作不及时的主要原因是您经常遇到未按计划交付且交付时间比计划晚得多的项目。

为了提高您的及时性,您可能需要花费更多的时间来了解在给定您的技能,经验和领域的情况下,完成特定工作项目将花费多长时间。这将使您可以向项目经理提供更好的估计。这里的关键是“更好”……您可以通过用软糖填充所有内容来按时交付,但是您真正想要争取的是更准确的估算。

我将与您的经理讨论此问题,以查看是否确实是问题所在。否则,您可能会以比以前快一半的速度,以两倍的速度完成编程,完成一些有前途的事情,并且由于您的估计仍然具有相同的错误因子,因此仍然因其及时性而受到批评。

7
Larry Watanabe

保持稳定,保持稳定。

构建一些实现少量功能的东西,并确保其端到端有效。然后,在添加新功能时使其保持工作状态。是的,这在某种程度上是TDD的做法,但是即使您不进行TDD,这也是有道理的。

这样做的理由是,每次我看到有人用2周的代码从未稳定过,总是要花2个星期才能使它get稳定。

如果stay稳定,则可以消除不确定性,并在必要时为自己提供一种在截止日期之前缩小范围的方法。

明显的反论点是,这样做将比编写一次代码花费更多的时间,因为您将做更多的工作来稳定非最终代码。我一秒钟都不会买。当您具有works的代码时,您更改了5行,并且发生了中断,您知道确切地必须在何处发生中断。

如果您有10,000行从不工作的代码,并且必须找到一个中断,则有大量代码可以搜索。

在始终稳定的FTW的系统上进行小的增量更改。慢走快走。

7
kyoryu

对我来说,获得良好的生产力对您要实现的目标以及如何实现目标有一个清晰的认识。

7
mdma

在这里和其他地方的许多地方,几乎所有答案都被说死了。或者,至少我听说过死刑。学习您的IDE,学习更快地键入内容,使用框架,使用代码生成,等等,等等。当然,这些事情会有所帮助,并且我怀疑有很多程序员是他们的大师。但是,作为问这类问题的程序员的类型,经常访问诸如Stack Overflow之类的站点您已经知道这些事情。您只是想在这里让他们重复一遍,还是只想发泄一下?

但是,如果我们能够达到那种状态怎么办?我的意思是掌握所有这些建议?那会发生什么呢?好。我猜想时间表会进一步减少。再一次,我们将恢复对质量的看法。我的意思是,几十年来,我们的工艺确实取得了进步,并且生产率越来越高。但是这段时间内质量是否有所提高(当然不包括早期的课程)?

我的答案很简单:优质软件需要时间!您只能以一种换另一种(质量/速度)。但是,是的,我们都知道,但是,我们对折衷往往会在规模的速度方面最终结束的程度并不诚实。在项目初期,我们甚至是更大的骗子!

我说你在这里没有错。问题是人们对质量软件应该花多长时间了perception。我们自欺欺人,以为我们有能力根据经理甚至是猜测的时间表来创建高质量的软件。 我们不制作优质软件。我们编写的软件可以正常工作,但有时在应用程序的某些角落会闪烁一些质量。

那么我们该怎么办?我们不能仅仅说服老板,我们需要将每个项目的投资增加一倍或两倍。我说以身作则。创建一个真正出色的软件作为辅助项目。投入自己的时间,不要妥协。始终注意您的进步。记下显然不相关的任务,您不得不花很多时间,看看是否可以辩解。将此与您工作过的所有其他项目进行对比。对自己和分析的各个方面都做到非常诚实。您使用质量软件所做的额外工作是否可以在工作中的“真实”项目中忽略?但是也许您的尝试失败了。是什么原因您是否感到无聊而又急于完成核心功能?我本人还没有做过这样的事情,这就是为什么我会怀疑地结束这种想法的原因-但我打算真正地做到这一点。我会及时向大家发布 :)。

最后,我认为大多数(如果不是全部)绩效评估都是扭曲的,并且具有非凡的操纵性。您无法将质量和速度控制在100%。您的老板应根据组织设定的标准给您打分。组织在质量和速度之间进行权衡的标准。假设OrangeSoft Inc.期望33%的质量和66%的速度。因此,如果您编写的代码可能具有单元测试的三分之一,但是应该以更快的速度并缩短交付时间来弥补,则您的评论应得分接近100%! (这些都是粗略的类比,但您明白了)。但是,相反,发生的事情是Bob编写代码的速度非常快,但是臭名昭著的是有错误。因此,在他的绩效评估中,他的质量得分为3/5,速度得分为5/5。另一方面,Carol编写代码的速度要慢得多,但产生的错误却少得多。她的质量得分为5/5,但速度得分为3/5。鲍勃和卡罗尔无论哪种方式都会加薪。任何员工都有可能获得完美的成绩吗?这公平吗?

6
Thiru

我使用的技术是 进化原型

您可以在Google上搜索更多信息-但是如果需要快速生产某些东西,这是唯一的方法。另外,它的好处是,当用户说他喜欢它时,您就完成了(...并可以开始编写文档)。

5
slashmais

您的时间瓶颈是什么?我发现思考是我通常的瓶颈,因此提高打字速度(已经不错)几乎无济于事。另一方面,如果键入不是您快速而自然的操作,则很可能会减慢您的速度。

您是否在尝试超出要求的范围?通常,企业会希望从中获得很多好的工作,而不是少但精打细算的工作,而添加不使用的功能会浪费时间和金钱,而不会带来任何业务回报。

你太草率了吗?在时间压力下,人们经常跳过前期的设计和计划,希望无论如何都会成功。经常没有。

您处理时间是否正确?开发需要不间断的思考时间,否则您的效率将会降低,因此速度会很慢。

5
David Thornley

阅读Neal Ford的出色著作 生产程序员

它充满了许多有用的技巧。


编辑:

并且,如其他地方所述,请阅读适用于您的工具的文档。我总是通过阅读Vim维基来学习Vim的新事物。同样,仅阅读bash或zsh的手册页总是会提供新的技巧。

4
Rob Wells

我很久以前就读过一些关于优化的知识,这些知识确实与我息息相关。我记不清源代码或确切的用词,但其要旨是:“使程序运行更快的唯一方法是使程序执行更少。任何其他计划就是这样。”人类也是如此。军队也有句俗语:“急于浪费”。做与现在相同的事情,但速度更快,只会造成问题。有许多提高生产力的不同计划,我并不是说它们没有效果,但是它们不会满足您的需求。您最好先看一下自己所做的事情,然后发现自己所做的没有效率的事情,然后将其淘汰掉。任何其他计划都只是该计划的简化版本。

4
Imagist

这对我有用:

  1. 将您的工作分解为在范围(2)中定义的(1)短小的任务-例如2小时。
  2. 从新的一天开始,依次将它们写下来。划清界限-您希望在午餐前完成的工作,到一天结束时要完成的工作,等等。
  3. 整理清单,随时删除项目。
  4. 时间盒的东西-如果有东西开始拖延,请在寻求帮助之前给自己一个时间限制,或者以更简单的方式解决。
  5. 如果可能,请安排工作结构,以便您公开承诺这些时间范围-在错误跟踪中输入估算值,等等。
  6. 如果您发现自己在研究,阅读等方面花费了很多时间,那么请颠倒顺序-例如,如果您按时成功完成了1个小时的任务,则给自己10分钟的奖励。

我已经看到一些评论,您应该减少在Stack Overflow上的花费。如果使用得当,Stack Overflow应该会使您效率更高,而不是更低。避免讨论,并专注于使用它来完成工作。

3
Jon Galloway

不要重复自己

重用旧项目资产。

花一天时间学习您的IDE。如果它不提供代码片段之类的工具,则代码会自动完成...考虑购买一个新的代码。

在主要位置放置所有内容的快捷方式,以便您可以更快地访问内容。

如果还不是,请再获取一个屏幕。

不要经常检查您的电子邮件。

尝试一次只专注于一项任务。如果无法做到这一点,请密切注意自己在做什么,不要在15个无关的任务之间迷路。

用纸。当我工作时,我总是有任务的打印版本,可以在上面做笔记,划掉等。这比在其他屏幕上阅读内容或书写内容要快得多。最终,我花了10分钟将所有内容复制到系统中。我意识到它每天为我节省了一些时间。

3
marcgg
  1. 每天,以程序员的身份发展自己的方式越来越多...学习设计模式!
  2. 使用TDD,但是以适当的方式,代码中可能存在的错误是最耗时的事情。
  3. 使用ReSharper :)
3
Denis Biondic

由于许多其他答案都涉及进行设计工作,因此,我只会坚持更快地进行编码的纯机械方面。其中大多数可能是显而易见的,但是无论如何我都会说,因为我注意到我的许多同事都没有做这些事情。

重新映射您的IDE键盘快捷键,这样您就可以用左手来完成大多数操作。这可以腾出鼠标来进行快速而繁琐的代码概述/重构。

了解如何使用以下组合导航光标和选择文本 Ctrl, Shift, 方向键, Home 和 End

以下是我的C++设置(带有Visual Assist X的Visual Studio)。我有挪威语键盘,所以请多多包涵:

Alt-Z:在.h和.cpp之间切换

Ctrl-Shift- <:上下文相关跳转参考。 (<对我来说是Z的键,您英语的人没有其中之一。然后将其映射到Ctrl-Shift-Z。)

Alt- | :实现方法。首先写标题,然后按Alt- |一直以来,您都可以在几秒钟内完成整个类的概述。(对我来说,|是逃脱的关键。)如果在文本编辑器中将cpp文件和头文件并排放置,以便头文件没有每次执行操作时都不会被遮住。

Alt-R:重命名我的插入符号下的符号。

Alt-D:为所选功能添加文档模板。

除了快速完成代码外,这还使左手重构成为可能。

3
Nailer

代码片段,经验和永不停止的热情。经常阅读一些东西:程序员博客,书籍,文学作品,其他人的错误代码。如果您对事物有更广泛的了解,将会更快。如果您可以想象涉及到的各种复杂的后台过程,并且您真的知道目标系统的整个复杂性。

Pragmatic Programmer's Handbook 非常棒:它涉及软件开发的许多不同方面的最佳实践和主要陷阱。橡皮鸭和东西听起来很书呆子和愚蠢。但是,大多数编程问题的本质是,我们倾向于认为过于复杂。我是简单解决方案的忠实拥护者:没有出色的技巧,也没有超级优雅的技巧:仅使用最简单的解决方案即可。

如果您的团队很优秀,则可以尝试进行协作: Bespin 和当今的其他一些框架允许一起编辑一个文件。如果您真的喜欢它,并且看到您的同事在做魔术,那就太棒了;)。

3
wishi

尝试以较长的间隔检查您的电子邮件,并停止使用Twitter,facebook等在线社交工具。

使用此 墙纸

尝试使用开放式前视图。我通常在会议室空闲时使用它,它可以帮助我集中精力!

尝试与您周围的其他程序员一起工作。

3
Adnan Memon

诀窍不是更快地编写代码,而是更快地编写工作代码。

越早发现错误,修复它的工作就越少-这是影响程序员性能的主要因素。

这与您输入的速度或编译器的速度无关,而与您识别错误并随时修复它们的速度有关。

因此,我建议将结对编程作为一种更快的方法-确实可以避免错误。那就是测试驱动的开发。拥有两双眼睛使错误通过的难度增加了一倍以上(无论如何,我认为)。

其他技巧将是

  • 尽量减少代码测试的周转时间-这显然取决于您平台上的工具。如果您使用的是笨拙的工具在一个愚蠢的嵌入式系统上工作,那么周转时间可能会非常长(例如,如果您需要重建系统映像并重新启动设备),VM或模拟器可以为您提供帮助。
  • 如果不是成对编程,则偶尔会要求他人进行非正式的代码审查,但仅在您(并希望他们)流程中出现逻辑中断时进行。除了可以进行正式的代码审查之外,还可以执行此操作。
  • 保持简单-不要过度设计。您将不需要它。
3
MarkR

编写自己的生产力工具。他们最初可能会花一些时间来书写,但随着时间的流逝,回报可能会很大。

我一直使用的一些工具:

  • SQL格式化程序。
  • 自动SQL生成器:只需选择表。
  • 一个简单的任务优先级排序,因此我可以一次性查看所有任务。
  • 任务提醒会定期困扰我。
  • 带有分隔文本的应用程序,可让您将其像电子表格和文本一样对待。
  • PHP/Javascript/HTML页面格式化程序。与他人的代码一起工作时真是天赐之物。

我当时还写了很多其他的小工具,但这些工具仍然值得一试。

3
Jonathan Swift
  1. 在编程时,我真的很喜欢听音乐,因为我觉得它能让我放松,并且可以专注。

  2. 舒适的椅子。我从来不使用学校的计算机实验室编程,因为办公椅非常不舒服。

  3. 事先吃点东西,因为没有什么能像na饥饿一样杀死我的动力。

3
Matt Phillips

实践。这样一来,您便可以使用可以提高工作效率的生产力工具。

例如(在您未提及工作平台的情况下),. NET环境中有Resharper。

2
Randolph West

重新协商估算值和时间表。确保yo是说某件事将花费多长时间的人,并且不屈从于任何“好吧,我们需要尽快完成”或“如何达到伸展目标”的建议。

阅读Joel Spolsky关于估算的文章,该文章基本上主张将工作分解成小块,并对每一个进行估算。如果其中任何一个以天为单位计算,请进一步细分,直到以小时为单位估算出所有内容。

2
harriyott

您和您的老板/评估人员需要确定您实际需要编程多少时间。从预期的工作时间开始参加会议,电子邮件,文档,测试以及其他干扰,然后看看还剩下什么。

尝试监视您的时间以获取某些任务需要花费多长时间的基准。会有生产时间(对我来说很早,或者在我上班没有中断的任何时间)和生产时间。求平均值。

您可能确定给定的任务需要花费8个小时来编程,但是我怀疑您会在一天内完成该任务。

我还将尝试将自己与他人进行比较。企业文化可能要花很多时间。

2
JeffO

好吧,我认为我并不慢,但是我得到的工作往往会占用可用时间。

无论如何,我经常听到“ Gee,您做得这么快”,但这不是因为它是一个快速的编码器,而是因为它减少了编码。

我认为减少编码的主要方法是像DSL一样思考。如果您无法获得预处理器为您生成的代码,请编写代码生成器。不必花哨。目的是,如果给您一个单独的要求,则要最大限度地减少实现该要求所需的source代码差异的数量。理想情况下,该数字为1。如果您可以将其平均降低3-6左右,那就太好了。 (不仅仅是写的更少。这个数字越小,放入的错误数量越少,并且确实节省时间。)

为此,我建议您进行 性能调整 ,因为这样您将发现导致最大速度下降的编码实践,也导致膨胀的代码。特别是过多的数据结构和事件/通知式编程。仅这些因素就极大地影响了代码量。

如今,大量的代码量是由于用户界面引起的,特别是如果它是动态灵活的。我偶然发现了一种做这部分的方法,称为 动态对话框 ,它具有艰难的学习曲线,但是将UI代码缩小了大约一个数量级。

恐怕您将不得不为此找到自己的方式,但是很幸运。

2
Mike Dunlavey

保持个人生活井然有序。保证充足的睡眠,健康饮食和服用维生素-特别是如果您缺铁。如果您知道我的意思,请远离“饮料”。请记住,“葡萄酒和女性都可能使智者误入歧途。”

另外,创建代码模板和使用正则表达式模式工作的“代码生成器”。如果您发现自己要复制和粘贴,然后搜索并替换相似的类,则可以自动执行此过程。我是针对我的PHP)项目执行的,在其中可以创建CRUD应用程序,该应用程序基于我的数据表,并包含所有基本MVC组件-数据模型除了它们代表的数据表,因此可以在模板中设置它们并用于生成我的初始代码,从而节省了数小时的打字时间。

最后,告诉所有参与该项目的人,代码将花费比您想象的时间长1/4到1/2倍的时间。尽早为自己协商更多的呼吸空间。 “后期”是一个相对术语。当项目中途发生变化时,请大家提前知道已经增加了8个小时的工作时间。诸如“ FogBugz”中提供的跟踪系统之类的跟踪系统可能对您自己和管理人员有所帮助,可以根据以前的经验来预测完成某件事需要花费多长时间。我尝试采取一些策略,“现在还不晚-我用了适当的时间来完成此功能-所花的时间比我们预期的要长。”

另一个程序员可能会说:“好吧,我可以做得更快...”也许,也许不是,那不是值得争论或殴打自己的要点-总是会有一些“聪明”的家伙试图按下该按钮。如果您考虑一下,他会让您放慢脚步!但是,当它成为您的老板时,情况总是很糟糕。那时,我会考虑再找一份工作,因为在我的书中那种老板是个傲慢的混蛋。

2
JasonMichael

问:如何在较短的时间内完成更多工作?

答:每天上班,在Outlook便笺(便笺)中写下您想要完成的所有工作。开始处理项目的顺序。相信我,在一天结束时,您会感觉到您已经完成了计划中的事情,那真是太好了。

2
Cshah

配对程序-这具有各种好处:

  • 迫使您表达/阐明您的想法
  • 让您深入了解他人的工作方式,可以采用/尝试的许多想法
  • 直接从其他了解新技术的人那里学习新技术
  • 从其他人那里获得很少的生产力提示。您总是会看到某人使用了您以前不了解的菜单命令或一些有用的Unix命令。
2
ndp

写更少的代码。

驱逐未发明的东西,并充分利用现有的库/框架/工具包来提供常用的(通常是未定义的)功能,因此您只需要编写新内容即可。对于您需要自己编写的部分,请牢记可重复使用的内容,这样您就不必在下一个项目中再次编写它们。

即使不增加每天产生的工作代码的行数,也可以通过使每一行执行更多的工作来在更少的时间内完成更多的工作。

2
Dave Sherohman

我发现作品唯一清楚的一点就是不要分心。在某些环境中,这是不可能的。但是能够专注于特定任务并且仅专注于该任务可能会胜过其他任何事情。这些上下文切换确实是很大的时间消耗。

2
Joe

玩杂耍休息时

Juggling

2
Cornelius

Yerba Mate代替咖啡

Yerba Mate

2
Cornelius

始终是一个唯一的决定,即快速开发与质量,可读性,可扩展性。拖放控件和无限的代码隐藏文件(快速而肮脏)或模块化,模式和实践(长期投资)?

在我看来,每个人都必须在长期编码方面进行投资。随着时间的流逝,快速发展也将是高质量的。

但是,如果我不理解您的询问,而您正在寻求快速开发的实际方面的答案,例如工具,代码生成器和其他内容,我的观点是开始使用Resharper并尽可能多地了解您的= IDE :)

1
Aggelos Biboudis

使用框架!不要为硬编码而烦恼!

1
Koosha

首先,您不应该基于与最终用户的几次会议来设计系统。实际上,您不应该参与项目的需求阶段,而要由业务分析师和最终用户来制定。

第二阶段应该是您的技术要求,这是您将开始与业务分析师合作以提出所要求规范的解决方案的地方。

现在是重要的部分。确保您了解最终用户需求和功能需求,开始使用某些东西只是发现它没有达到用户期望,这是没有用的。如果您听不懂,请说出来。

现在,是时候点击编辑器了。但是我的方法是永远不要编写真实的代码,始终先编写绝对的注释堆栈,如果对您来说很容易(无论无所谓),只要它是清晰且易于阅读/理解的,就可以用伪代码进行处理。

完成注释后,您可以开始a)编写测试用例b)编写实现。

根据您的环境,最好从(a)开始,但最遗憾的是从(b)开始,然后尝试强制测试满足实现要求。坦白地说,如果您是一家大公司的一员,那么在开始做任何事情之前,都会有一个部门为您编写测试用例。

1
Brett Ryan

每个人都说“检查电子邮件”,但请考虑一下您花费时间编写高度技术性的电子邮件。我可以轻松地花一个小时写一封电子邮件。要解决此问题,我可以要么1)编写不那么多,要么2)推迟技术性工作(以及需要我阅读代码才能回答的问题),直到绝对必要为止。

1
Shin

在实际编写代码时, CodeRush 会有所帮助,尤其是当您掌握了其快捷方式时。另外它是免费的:D

1
GaiusSensei

我每周花一点时间寻找新的创造性方法来做可能与我目前正在从事的工作或不直接相关的事情。通常,我会找到一些我从未意识到的新技巧或工具,从而加快了我的工作流程。

1
fscmj

熟悉您的IDE。

如果您的IDE是Visual Studio,那么我强烈建议 Sara Ford的书

1
Jim G.
  • 学习设计模式。它们可以帮助您理解问题,使您成为更好的程序员->因为您已经准备好解决多个问题的方法,所以可以使您的编程速度更快
  • 提取程序中的重复部分。如果在编写的多个程序中都存在重复的逻辑,请考虑将其归纳并将其提取到某个类库中,然后可以在所编写的新应用程序上重用。 标准化事情:花一些时间来找出某些重复性任务的最佳完成方式。记录实现步骤。下次您将完全知道如何解决/应用它们。
  • 吻原理
  • 代码生成将很有用(一旦有可用的工具可用)。发电机最近开始流行。

注意:使事情变得更糟!!正如某些人提到的那样,只是破解某些东西,直到它们起作用为止,这会暂时使您更快。但是会出现错误,这些错误在某种程度上也取决于您编程的速度。如果我必须编写一些功能,而我会花很多钱在编写它上,有一个好的设计,可能已经过测试(使用单元测试)并且说我需要半天时间。但是假设是这样,并且您的功能正常运行,则无需再次触摸它。另一个只专注于快速实现其目标的程序员,(可能)会由于不愿进行测试而错过了一个很好的设计,因为他不会考虑(意识到)边界,例外情况。他需要2个小时(比方说)。错误会出现,他将不得不再次触摸代码,对其进行修复,甚至可能进行扩展(将花费数小时进行重新投资)。代码将很难维护,等等。简历:最后,他将花费大量的时间,挫败感会更高。

1
Juri

使用 符合人体工程学的优化键盘布局 。有些甚至通过非常易于访问的特殊字符针对程序员。

1
knittl

在家里工作。当我的工作期限很艰苦且需要完全专注于问题时,我告诉老板我在家工作。这使我可以最佳地设置环境,减少中断,并使我像激光束一样聚焦在问题上。

1
Pedro Estrada

您会获得更多的经验,并会记住很多API。

现在,我已经学会了更好的编码,因此在网络上搜索代码片段的日子大大缩短了。

哦,您可能还想尝试使用函数式编程概念和lamda来减少代码:)

1
Vince

对自己的工作感到兴奋是提高效率的好方法。确保它很有趣!

1
Jakob

我认为在纸上勾勒出您的想法,记住这些东西,是充实一些想法的好方法。作为程序员,无论是专业人士还是业余爱好者,我们都会花大量时间盯着屏幕,这是另一个可以发表您的想法的好方法。我发现,从头开始,草绘线条以连接想法,圈出事物,加下划线等,所有这些都增加了对想法的重视程度,并且比起尝试立即构建或构筑想法,它确实可以帮助您更快地整理出想法一些计算机辅助形式。

另一有用的方法是对小零件进行原型制作。昨晚听了TED音频播客的演讲,当时他正在讨论用意大利细面条棒和棉花糖建造小型建筑物的方法,显然这是一项相当广泛的研究,目的是测试小型团体的社会建设能力……无论如何,总是这样做的团体更好的是,除了那些了解加固和建筑结构的孩子是建筑师,他们还因为不断使用反馈来获得结果。我认为您也可以将其投入到一个编程思想中,即您发现做些小事情并获得结果不仅比构建一些大型结构然后花几天时间调试它更富有成效,而且更加有趣和有用。我过去确实有一些“有趣”的想法。

1
dscher

当我在办公室且需要保持专注时,我关闭了电子邮件客户端。没有什么比不停地诱惑“快速浏览”刚刚到达的任何消息对我的效率更快。我也一直在玩 番茄技术 来管理干扰并保持专注。

1
Tim Trout

尽可能使用代码生成器。有时甚至Microsoft Excel(或OpenOffice Calc)也被证明是功能强大的代码生成器工具。

0
Canavar

简而言之,白板->将可测试的需求分解为任务(我用 Team Foundation 来跟踪每个任务以及需要多长时间。)

使用测试来确保您已完成所需的工作,仅此而已。 (现在不用担心性能。)

每个需求完成后,从需求转到需求并进行测试。完成每个任务后,您应该对剩余时间有一个准确的估计。

完成所有要求后,返回并“抛光”它。

首先做腿部工作会迫使人们消除所有要求,从而通过第一次正确地做事情来节省时间。

如果做得正确,这应该允许更多时间花在堆栈溢出上:)

祝好运

0
Brad8118

这里有很多很棒的主意。为了帮助我进入“区域”,我使用了间隔为27分钟的计时器。我发现一旦进入工作模式,除蜂鸣器外,很容易就能很好地工作,并且轻松进行工作。到达那里很难。

0
Daver

我注意到最能影响我的速度的一件事是动力和乐趣。这似乎很模糊,但是当我有动力并做一些有趣的事情时,我会变得非常有效。另一方面,当我都不是时,我真的觉得我不得不将每一行代码都推出我自己。

找到您的甜蜜点,什么真正激发了您的兴趣,您真正喜欢做什么工作?您会影响您的计划,以便您执行此操作吗?对我而言,这是我解决问题和设计问题的时间,当我感到自己参与了该项目时。

几个月前,我们有一个小项目,由我们的小团队负责,这是一个非常重要且非常不现实的截止日期。但是,我们所有人都非常有动力,并且在做的过程中非常开心,并与一个满意的客户一起及时完成了任务。我之所以愿意这样做,是因为我们非常参与该项目,并且不得不为此提出创意。我还必须做我真正喜欢的部分。

但是最近我参与了一个项目,在这个项目中,我基本上是代码猴子,只是在做脑麻木和令人沮丧的任务,或者只是以最快的方式拥有快速修复的东西,而我知道这会在以后的某个时候再次出现并给我带来痛苦。在不久的将来,它的速度一直很慢。

那你的优点是什么?

0
Runeborg
  1. 知道您想做什么并对此感兴趣
  2. 花几个小时研究如何做的代码
  3. 复制并粘贴代码以达到最终结果
  4. 使用基本的GUI来完成工作,不要花时间让它看起来很漂亮
  5. 测试和调试
  6. 在漂亮的gui上工作
0
Matt S.

“及时性”与“快速”不同。如果那是问题,那么您的评估应该只说“慢”。因此,在走建议的道路之前,请确保您知道对您的期望。

它可能意味着任何东西;这甚至可能意味着您要等到同事离开后20分钟才能进入办公室,或者您的时间安排不佳。这可能与您的“编程速度”无关。

我可能大部分时间都花在设计和规划上。通过良好的分析和设计来计划任务会更加容易,然后您将给出更好的估计,相信这一点。而且,从良好的设计来看,编码变得更加简单和直接。它还使分割任务并将其分配给其他开发人员成为可能。

0
Clifford

我几乎用 [〜#〜] vim [〜#〜] 将C编码速度提高了三倍。

0
Liran Orevi

CodeRush!得到它!爱它!

0
Bobby Ortiz

选择快速编辑器,快速编译器,并以快速的执行时间编写软件。这样,您犯的错误可能是普通程序员的十倍,并且仍然会比其他程序员更好。这可能是Google应用程序如此受欢迎的原因之一。 Web开发中充斥着令人讨厌的错误,而在错误的平台上编写更多的软件则是一个难题。但是,在编辑代码和查看结果之间的响应时间是如此之快,以至于使那堆垃圾工作比扩展c ++程序要容易得多。 :)

0
AareP

与在IDE前面相比,花更多的时间将所有内容整理在一起。制定计划时,您已经完成了大部分工作。实施只是另外20%。如果由于平台特定的问题而在编写代码时遇到麻烦,请坚持执行计划,并继续实施和测试其余部分。最后,解决所有遗留的问题,一一解决-可能会有一些相关,而解决几个可能就足以弄清其余的问题。我通常使用变通办法来解决此类问题,如果我没有时间解决所有问题,通常在代码的特定位置添加“ // TO CHANGE”注释,然后重写对质量和性能影响最大的注释。他们在截止日期之前。

0
luvieere

建立自己的代码库

每次编写新功能时,请尝试使其尽可能通用,但不要过于通用。从短期来看,这会稍微慢一点,但是从长远来看,随着代码库的变大,由于许多业务应用程序具有相似的需求(并非总是如此),但是每个项目的完成程度却非常接近,因此每个新项目的完成速度都会更快。代码可以重用。

0
Darknight

更快并不意味着更好。如果您想成为一个更快更好的程序员。这一切都归结为平衡。你能做到多久?思维,耐心和计划总能带来回报。有时,发展世界中的“快速”可能会带来最糟糕的结果。

0
Ryuken

解构。将要构建的内容分解为可以逐步实现的较小功能。然后,只要您完成了所有较小的任务,并且已经过测试以确保它不会破坏任何内容,请进行部署并将其展示给Bes Power。

使用小型迭代通常可以帮助您更快更好地完成较大的项目,因为您可以随时获得反馈,而无需回溯和重做。但是,即使不是这样,您仍会显示出持续的进步,这具有扎实的心理好处,并可以恢复经理或客户的信心。

测试驱动的开发也对这种方法有很大帮助。乍一看,编写测试似乎首先会减慢速度-但是它会增加您可以避免的错误的时间,并且取决于编写方式,测试本身可能是可交付给您的力量,可以证明并在编写所有应用之前确认应用的行为。

0
SFEley

如果您使用C语言进行编程,则必须学习位技巧才能成为更快的程序员。另请阅读Topcoder.com上排名靠前的编码惯例。他们的代码非常小而有效。

0
avd

通过在设计和编码时放慢速度,变得更快程序员

  • 想想你在做什么。
  • 考虑设计的含义。
  • 第一次正确使用它(大力测试自己的代码)。

这可能会感觉更慢,但是您的吞吐量将比那些在4个小时内进行一次迭代然后需要进行6轮QA的代码骑师要快。代码通过。

0
mmc

回复:如何估算并坚持下去:

进行估算时,请记住 霍夫施塔特定律 以及这个玩笑:“一切都比它花费更长的时间”。对某物应该花费多长时间做出合理的猜测,然后在它从您的嘴里出来之前将其增加一倍或两倍。会有复杂性,挫折,分心,忘记的事情等等。相比于反之,更好的是欠承诺和超额交付。

坚持估计,尽最大努力有效地完成工作。当出现问题时,请尽早告知延迟。这使每个人都有时间调整自己的期望。如果您的解释合理,则可能会给您更多的时间或帮助,或者使您的注意力分散(例如吵闹的邻居)。

0
steamer25

以下做法是众所周知的,但由于时间紧迫而经常由于各种原因而被忽略,因此在此值得一提(实际上,这些是提前花费时间以避免花费的机制更多时间过后):

  • 测试驱动开发;它可以帮助您仅编写实际需要的代码量,并且可以帮助您避免在添加功能或重构时引入错误

  • comments,但仅在代码足够复杂才能保证它的地方

  • 重构简化您的代码经常

  • 使用像样的源代码控制软件(例如Git或Mercurial)-如果您的雇主使用其他工具,请在本地使用您自己的工具-

  • Commit代码经常更改:对于每个功能或重构,都执行一次提交,因为如果出现问题,还原对您来说会减少成本

  • 不要害怕branch; Git特别具有非常快速和“安全”的分支机制(例如,与Subversion相比)

0
Nick Toumpelis

我个人认为这全部与代码可重用性有关。除非每次都做完全自定义的事情,否则应该有一个可以使用的常用功能库。我有一个utils.php,其中有我在以前的项目中使用过的整个“垃圾场”功能。当我必须执行类似操作时,可以节省大量时间。

祝你好运,不要气disc。我认为我们有时都感到缓慢或“愚蠢”。我知道我有!

0
Code Monkey

使用静态分析工具。

它们可帮助您在编译时发现更多错误,否则您将不得不在运行时进行跟踪。

特别是在构建多线程应用程序时,它们是真正的帮助。

0
Oliver Weiler

这些都是很好的建议。我将添加自己的生产力技术,该技术不仅要知道如何以最少的代码来完成工作,而且要以最少的冗余代码来完成工作。

通常,这意味着数据结构越少越好。

要使代码具有最小的冗余度,就需要创造力和愿意以可能施加学习曲线的方式来做事。那就是生产力的代价。 这里是一个例子。

0
Mike Dunlavey