如何对抗启动效应

时间:2016-04-21 13:11:13

标签: debugging design-patterns

当我要求修复错误或在项目中引入功能时我没有开发我经常有这种感觉,从头开始会为我安全,痛苦和努力。 Altougth经常这显然是更多的工作,似乎我受到nih的巨大痛苦。

那么,你有什么方法可以解决这个问题并专注于项目,或者让你自己在修复错误或引入功能的同时将项目逐渐变成你喜欢的东西?

关于我的一些观点:

  • 我是一位相当优秀的程序员
  • 我认为自己是一名python程序员,这意味着我试着遵循Zen of python
  • 我不太喜欢大抽象(下面的例子中更多)
  • 显然有时我的代码存在问题。

为了谈谈我谈到的项目:

  • 最近大多数是基于php但可能是任何语言
  • 由从未真正编写大型项目或团队编码的人编码
  • 通常有很多类和伪抽象(下面更多)
  • 最有可能没有评论
  • 错误的命名变量,类和函数
  • 很多冗余,例如很多style="border:1px solid black" 或者每个htm文件中具有不同名称的相同javascript函数,或者将轮流相互调用的类
  • 巨大的切换语句就像几百行一样
  • 有时会建立不赞成使用的图书馆,或者只是为了提供非常小的功能集而建立大型图书馆。
  • 庞大的代码库,没有真正拆分不同文件中的代码
  • 奇怪的全局
  • 奇怪地方的死代码(如在switch语句中)

我如何解决它:

最近如果我必须修复一些东西,我会这样做,在找到发生了什么并被它惹恼之后,我会把很多#TODO放在那里并解决最初的问题。通常使用这种方法,我使用预定义的函数或类,按名称应该做一些完全不同的事情,使项目更加可怕。

3 个答案:

答案 0 :(得分:2)

  

那么你有什么方法可以解决这个问题并专注于项目,或者让你自己在修复错误或引入功能的同时将项目逐渐变成你喜欢的东西?

对我有用的是什么:

  1. 尝试重新编程一个中等大小的软件(可能是10000到20000行代码),然后最终得到的东西只比原来的稍微好一点,绝对不值得你付出的努力。
  2. 了解重构方法。您很快就会注意到,重构 - 如果做得对 - 不仅仅是单调的工作,而且可以像开始一个新项目一样有趣和具有挑战性。并且它通常更有效率。

答案 1 :(得分:1)

我认为这是一个非常好的问题。我们所有人都已经通过这个,每个人都认为其他人的代码都是不合标准的。

我尽力记住顾客。一方面,我的客户没有得到良好的架构或设计代码的良好服务,我可以俯冲并解决这个问题。但另一方面,如果它有效,他可能也不会为我付出很多钱来重新做一些已经有效的事情。

我可以“潜行”更好的东西吗?单元测试?小重构?有时很长很复杂的方法都是这样的,因为它们已经被调整了一段时间 - 如果我不小心的话,那里有bug修复我可能会破坏。

答案 2 :(得分:0)

拥有五年四年专业经验的开发人员开始“大踏步前进”。他或她正变得足够有能力看到项目的大局。你的自我评估可能是100%正确的,你向别人学习的愿望会让你与众不同。

记住这一点:编程很难,而且几乎总是在胁迫下完成。胁迫以多种形式表现出来:冷漠,新技术,无聊,紧迫的期限,个人问题,疲倦。

例如,我发现了我工作的首席程序员引起的问题。他是一个非常聪明的人,具备必要的技术技能。问题是:他用一个单词的单数形式规定了一个Web服务,但是以复数形式实现了这个调用。换句话说,spec:/ offload_file;实现:/ offload_files。

尽管文档中的一个字符错误超过20K字,但这是一个很大的问题。他的胁迫:他的妻子正准备分娩。

你已经达到了一定程度的技术水平,现在你必须学会​​做一些不同的事情。你必须弄清楚如何在团队中工作。

您将遇到拥有更多经验和更少技术技能且无需改进的人。你是如何与他们合作的?您将遇到几乎无法操作灯开关的利益相关者,他们会根据服务器的正确颜色演示您的最佳性能。你是如何与他们合作的?斯科特·亚当斯(迪尔伯特)发了一笔小小的财富,嘲笑那些与程序员打交道的人。

正如您所指出的,您需要学习如何平衡战术职责(增加功能)和战略改进(重新分解代码)。制定战略决策不能掉以轻心,因为您发现它可能对生产软件产生灾难性影响。

你已经爬上了知识之山,发现你还有许多东西需要学习。继续前进并理解。没有简单的答案。没有简单答案的事实使这个职业领域如此有利可图。