如何处理别人完全毁了一个项目?

[英]How to deal with someone else completely ruining a project?


For the company I currently work for, I've written a quick prototype to add some stuff to an instant messenger. Because it had no public APIs, I had to work on a really low level stuff using both C and inline assembly. It's interfacing with an undocumented DLL, which is pretty picky about it's input, and although I've spent a great deal of disassembling it, there are still some concepts that I don't fully understand.

对于我目前工作的公司,我写了一个快速原型,为即时通讯添加一些东西。因为它没有公共API,所以我不得不使用C和内联汇编来处理非常低级的东西。它与一个未记录的DLL接口,这对它的输入非常挑剔,虽然我花了很多时间拆解它,但仍然有一些我不完全理解的概念。

Recently, a new version of the IM app was released, and changed a lot in that internal library (as was to be expected). Naturally I'd taken some precaution for changes like this, but they made one huge change that I hadn't anticipated. Fixing this prototype myself would probably take about a week, and would probably take a near complete rewrite. The problem is, I'm swamped. My contract runs for another month, and they are expecting me to finish two other small projects before that time, and I'm not sure I'll make that.

最近,IM应用程序的新版本发布了,并且在内部库中发生了很大变化(正如预期的那样)。当然,我对这样的变化采取了一些预防措施,但他们做了一个我没预料到的巨大变化。自己修复这个原型可能需要大约一个星期,并且可能需要几乎完全重写。问题是,我被淹没了。我的合同又运行了一个月,他们期待我在那之前完成另外两个小项目,我不确定我会做到这一点。

Naturally my boss wants to give it a try, but he's completely under qualified. He has no knowledge of C or ASM, has never actually disassembled anything, and only really has experience with C# and (claims to) SQL. He's done some C code in the past, but the main reason they employed me for this was basically because their low-level code crashed... a lot...

当然,我的老板想尝试一下,但他完全没有资格。他不了解C或ASM,从未真正拆解任何东西,只有C#和(声称)SQL的经验。他过去做了一些C代码,但他们雇用我的主要原因基本上是因为他们的低级代码崩溃了......很多......

How on earth should I deal with this? I've spent about an hour trying to explain the current prototype to him, but I have the feeling that he doesn't grasp any of it. To me it seems I have only three options, neither of which sound very appealing:

我该怎么处理这个呢?我花了大约一个小时试图向他解释当前的原型,但我觉得他没有抓住任何一个原型。对我来说,似乎我只有三个选项,这两个选项听起来都很吸引人:

  • Don't interfere at all, which will likely have him fail the project miserably, or deliver something that will be full of memory leaks (remember: this is something that runs in-process with the IM program, if it crashes, the IM app is going with it)
    Another downside to this would be that he'd probably be asking me a *lot* of questions, keeping me from my own work.
  • 根本不干涉,这可能会让他失败,或者提供一些内存泄漏的东西(请记住:这是与IM程序一起运行的东西,如果它崩溃了,IM应用程序这是另一个缺点,他可能会问我很多问题,让我不能做自己的工作。

  • Try to cram the project in my already cramped schedule: doesn't look very good for my stress levels
  • 尝试在我已经局促的时间表中填写项目:对我的压力水平看起来不太好

  • Hold his hand through it hoping he'll learn from it (will probably take longer than doing it myself)
  • 握住他的手,希望他能从中吸取教训(可能需要更长的时间,而不是自己做)

Basically: I'm currently the only one in the company that knows any of this. I don't have time to work on it myself, and I don't actually have time to educate someone else about this. Obviously I don't want to leave the company with a crippled product, but I'm also not very fond of doing all-nighters to save them from it... (I'm already making way more hours than mentioned in my contract, even though I'm paid on a monthly basis)

基本上:我现在是公司中唯一知道这一点的人。我自己没有时间研究它,我实际上没有时间教别人这个。显然我不想让公司留下残废的产品,但我也不是非常喜欢全力以赴地拯救他们......(我已经比合同中提到的更多时间了,即使我按月付款)

10 个解决方案

#1


Stop caring. I know it's hard cause essentially we end up with "babies" when we create or seriously fix code and can start to adopt a paternal attitude towards the state of that software.

停止关怀。我知道这很难,当我们创建或认真修改代码时,我们最终会得到“婴儿”,并且可以开始对该软件的状态采取父亲的态度。

However look at this child. This is a reverse-engineered bastard child that should never have been and requires and will continue to require a huge amount of maintenance due to it's nature (as an undocumented plug in).

不过看看这个孩子。这是一个反向工程的私生子,本来就不应该并且需要并且将继续需要大量的维护,因为它的性质(作为未记录的插件)。

The people who want this child to exist are not extending your time or even paying you by the hour so they do not seem to appreciate the difficulty of raising this kid effectively. In such a case you have to cut your paternal ties and stop caring as you are probably not even the legal guardian, just the carer.

想要这个孩子存在的人不会延长你的时间,甚至不按小时付钱,所以他们似乎并不理解有效抚养这个孩子的困难。在这种情况下,你必须削减你的父亲关系并停止照顾,因为你甚至可能不是法定监护人,只是照顾者。

I would suggest explaining your concerns, offering to do the work IF you get paid by the hour and with generous overtime rate and if that is not accepted then let them go ahead and mess it up themselves.

我建议解释你的担忧,提供工作,如果你按小时收到工资,加上慷慨的加班费,如果不接受,那就让他们继续前进,把它搞得一团糟。

#2


In a no-win situation, you should err on the side of self-interest.

在不赢的情况下,你应该在自身利益方面犯错误。

#3


Don't be bullied into unachievable deadlines.

不要被欺负到无法实现的最后期限。

You obviously have a good handle on what the problems are. Put them in an email to your boss. It would also be good to say what your preferred solution is. Let's assume for the moment, it's another 6 month contract where you do the work properly.

你显然可以很好地处理问题所在。把它们发给你老板的电子邮件。说出你喜欢的解决方案也很好。我们暂时假设,这是另一个6个月的合同,你可以正常工作。

At the moment, it sounds like you're being played. Either stand up to it, or run away as fast as possible. Otherwise, you'll leave the job with a horrid taste in your mouth.

此刻,听起来好像你正在玩。要么站得住,要么尽可能快地逃跑。否则,你会在口中留下可怕的味道。

Just my $0.02.

只需我0.02美元。

#4


human problems are so difficult.

人类的问题是如此困难。

be straight-forward. don't tell your boss that s/he's an incompetent boob of a coder, but do be up front about your concerns about hours and such. if the boss decides to do it, then realize that you can't control everything. sometimes other people need to be allowed to make their own mistakes and do it their way. help all you can, as graciously as possible, and be sure to police yourself to make sure it doesn't make those hours worse. if it does, call him/her on it.

直截了当。不要告诉你的老板,他/她是一个编程人员不称职的蠢货,但要预先考虑你对小时等问题的关注。如果老板决定这样做,那就意识到你无法控制一切。有时需要允许其他人犯错并按照自己的方式行事。尽可能慷慨地帮助你,并确保自己做出警告,确保它不会让那些时间变得更糟。如果确实如此,请打电话给他/她。

#5


I would reccommend that they don't install the upgrade to the IM if they want to continue using the "prototype".

我建议如果他们想继续使用“原型”,他们不会将升级安装到IM。

Then, I would appologize profusely for doing such an unproffessional and unsupportable hack to an existing application and offer to investigate how to implement that functionality in a simpler and more sustainable way (other IM clients with extendable architectures for example) - on your own time.

然后,我会粗暴地为现有应用程序进行这样一个不忠实且不受支持的黑客道歉,并提供调查如何以更简单和更可持续的方式实现该功能(例如,其他具有可扩展架构的IM客户端) - 在您自己的时间。

As a contract developer you should hold yourself to higher standards than if you are a regular employee, because everything you do is most definately going to need to be supported and maintained by someone else.

作为合同开发人员,您应该保持比您作为普通员工更高的标准,因为您所做的一切最明确地需要得到其他人的支持和维护。

#6


Forget about it and let your boss get on with it, and concentrate on the other projects more important to you right now. Try to distance yourself from what he's doing, explain to him you have to prioritise what you're doing elsewhere. Experience will help him to better find out ... than any help you can give him.

忘了它,让你的老板继续下去,专注于现在对你更重要的其他项目。试着让自己远离他正在做的事情,向他解释你必须优先考虑你在其他地方所做的事情。经验将帮助他更好地发现...比你能给他的任何帮助。

#7


Repeat after me:

在我之后重复:

The project is not my baby.

这个项目不是我的宝贝。

@Quarrelsome said the rest of what this post would be much better than I can.

@Quarrelsome说这篇文章的其余内容会比我更好。

#8


  1. Can you pawn off the two smaller projects on your boss to allow you to focus on the bigger one?
  2. 你可以撇开老板的两个小项目,让你专注于更大的项目吗?

  3. Can the bigger project be done, if some style and structure is .... lost?
  4. 如果一些风格和结构被丢失,那么更大的项目能否完成?

  5. Can the bigger project be done if you incorporate some quick hacks to speed up your progress?
  6. 如果你加入一些快速的黑客来加速你的进步,那么更大的项目能否完成?

Contracts are interesting. If I am an employee, then I work my alloted hours, and do the best I can without over exerting myself.

合同很有意思。如果我是一名员工,那么我就会花费我的工作时间,并且尽我所能,尽力而为。

If I am directly contracted, I promised X on this deadline, I undershot, I have to make it up.

如果我直接签约,我在这个截止日期答应了X,我低估了,我必须补偿。

Hope I help a little. Sorry your in such a bummer situation.

希望我帮助一点。对不起你这么糟糕的情况。

#9


Its all about learning how to manage your manager, setting expectations and controlling perceptions.

它的全部内容都是学习如何管理经理,设定期望和控制观念。

1) Make sure your boss knows exactly what it is: a horrible hack. Explain all the reasons why it is unmaintainable and the sort of problems associated with it going forward.

1)确保你的老板确切地知道它是什么:一个可怕的黑客。解释为什么它不可维护以及与之相关的问题。

2) Be honest with your boss about him maintaining it. Explain that all this requires a great deal of programming knowledge and one wrong move can cause the whole thing to be unstable and unusable. AND that you're concerned it will be a huge time-sink for both of you.

2)老实说你老板关于维护它。说明所有这些都需要大量的编程知识,而错误的举动可能导致整个事情变得不稳定和无法使用。并且你担心这对你们两个人来说都是一个巨大的时间。

3) In the worst case - he goes ahead and hacks on it - when he bugs you for help, make him choose between slipping the schedule of what you are currently working on and helping him with the Frankenstein. Say, "Yeah, I would be happy to help you, but it would push out what I am working on by xyz amount of time. Is that what you want?" Communicate that any schedule slippage was a result of him asking you to work on this other stuff.

3)在最糟糕的情况下 - 他继续进行攻击 - 当他向你寻求帮助时,让他选择在你正在进行的工作的时间表和帮助他与弗兰肯斯坦之间做出选择。说,“是的,我很乐意帮助你,但它会在xyz的时间内推出我所做的工作。这就是你想要的吗?”传达任何计划滑点是他要求你处理其他事情的结果。

#10


Your boss isn't an option, you know the reasons why, you wrote them down.

你的老板不是一个选择,你知道原因,你写下来了。

I would argue for not using the new version of the IM application, but shipping your system with the old version, on time, without doing extra work. The underlying infrastructure changes sound too massive. It's only a prototype, don't do more than is necessary. If the client wants to take the full implementation forward based upon the prototype, fine, give a reasonable quotation and indeed contact the IM application company itself and enquire about stable APIs for your needs.

我认为不使用新版本的IM应用程序,而是按时运送您的系统旧版本,而无需额外的工作。底层基础设施变化听起来太大了。它只是一个原型,做的不是必要的。如果客户想要根据原型进行全面实施,那就好,给出合理的报价并确实联系IM应用公司本身,并根据您的需求查询稳定的API。

智能推荐

注意!

本站翻译的文章,版权归属于本站,未经许可禁止转摘,转摘请注明本文地址:http://www.itdaan.com/blog/2009/01/07/720722be55033c95b0a070930a810e7f.html



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告