如何處理別人完全毀了一個項目?

[英]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。


注意!

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



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