這不是在開玩笑,我不能忍受這是第四次發生,它在精神上影響著我。
這一行很重要,因為它表明您感到現在該改變了。它表明您將其識別為一種模式,並且希望該模式停止。這種願望可能是解決方案中最重要的部分。解決這類問題通常涉及改變您自己的思維方式。某人無法為您做到這一點,因此您對變更的渴望將是使變更發生的一件事。
在某些背景下,我一直都在“太擅長為我的代碼編碼工作”之前的情況,儘管從未達到您描述的程度。我可以使用C ++中的模板元編程來治愈癌症,但是與我一起工作的許多人都不熟悉面向對象設計的基礎知識。我編寫的代碼濫用了 SFINAE,並完全違反了C ++規範的措辭,當時我從事的許多項目仍在使用過時且錯誤的gcc版本。我的方法只是向他們展示這些工具的驚人之處以及它可以解決的所有問題。我喜歡向人們解釋一些編程技巧,他們對此非常滿意。
聽起來很熟悉嗎?
“是的,但是應該有一個很好的水平來理解[ Mik的代碼],因為組件可以智能地分離。“
請從基於風險的角度考慮此聲明。無論如何,老闆都需要繼續前進。如果您要去追求一些很棒的工作機會,您的老闆仍然必須確保代碼得到維護。您的同事剛才說的是,如果必須替換您,他們 會找到一個非常熟練的編碼器,因為任何不好的人都無法維護它。這是一個風險。如果他們找不到足夠好的開發商,或者負擔不起他們足夠的薪水,怎麼辦?
您可能已經製作了所謂的“好代碼”,但“好代碼”的定義非常取決於上下文。谷歌的“好的代碼”,以其先進的思維方式,對於在FAA工作的人來說可能是非常糟糕的代碼,他們主要關注可靠性而不是緊跟前沿技術。老闆對“好的代碼”的定義包括在各種情況下都可以維護它的能力,包括在沒有您的情況下。如果您的同事不習慣維護您的代碼,那麼您突然對公司負有責任,因為如果您決定去其他地方,則生產的產品是他們無法維護的。
來自從這個角度來看,可能有人爭辯說您是在強迫他們接受您對“好的代碼”的定義。本能地看似好事,但卻充滿困難,例如您可能從未想過的基於風險的思維方式。
我們有一個短語,“把馬車前。”與之相關的眾多含義之一就是將您最關心的內容(能夠使用您的先進技術)置於應該推動其前進的力量(您的同事對這些技術的理解)上。您已經以這種高級樣式編寫了代碼,然後鼓勵其他開發人員“趕上”這種樣式。這可能是有效的,但是如果您在“趕上”之前發生任何事情,則該公司突然面臨風險,因為沒有人可以維護該代碼。
將來如何避免這種情況?
解決此問題可能非常困難,因為它涉及到的解決問題的方式與通常情況下不一樣。與其首先以這種高級風格編寫代碼,然後教同事如何思考,不如將其改寫。教您的同事喜歡這種編碼風格,然後開始以這種風格編寫代碼。它可能看起來是倒退的,但更加穩定。從老闆的角度來看,團隊學習更好的編碼幾乎沒有風險。一旦他們編寫了更好的代碼,您想要開發的樣式就會突然冒著更少的風險。 。您的代碼不是這裡的唯一產品。您的其他產品正在幫助教其他開發人員,其價值很容易超過編寫“完美代碼”的價值。
當然,很難說出何時安全地編寫代碼您想要編寫的樣式。如果說起來容易,那麼您現在肯定已經知道了!您可以使用的一種強大技術是讓其他人使用高級編碼樣式,而不是自己使用。教別人繼承與構築之間的區別是一回事。足夠好地教會他們是完全不同的事情,以至於他們主張更改現有代碼庫以使其在使用時更加清晰。後一種情況確實讓您知道,他們不僅獲得了概念,而且真正接受了它。讓學生髮現一些東西,然後將他們指向可以發現的方向。也許其中之一發現了關於繼承的巧妙內容,您可以根據他們發現的內容將其指向“訪客”設計模式。不要只給他們訪客,而要給他們方向感,以便他們可以出去尋找訪客自己。
這是一個困難得多的方法,您當然希望在該方法和您當前的方法之間找到一個快樂的中介,但這可能會非常有益。更重要的是,它可以為公司提供價值而無風險。如果您正在為公司提供價值,而不會使公司面臨風險,那麼您將永遠下崗。而且在少數情況下您仍然會被解僱,管理層會為此提供理由(例如經濟低迷或公司方向轉變)。如果做得很好,您會發現管理層反而會開始塑造您的道路,就像塑造您的同事一樣,您會發現一種好奇的趨勢,使您學會了 just 他們最需要的技能 just 。