題:
如果我因降低代碼質量而按時升職,我應該在簡歷上怎麼說?
hackydude
2020-04-01 15:21:15 UTC
view on stackexchange narkive permalink

我有一份為期12個月的合同(我住在一個新開發人員不常遇到的國家),直到幾週前,當公司的管理人員向我提出要約並加薪成為他們的永久僱員時。我想讓自己的簡歷保持最新(尤其是給定的COVID),所以我在Google周圍搜索有關在簡歷中列出它的信息。

我發現的建議是,我通常應該列出促使錄用的成就。很公平。

問題是,成就總是在緊迫的客戶期限內交付,並且坦率地說,我是通過確定工程在目標案例(管理層同意的情況下)中不如出色來實現的。

我是一個由6個開發人員組成的團隊的初級開發人員。但是,當我說我將交付這些東西並使他們了解到達那裡的相對權衡時,我迅速成為開發人員最信任的交付者之一。在我承認的短暫時間內,我一直能夠發貨,當我說可以發貨時。

我曾經有過幾次這樣的情況,但這是我剛被提供給永久性工作之前所做的一次。我們的產品之一是批處理API,單個客戶端每天調用一次。除了通過電子郵件發送失敗的CSV記錄外,它不需要返回任何內容。他們希望添加新功能,並且銷售人員已根據合同約定在月底之前為他們提供此功能。由於各種原因,該功能請求直到一個月的最後一周的星期一才降給我們。

高級開發人員告訴經理,開發無法正確完成,並告訴客戶無法完成。在衝刺計劃會議上,我並不反對高級開發人員,但是很明顯,我不同意高級人員。就像,但並非不同意,但存在某些折衷的選擇。其他開發人員也相當被動,因此也沒有其他人與他矛盾。經理對此不滿意,因為客戶已經對我們承諾交付時未交付的產品感到憤怒。會議結束後,經理叫我到他的辦公室,問我是否有其他選擇。我告訴他,我可以做一些工作,但是由於我沒有專門的SQL技能,所以它可能會使API的處理時間增加一倍(這將增加4分鐘)。經理同意了,顯然客戶甚至沒有註意到。

我不確定錯過最後期限會帶來什麼後果,但是後果如此嚴重,以至於我們1000人的公司的首席執行官向我發送了一封感謝信,以幫助他們完成任務。

另一個案例沒有引起足夠的重視,但是我們需要在數據庫上運行一個過程。正確的方法是在我們使用的巨型Java系統中編寫適當的批處理流程,通過所有常規的質量檢查流程發送該批處理流程,並在兩週後將其彈出。我為經理提供了一個Python腳本,該腳本需要手動運行,並且效率極低(必須在一夜之間運行),但是如果每月觸發一次,則可以阻止該問題,直到永久修復。這是生產問題,因此他同意這是權宜之計。基本上,這只是一種便宜的for循環,用於檢查行中某種類型的錯誤數據並對其進行重新格式化。

有沒有一種方法可以在簡歷中列出這些類型的內容,而不會讓我看起來像是一個破壞高級開發人員的黑客程序員?我承認我的解決方案在技術上並不完善,但對於當時的業務需求而言卻是合理的,並且在大多數情況下,低效率的折衷在很大程度上無關緊要。

評論不作進一步討論;此對話已[轉移為聊天](https://chat.stackexchange.com/rooms/106228/discussion-on-question-by-hackydude-what-should-i-say-on-my-resume-if-我會舞會)。
對於OP-我強烈建議您刪除可用於確定或猜測您的身份的信息。您不希望您的雇主閱讀本文並跳入結論。例如刪除諸如“通過電子郵件發送的失敗條目的CSV”,“為管理者提供Python腳本”之類的內容。看起來CSV段落的意思實際上是說工作很容易並且延遲了接收工作請求。您必須使用CSV,TSV或管道分隔文件是否重要?如果我是你的老闆,讀這篇,我很容易弄清楚這是誰。
十三 答案:
FooTheBar
2020-04-01 15:36:47 UTC
view on stackexchange narkive permalink

您發現了幾種有效的方法(效率不高),無需過度設計即可解決問題,並且“做起來總比完美好”

找到一個足夠好的解決方案是工程師的一項重要能力否則您將花費大量時間來優化一些不值得優化的內容。如果不經常使用某些東西,通常就不值得對其進行優化。有一個不錯的 XKCD-Comic,其中帶有一個表格,該表格可以告訴您應該花多少時間投資某些東西。

解決方案僅在(或可以)使用時才有價值,因此,通過黑客攻擊,客戶可以繼續工作,直到找到解決方案為止。

沒有理由告訴任何人您不同意主管的情況。只需選擇“能夠在時間壓力下產生有效的解決方案”之類的方法。

我承認我的解決方案在技術上並不完善,但對於當時的業務需求而言是合理的,並且在大多數情況下,低效率的折衷在很大程度上是無關緊要的。

您有一項工作:“找到在解決該工作的期限內運行的解決方案”。而這正是您所做的。

就是這個平衡權衡以創建“足夠好”的解決方案來解決給定的問題是工程師可以擁有的最重要技能。這不是工作的副作用,而是工作。
好吧,是的,第一部分我也認為這部分。另一方面,OP可能會使他自己,他的團隊和他的公司為將來的生活變得艱難。管理通常是最後一次承認技術債務的未來成本的公司,這就是為什麼它經常會落在主要開發人員身上以抵制這種“明天完成”的事情。加上定期進行這樣的特技可以使管理層期望,做這種特技一切都很好,只要它們是例外。因為在將來您半心半意地完成一些功能時,它們會花費您成本。
但是,如果要確定自己的立場,那將是一句爭論。確實,這是根據需求進行交付的一項重要技能,但是隨之而來的知識是,何時僅需使用快速修復程序,以及何時推遲並堅持執行以“適當地”完成任務。
@FrankHopkins我當時認為這是暫時的,直到可以解決更高效的問題為止,因此他提到了權宜之計
@Amon我同意評估該技能是好是壞的應用,在某種程度上取決於實際環境等。現在似乎已經發生了幾次,因此我看到了一種很可能導致失敗的模式。即使這不適用於OP,一個平衡的答案也可能指出該風險。正如我已經看到的那樣,有人經常要求快速而又骯髒的解決方案,理由是這樣做……^^這是開發人員角色的重要組成部分,以確保某些質量標準,就像橋樑建造者需要確保他們的橋樑是不能持續使用僅6個月
@FrankHopkins這種模式稱為“工作”。這就是我們所做的。我們從來沒有時間在第一時間完美地完成所有工作。我們總是妥協。不可能在第一時間就使一切都完美,嘗試的項目通常會被放棄。您在這裡最多可以說:“如果平均而言,他的妥協是明智的;如果沒有,那就不好了;但是,*我們對這是哪一個*不了解*,除了管理層對他的滿意感到滿意之外性能。”我承認這不是一個令人鼓舞的信號,但是管理並不是可靠的錯誤。
而且很顯然,如果您提出了一個既好又好又快的適當解決方案,那真棒,但似乎並不適合這個問題。
[XKCD](https://xkcd.com/2030/)?
為了減少技術債務,必須要有技術債務。
請記住,此答案中的漫畫只是說明您花費的時間。您工作的公司已經購買了您的時間/工作,因此,即使他們希望通過解決方案來節省時間,他們也有權使用您的時間。
親愛的上帝,這是一個可怕的答案。OP不僅以“最糟糕的方式”實施了這些解決方案,而且還違背了其開發團隊的既定流程,因此既不服從又破壞了對該團隊的信任。最重要的是,通過提供上述解決方案,他們破壞了業務對該團隊的信任。然後,他們用有效的解決方案來獎勵企業未能進行計劃,這意味著企業將期望開發團隊向前邁進。OP不是我願意與之合作的開發人員。
是我還是xkcd圖表很難理解?x軸是我們執行任務的頻率;得到它了。y是我們節省了多少時間;我假設5年後?但是單元格中的數據代表什麼?是用於優化的時間,還是完成未優化任務所需的時間?這些選項都沒有任何意義。澄清將不勝感激:)
@NoelWidmer:右上角:如果您一年做某件事,並且花費1秒(y軸),那麼您可以花費5秒鐘對其進行優化(進入單元格),以便在5年內獲得收益。
image
2020-04-02 11:51:55 UTC
view on stackexchange narkive permalink

我感覺只有管理層在這裡給出答案,因為除了堅持不合理的期限外別無他法。

這裡還有另外一種觀點。當管理層偷工減料而忽視高級開發人員的意見時,您不應低估您在開發團隊中引發的社會干擾。有一句話大致如下:

只要有人不斷滅火,管理層就不會停止比賽。

如果您一次/兩次走下坡路是一回事,因為您被迫這樣做,那是一回事,而如果它正在成為規範,那是完全不同的一回事。從您的描述看來,在我看來,管理層對使用您偷工減料的做法已經相當滿意。您應該認真考慮向管理人員和高級開發人員提出此問題,以保持健康的工作環境。公司是開發人員和管理層之間的平衡,而不僅僅是自上而下的結構。為何存在“否”是有原因的,您應該練習使用它。

但是,這仍然比您管理的問題更多。因此,沒有理由在簡歷中以某種方式提及這一點。所以我會同意:

能夠滿足截止日期

motosubatsu
2020-04-01 15:39:36 UTC
view on stackexchange narkive permalink

俗話說“完美是善的敵人”-滿足業務需求而做出技術妥協幾乎是必要的。優秀的開發人員/程序員/工程師是可以確定可以達成的可接受折衷方案的人。

在您的API示例中,客戶顯然更願意接受正常工作並按時交付的產品處理延遲4分鐘。

理想情況下,在做出這些妥協時,您應該尋求最大程度地減少技術負擔-但這只是經驗的一部分,並且知道您可以在哪裡節省時間以及何時需要確保在“正確”的地方完成某些工作為了從長遠來看可以節省更多時間。會破壞高級開發人員嗎?

當您的簡歷達到最高水平時,您無需深入了解解決方案的細節-您可以簡單地說,您在按時完成交貨方面擁有良好的記錄敏感項目,並提及示例,但不提供實際實現的細節。

我不得不用谷歌搜索你喜歡的措辭,它的拼寫是[de rigueur](https://en.wiktionary.org/wiki/de_rigueur)
另外,最好是承擔大量技術債務以在截止日期前完成任務,或者將一些東西拿出來,然後在時間緊迫和清理工作後再返回。這就是為什麼它被稱為*債務*的原因,可以藉用,只是在清算之前要小心您償還的利息,避免破產。
不喜歡這個答案(即使結論是正確的)。客戶可能願意接受4分鐘的延遲,但是公司可能不喜歡稍後清理此垃圾。OP的同行當然不會。
這句話的問題是,無論您是倡導完美還是主張“足夠好”,這都是事實。等於說:“這些詞表示不同的事物,這些事物產生不同的結果。”
Torsten Link
2020-04-01 15:57:54 UTC
view on stackexchange narkive permalink

您所做的不是“黑客”,而是“尋找解決方案”。

我從事開發人員和顧問已有20年了,而這種​​技能正是雇主所追求的:不要將其遺忘在簡歷中,但要特別強調:即使這意味著走“不尋常的”道路,您也要嘗試找到解決方案。

有人說愛因斯坦有一個很好的報價準確地描述了您的情況:

每個人都知道這是不可能的,直到

我與很多開發人員一起工作,並且我知道其中的每個方面:

我與在stackoverflow上排名前1%的JavaScript專家之一的開發人員。他是個天才,我真的很佩服他編寫的每一行代碼。但是很多時候他沒有完成他的項目:當他對代碼的美感不滿意時,他寧願不完成某些事情也不願完成它。

我與效率極高的開發人員一起工作,但是他們採取了許多捷徑,使解決方案幾乎難以維護(硬編碼路徑,幻數等)。

相對於“美麗”,我總是更喜歡“完成”,最終我的客戶也這樣做:他們寧願在截止日期到來時擁有“某物”,而不是“什麼都沒有,但會變得更美麗”。時間X”

只有一件事:解決方法/快捷方式/“黑客”需要易於理解,記錄和維護,因此沒有像您這樣的解決方案

這很有趣,因為在面試問題中,我無數次被問到我是否願意遲交一個完美的項目,還是想按時完成一個不太完美的項目。我總是回答前者,但現在不確定。在考慮客戶的業務需求時。
“入侵” _is_“查找解決方案”。
Dave3of5
2020-04-01 20:40:06 UTC
view on stackexchange narkive permalink

聽起來像是普通科技欠我的債務。年長者可能年齡更大,疲憊不堪,不想為已經負擔過重的項目增加更多的債務(有點像我,實際上我會成為對此事的支持者)。也許他們只是想保護球隊。讓我們直接看一下您的問題:

有沒有辦法在我的簡歷中列出這些類型的內容,而不會讓我看起來像是一個破壞高級開發人員的黑客程序員?

也許我在這裡很天真,但是您不應該在簡歷中列出這些類型的內容。只是整體成就,如果這對於這家公司而言是正常的,那將是您“在緊迫的時限內工作以向客戶提供解決方案”,而不是有關如何在幾天之內提升一兩個存儲過程來完成某些工作的詳細信息為客戶服務。如果我讀了一份履歷表,說你能在很短的時間內交付,那末我就明白了。np說。使用SQL和其他技術的開發人員。為什麼甚至需要在您的簡歷中顯示該信息。

當然,如果您將來不想在這種情況下工作,則應考慮將其關閉,)
StackOverthrow
2020-04-02 00:29:54 UTC
view on stackexchange narkive permalink

您描述的是技術債務,技術債務並不總是壞事。債務的類比延伸到了公司承擔金融債務的充分正當理由。關鍵是它是有意的,並且有一個切實可行的計劃來付清它。馬丁·福勒(Martin Fowler)對此寫了很多篇文章,特別是他所謂的技術債務象限

enter image description here

就像您對技術債務做出了謹慎的決定一樣。認識到技術債務的審慎性並知道如何管理它是非常有價值的技能。

但是,技術債務往往會不斷積累,直到被迫重寫(非常長且昂貴)。
@PeterMortensen這是您必須做出謹慎決定的地方。如果您現在發貨,請從客戶那裡獲得現金,然後您必須支付技術債務。如果您現在不發貨,就無法從客戶那裡得到現金,您可能會破產並且永遠無法完成產品。
@PeterMortensen開發人員需要將債務狀態傳達給管理層。如果開發商承認債務,而經理卻不承認,則對其他任務進行估算,以包括償還債務的時間,和/或開始尋找更有價值的雇主。
@PeterMortensen不,技術債務會在您決定讓其累積時累積_(而不是在更改代碼時縮小)。由開發人員選擇是否提供估計來增加或減少技術債務(儘管管理層可能迫使他們以某種方式增加債務)。
Karl Bielefeldt
2020-04-03 19:13:16 UTC
view on stackexchange narkive permalink

我得說,我不想僱用你,這不是因為你在取捨。這是工作的重要組成部分,並且很難掌握。這是因為您在沒有其他團隊經驗的情況下進行了盲目權衡。

探索潛在設計並不能“與”高級開發人員“矛盾”。對話本來應該是這樣的:

您:如果我們執行X會怎樣?

高級開發人員:這可能會使處理時間加倍。我不認為客戶會對此感到滿意。我會跟他們確認一下。

其他初級:Bob對SQL有很多了解。如果我們可以請他幫忙,我敢打賭他可以節省很多時間。

高級開發人員:但是我仍然擔心極端情況Y。需要一些時間才能對其進行正確測試。如果我們弄錯了,那將真令人尷尬。

PM:我同意。如果您進行測試,並且OP像Bob所說的那樣與Bob一起修改了API,那麼可以完成嗎?

高級開發人員:我認為在截止日期之前是這樣,但我想回去並清理下一個版本。否則,每當客戶這樣做時,我們都會冒Y維護麻煩的風險。

PM:好的。

此外,這些 do 都會出現面試面試官看到諸如“公認的權衡取捨,以便在緊迫的期限內交付價值”之類的東西,並要求舉一個例子,然後他跟進,詢問高級開發人員會遇到的相同問題。

我同意高級開發人員的參與是非常可取的,但是隨後,我也希望*他們*找到並考慮允許hackydude及時交付的快捷方式。以我的經驗,高級開發人員在思維上一直沉迷於他們的做事方式,這是唯一的“正確”方式,以至於他們將“醜陋”與“不可能”混為一談。
是的,這個!我特別喜歡高級開發人員對hacky解決方案進行操作後清理,以提高可維護性。
技術債務沒有錯。沒有償還計劃的魯technical技術債務是產品崩潰的原因。就像錢。拿抵押還不錯。但是,拒絕償還銀行將最終再次咬你。
Josiah
2020-04-02 12:31:06 UTC
view on stackexchange narkive permalink

我將留下一個問題:“您的簡歷適合這個故事嗎?”一側。也許簡歷沒有足夠的空間來表達這些細節,但可以說這是面試中可能會遇到的事情,並且您正在考慮如何以最佳的方式呈現它。無論如何,即使沒有人再談論它,也值得思考對您自己的專業發展的影響。現在,這是我建議觀察到的一個相關問題,沒有人提到過:

您還有工作。

您重新研究如何最好地呈現故事,同時也有能力改變故事。

因此,您做出了判斷並冒險。因此,您可以按時完成全部可觀察的功能,滿足客戶需求,並打動您的經理。因此,您還提供了一個解決方案,其執行成本高於所需的執行成本,有可能損害代碼庫的設計,並使團隊領導感到尷尬。這是一個合理的判斷。其他人已經解釋瞭如何提出這一點:您將團隊內部的衝突完全排除在故事之外,您明確說明了您認可的解決方案中的技術問題以及對業務現實的認識,並解釋了自己做了一個呼叫。

但是,如果您能講一個更好的故事,那將包括承擔和清理債務。由於截止日期迫在眉睫,可能需要花一些時間進行審查,也許是為了更好地封裝代碼並添加一些關鍵的單元測試。這可能意味著要節省額外的四分鐘中的兩分鐘,也許需要諮詢您當地的SQL專家。其中包括尋找與團隊其他成員慷慨分享信譽的方法。

如果您不希望以快速行動並打破常規的人的聲譽,請評估您的決策(包括艱難但非常合理的決策)造成的技術,業務和人際交往的混亂,並負責清理這些混亂。

您仍然有工作。

Joe Strazzere
2020-04-02 01:21:45 UTC
view on stackexchange narkive permalink

問題是,這項成就總是在緊迫的客戶最後期限上實現的,坦率地說,我是通過確定工程在目標情況下(管理層同意的)可能不及一流來實現的。

p>我不確定錯過最後期限會帶來什麼後果,但後果如此嚴重,以至於我們1000人公司的首席執行官向我發送了一封感謝信。

一種在我的履歷表中列出這些類型的事情的方式,但並不能使我看起來像是一名破壞高級開發人員的黑客程序員?

您的履歷表應突出顯示“ ...緊迫的客戶截止日期,並收到了首席執行官的感謝電子郵件。

在面試環境中您到達或未到達的方式,但這不屬於簡歷。

有時候,業務決策需要及時。我可以從個人經驗中告訴您,經理重視那些能夠找到方法完成重要工作的人。

您能說在哪個國家/地區提及簡歷中首席執行官的一封感謝信?我從來沒有聽說過這個。
我也沒有聽說過將晉升理由放在簡歷上。自從我學會寫簡歷以來,我認為規則已經改變。
gnasher729
2020-04-02 15:04:37 UTC
view on stackexchange narkive permalink

因此,您創建了一些需要四分鐘才能運行的軟件(因為您的代碼不是很好)。如果我需要12個小時手動完成工作,那麼您的軟件可以為我節省11個小時56分鐘。如果您編寫了可以在1秒內運行的更好的代碼,則可以為我節省11個小時59分59秒。如果一個星期後交付了更好的代碼,那麼我不得不手動完成五次工作,那麼額外的3分59秒將永遠無法彌補我浪費的時間。

或者使其更加極端。該軟件需要在24小時內運行。您的代碼不正確,因此我們需要一台價值5,000美元的計算機才能在24小時內運行它。有了更好的代碼,一台價值2,000美元的計算機可以在24小時內運行它。節省$ 3,000。如果花兩週時間來加快代碼速度,那就是整體損失。

能夠在需要時交付是非常非常好的事情。此外,優秀的開發人員可以以某種方式編寫錯誤的代碼,以便以後輕鬆進行改進。糟糕的開發人員編寫的不良代碼很難將其重構為良好的形狀,優秀的開發人員在時間壓力下編寫易於改進的不良代碼。

Mike Robinson
2020-04-02 03:06:01 UTC
view on stackexchange narkive permalink

“那是什麼意思?”

問題是, strike> 成就(!) i> b>總是在緊迫的客戶最後期限上交付,並且坦白地說, strike> 我做到了 b>並認為在目標情況下工程技術可能不如一流(管理層同意)。 b>

然後...(!)

我不確定錯過截止日期本來可以,但是他們太陡了,以至於 我們1000人公司的首席執行官 i>向發一封感謝信給我(!) i> b>交付它。

“ Dude .... !!!” b>我想僱用 you !!! i> b>

...除非首先成為管理顧問!


非常簡單,您需要...首先...認識到您已成為 非凡,這是通過您自己的辛勤工作而得到的,並且您已經為此獲得了非常正確的認可。在簡歷中,您應該強調一下您剛剛擁有的素質

中也有概述。 “不要忽略您的當前狀況。”不要自動地認為現在前進的唯一途徑就是離開他們……這裡就是“主任”,“首席技術官”和“執行副總裁”的頭銜。

Dmitry Grigoryev
2020-04-02 15:02:26 UTC
view on stackexchange narkive permalink

愛因斯坦,

軟件質量應保持盡可能低的水平,而不是更低。

我知道有很多開發人員對此感到自豪在他們編寫的代碼中,他們對此表示強烈反對。但是從業務角度來看,一旦達到軟件質量目標,就可以進一步提高質量,這意味著您需要花更多的精力來完成您未被要求做或需要付費的事情。絕對質量是無法達到的:無論您的軟件多麼出色,總有改進的餘地。

很顯然,您丟棄的代碼質量並沒有受到讚譽。您讚揚了保持可接受的代碼質量,同時又滿足了截止日期。那就是應該在簡歷中表達的方式。

cjs
2020-04-03 16:31:54 UTC
view on stackexchange narkive permalink

我對此沒有什麼特別的看法,儘管我傾向於同意這樣的答案,即那種事情並不真正適合簡歷。

但是,我想指出的是,如果我在與您進行面談時,您像您在問題中所描述的那樣,會發生什麼情況。在認識到他正在做出的取捨時,在短期內是必要的。”但是,在您公司的軟件項目管理中,還有一個非常明顯的可確定的問題,我要請您確定。

我想听聽的答案是,技術團隊之外的某個人答應了客戶在特定的截止日期之前,沒有技術團隊對何時交貨的估計。這樣做是長期災難的秘訣。如果您不能識別出這種問題,我會非常警惕讓您加入我的團隊。

此外,一旦發現了問題,就需要有人對其進行長期修復確保逐步減少該問題,並在理想情況下最終消除該問題。我想問問您,您在擔任新的管理職位時做了什麼工作。如果您不能對此提出一個好的答案,那麼再次僱用您我會非常謹慎。對昂貴的短期修補程序承擔責任是很棒的,但是如果您不對長期修補程序負責,這樣可以消除對那些昂貴的短期修補程序的需要,從而節省公司的時間和金錢,那麼我考慮您僅適合初級職位,直到您學會了。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...