我应该如何描述学习他人代码的过程?(在开发票的情况下。)


16

编辑:贾斯汀·凯夫(Justin Cave)提出了一个很好的观点,即这种沟通应该在我的报价/估计中占上风。在这种情况下,我仍然很想知道人们使用哪种语言来描述“现有代码学习”活动。特别是对于以前从未与软件承包商打过交道的公司。 结束编辑

我有一份合同,为一家大公司升级一些内部软件。该公司已请求增加多个功能并修复了一些错误。这是我的第一份自由职业风格的工作。

首先,我需要熟悉该应用程序的工作方式-就像我是一个用户一样学习它。

接下来,我必须学习该软件的工作方式。我从广义的概念开始,然后在研究每个错误修复和功能之前将其范围缩小到必要的细节。

至少在项目开始时,我花了更多的时间来学习现有的代码,而不是编写附加功能。

如何描述学习发票上现有代码的过程?(公司的这一部分通常是在公司内部做事,因此与我这样的软件承包商打交道的经验不足,我担心他们可能不了解学习别人代码的开销)。我不想只是将学习时间花在实际的功能升级上,因为在某些情况下,这会使“简单任务”看起来花了我太多时间。我想将发票分解为相关步骤,并告知我要在能够添加自己的代码之前承担学习其他人代码的大量开销。

记帐工作时,有没有描述这种活动的标准方法?


好问题!它几乎就像重构,但不是,因为没有隐含的编辑。
ZJR 2012年

2
如果期望/要求您提供详细的细分,那么鉴于您具有许多功能和修复,并且都需要对代码库有不同程度的理解才能继续进行,因此,我将分摊对每个代码库的理解成本任务与完成任务所花费的时间成比例。
Mark Booth

Answers:


4

我可以开具发票,例如“查看现有功能”和/或“查看现有代码”。根据新功能的复杂性,我将添加一个“设计xxx”任务,其中包括我花时间确定将集成点集成到现有代码中的时间。

我认为这是一个好主意,应向客户明确说,加快新顾问的工作会产生一些开销,并且,如果他们对结果感到满意,继续与同一名顾问合作可能会节省他们钱。


我在发票上包含了诸如“了解现有代码”之类的任务,没有任何问题。
tcrosley 2012年

13

问题诊断。

这是一个熟悉的术语,如果您修好汽车或去看医生,诊断是找出问题所在的常用术语。这也很准确,您必须深入研究所有事物之间的联系以找出不起作用的地方。这确实类似于在没有手册的情况下研究引擎,该公司之前没有查看其他引擎就去制造了引擎(因此很可能是独一无二的)。

冗长或措辞古怪的订单项会收到您实际上不想要的更多问题。“问题诊断”是或多或少普遍理解的概念。


谢谢你 是的,我认为它应该清晰且预先显示,而不是被缠绕的字符串半隐藏。
MattyG'3

6

给客户的发票上的任何内容都不会对客户感到惊讶。鉴于此,我希望您已经对客户设定了一个期望,即从用户角度和开发人员角度,最初的大部分时间都将花费在熟悉应用程序上。而且您对前几个功能的估计希望可以指定它们花了大量的时间来熟悉代码。

如果您已经与客户设定了期望,那么大部分时间都将花费在初始发票上,以使自己熟悉该应用程序,那么在发票上如何列出它就没有多大关系。提供估算值和设定期望值时,请使用您使用的任何语言。如果您现在只想传达此信息,那么您会遇到问题。


感谢贾斯汀,这里的要点。在工作报价阶段,您将使用哪种语言?
MattyG 2012年

3

以自由职业者的身份,我一般可以将其称为“知识同化”。并且,这将被包括在最初提供给客户的任何估计中。

这可能对您没有帮助,但是为了将来参考,我建议您将来将此作为一项活跃的任务。例如,向客户开具发票,告知您所花的时间,并在未注释的代码中添加注释,在未测试的代码中添加单元测试,等等。这些示例在增加对代码库的理解的同时,至少增加了一点价值。

即使在记录时阅读与阅读之间没有太大区别,您的客户对这些更“主动”的任务的心理偏好仍可能很小。而且,实际上,通过记录别人的代码,您可能会比单纯阅读它们学到更多。(如果针对他们的代码编写测试,肯定会是这种情况)。

如果这样做,您可以有一个发票行项目,上面写着“知识同化和旧版代码测试/文档”之类的内容。

编辑:在您描述的情况下,老实说,我很可能会吃掉这项活动的费用。我无法与您谈谈财务状况,也不是要假设,但是当您开始使用时,我会花更多的时间来准备好客户的推荐书和令客户满意的产品。如果这意味着在早期就有效降低利率,则可能是一项不错的投资。从长远来看,要花一些可计费的时间,对于认为满意的客户来说,付出的代价可能很小。


谢谢埃里克。有关代码注释的要点;存在的数量为零,所以我一直在这样做。是的,我同意,我本人已经吃掉了大约一半的“知识同化”时间,并且只为剩下的一半付费。
MattyG'3

2

修复错误:根本原因分析。

新功能:分析,设计,集成和测试。

引入新的错误:作业安全。:)


对于根本原因分析,为+1;对于其余答案,则为-1。
Mark Booth 2012年

1

如果客户喜欢了解事物的运作方式,并以梦幻般的眼神倾听我的声音,那么我会直截了当Codebase Familiarization。我已经向他解释了他给我带来的痛苦,以及为我提供进一步升级的好处。

与其他类型的客户...(同样的待遇,但他显然没有听我说一个字)我会选择以下方面的东西:

  • Planning Phase
  • Intervention Planning

    (实际上,我会用这个,但我会用意大利语写出来,听起来会更好)

  • 那也许吧 Solution Planning

我喜欢的Diagnosis部分Problem Diagnosis建议anon,但Problem听起来不对。它可能会受到温和,有偏见,无知和肤浅的批评……可能会留下不良的味道。

您知道,每个人都想向外部顾问投掷飞镖,而他们确实如此。(...就像他在与他们交谈时还不足以理解问题的根源,并且不得不开具他的无知之发票,否则上帝知道什么)


1

我的技工给我发了一张账单“换机油,加火花塞,检查滤清器,轮胎旋转。修理发动机嘎嘎声,路试……。

零件(定做),

人工x @ $ y / hour = z)

他不分解劳动,你也不应该。计费总计小时数,并描述您的工作。

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.