Statistics 程序员能熟悉多少代码?

Statistics 程序员能熟悉多少代码?,statistics,Statistics,有这方面的统计数字吗?我意识到每个人的情况一定不同,但似乎应该有一个共同海损 我问的原因是,我签约的公司有多个软件产品,总共约75000行代码——当他们问我一个关于某个特定部分的问题时,他们似乎感到失望和震惊,而我并不立即知道答案(我是他们唯一的程序员,并且不是大多数系统的作者)他们认为我应该凭记忆知道一切。所以我想用一个统计数据来告诉他们,一个普通的程序员不可能一次就想到所有这些。还是我应该?你应该记住在哪里找到需要的东西,而不是记住它本身 您还应该足够熟悉代码结构和体系结构,以便根据知识猜测

有这方面的统计数字吗?我意识到每个人的情况一定不同,但似乎应该有一个共同海损


我问的原因是,我签约的公司有多个软件产品,总共约75000行代码——当他们问我一个关于某个特定部分的问题时,他们似乎感到失望和震惊,而我并不立即知道答案(我是他们唯一的程序员,并且不是大多数系统的作者)他们认为我应该凭记忆知道一切。所以我想用一个统计数据来告诉他们,一个普通的程序员不可能一次就想到所有这些。还是我应该?

你应该记住在哪里找到需要的东西,而不是记住它本身

您还应该足够熟悉代码结构和体系结构,以便根据知识猜测问题可能起源于何处,以及可能在何处找到您知道存在的东西,但不确定确切位置

你的大脑像缓存一样工作。你最近使用的东西保存在那里,更多的旧条目被删除。但是,永远不会有足够的内存一次记住所有代码。因为你会想记住所有的API函数,然后是所有的规范,然后是其他的东西。这一切都是不可行的


你不记得所有的代码,这让你感到惊讶,这可能是那些程序员如何做事的错误观念的又一个例子。忽略它们。

即使您已经编写了所有代码,也可能会忘记部分代码。但一旦你回顾了它,你就能回忆起它


我认为程序员在很长一段时间后忘记部分代码是很自然的。

这不仅取决于你的记忆技能,而且在很大程度上取决于代码。显然,干净、惯用的代码比写得不好、不一致的乱七八糟的代码更容易记忆。
可能是因为干净的代码可以分解成更大的“抽象标记”

询问他们希望你如何打发时间:调查大量你没有编写的代码,或者编写内部文档,或者其他让你忙个不停的事情。这不是一个有趣的问题。如果他们想对新问题做出更快的反应,就需要投资于研究


我不认为有一个有意义的答案,以LOC衡量。作为一名经理,我想知道的是,在你的情况下,有人能在合理的时间内回答一个问题——除非我知道你在某件事情的中间,我不希望“合理的时间”是“瞬间的”。

您应该能够了解系统中的所有组件及其交互方式,以便在出现问题时可以隔离一个或两个可能的组件并深入了解


我发现画一些图表并将它们放在手边很有帮助,这样我就可以用它们与我的老板\客户交流,并唤起我的记忆。

这个问题确实很有趣,但我怀疑是否有足够的答案。以下是我从一开始就看到的唯一明显的因素:

  • 总体设计质量。即使您是设计良好代码的新手,也可以非常快速地确定应该在哪里寻找答案
  • 项目文档质量。对于缺乏文档的项目,即使是从一开始就在项目中的开发人员也不能对某些部分说任何话
  • 实施质量。好啊您拥有良好的通用体系结构,良好的接口文档,但即使是一个非常糟糕的程序员也可能破坏所有这些。这是因为许多公司对代码审查非常严格,我认为这是防止这种情况的唯一技术
  • 程序员经验。当你继续前进时,你会看到“已知”代码“砖块”的数量在软件方面,对于您来说,经验是非常有帮助的,因此承包商通常是非常有经验的专家,熟悉各种方法,这使得承包商的平均移动速度比全职程序员快得多。全职程序员非常出色,但只在一个项目环境中工作了10年
  • 一般人的智慧。我认为这确实没有其他因素那么重要,但它确实很重要

。。。但常见的问题是,公司通常会为一些现有的软件改进雇佣承包商,他们只是认为这只是挂在墙上的一张照片。你应该进行一些谈判,迫使他们理解,工作的一部分是理解为了满足他们的要求真正应该做些什么。这种“学习”需要资源,也是工作本身的一部分。但我认为这对于StackOverflow来说有点离题(尽管我投了赞成票)。这更适合创业公司讨论吗?

问问他们是否能记住75000行代码这可能是可以回答的,但我在现有答案中看不到任何数据迹象,因此我认为这不是本地定义下的真正问题,本地定义要求有答案。