最令程式設計師沮喪的 10 件事

2021-08-04 07:39:38 字數 3645 閱讀 1637

軟體開發是乙個挺不錯的工作,不過同時也像任何其他工作一樣有著不好的一面。這裡列出了大部分程式設計師對於寫**無法忍受的 10 件事。

1和別人的**一起工作

作為乙個軟體開發者,或早或晚,你都將與別人的**一起工作。不管是繼承自工作中前輩的遺留**,還是第三方api,還是技術顧問寫的**,你不可能完全逃離被迫著去修改、改進、或者/以及整合別人的程式。更不用說被逼著做經常導致開發者扯下一些或很多青絲的事。

網友的遭遇:

「最糟糕的部分就是被迫去瀏覽別人的**,搞明白、除錯好、反覆調整。更糟糕的是,如果這個寫**的人已經離開了公司,而你當真沒有任何相關的知識遷移。」

「嘗試去解密上千行沒有注釋的**。」

「我處理過好幾次顧問們寫得一塌糊塗的**。」

「另乙個我覺得能令人沮喪的問題是第三方的api。你如此仰賴它們。有時你注意到乙個問題,或者需要乙個新特性,但那個 api 沒有給出任何原始碼去修改。因此你得去友好地問問 api 的作者,然後盼望最好的結果。」

「語言和框架的 bug。你花了幾天琢磨為什麼你的**不能工作。結果只發現原來你觸發語言或者框架本身的 bug。」

「忍著看那些一群遠遠沒有達到應有水準的人所寫的**。」 2

缺少時間

像其他大部分費勁的事一樣,打造好的軟體需要時間。不幸的是,又像大部分費勁的事一樣,上層管理層與/或客戶經常不願意為了乙個理想的解決方案正確實施而長時間地等待。結果軟體開發者經常被逼著把某件事快點搞定。這將導致醜陋的做法、技術債,並且缺少文件。這些都會在未來引發問題,特別是那些將來要被迫面對這些**的程式設計師們。

網友的遭遇:

「我想把事情做好。但是對於把事情快點做完,按熟悉的方法做有著巨大的壓力。有時這是常理之中。但這感覺如今的程式/商業文化已經偏向那個方向太多了。」

「對我來說這就像賽跑一樣,寫出來我稱之為拼湊**的**,然後在生產中意識到我真希望當初寫得更優雅一些。這裡面有乙個持續的時間壓力…」 3

非技術人員不懂我的心

儘管軟體開發者的數量與日俱增,更不用提我們日常所需的一切都愈發依賴著軟體。很多非技術背景的人仍然不理解軟體開發者到底在做什麼。對於非技術背景的人們來說,開發者們就是一群「技術人員」。很少有人關注,比如說那些開發軟體和開發硬體的人的區別。這些隨處可見的誤解和錯誤的期待,尤其是來自家庭和朋友,可以真的逼瘋乙個程式設計師。

網友的遭遇:

「非技術人員的乙個常見誤解就是,既然程式設計師整天和電腦打交道,那我們一定知道怎麼修理電腦。這就好比:麥拿輪車隊簡森·巴頓知道如何拆解和組裝乙個賽車齒輪箱,僅僅因為他會開 f1 賽車。」

「嗯,我是寫**為生的。但我幫不了你的列印問題或者打不開乙個附件或者筆記本無法開機。除非你願意請我一頓午飯或者一瓶啤酒。那麼也許我能幫上忙。」

「1% 到 2% 的人知道你真的在做什麼。」 yasin pekşen 4

別人破壞了我的**

每乙個開發者的**在某一刻都必須與其他開發者所寫的**協同工作。不論是同乙個軟體的不同部分,還是第三方軟體庫或工具,還是另乙個完全的應用。沒有哪個開發者的**是座孤島。不幸的是,這意味著乙個程式設計師的**可以通過輕率、糟糕的溝通、或者僅僅是簡單的疏忽大意,破壞了另乙個程式設計師的**。這能引起緊張、壓力、以及更常見的詛咒。

網友的遭遇:

「我經歷的最令我沮喪的事,是和別人一起寫乙個程式。他擅自更改了我們二人都連線使用的工具庫,而沒有告知我工具庫已經被修改。這意味著我在呼叫著缺少或者增加了引數的子程式,或者更糟糕的情況裡,**會在我沒有許可權的工具庫里崩潰。」 5

不切實際的期望

軟體開發者通常被認為是相當聰明的傢伙。不幸的是,這常常導致老闆們,專案經理們,還有銷售人員對程式設計師/程式設計師團隊,可以合理地在乙個確定時間點之前的產出有著不切實際的期望。因而誇大了可以交付的成果。這反過來可以導致開發者被榨乾並且引發了碼農們普遍不滿。

網友的遭遇:

「你的老闆對你和你的同事有著極高的期望,但卻遠遠沒有哪怕接近於期待的時間和資源。」

「專案經理或者業務分析師們許諾了乙個月亮給客戶。然後程式設計師們無論如何被迫得去做出來。」 6

整合**

源**控制系統,比如 git 或 subversion,是使得多個開發者同時操作同乙份**的絕佳工具,避免了大家互相掣肘。可是,最終**的改變需要提交到版本庫里。此時衝突可能發生,比如說兩個程式設計師修改了相同的檔案或者子程式。在這些情況下這些修改需要被整合起來。有時整合這些衝突可以很快就解決,有時就沒有這麼樂觀了。

網友的遭遇:

「我討厭整合,因為這就好比,你想這麼改**,我想這麼改**。那麼我們到底怎麼改呢?我總能找到乙個辦法合併我們所有的修改。但是如果真的存在乙個直接衝突,這將會變成乙個尷尬的過程。」 7

拙劣的文件

與其他開發者的**共事可能令人沮喪。不過如果**至少有個清晰的文件,那就不會那麼的令人討厭。不幸的是實際情況不總是這樣。那些注釋蹩腳,亦或是缺少文字描述如何工作的軟體,想要除錯、增進、或者整合這些軟體所需要的時間大大延長。更進一步來說,這對程式設計師的血壓更是有害無益。

網友的遭遇:

「最令人沮喪的事就是被僱傭來為乙個文件拙劣的軟體工作。這使得接受的人舉步維艱。它們缺少注釋,有著糟糕的**語義,尤其是當前面的程式設計師們留下了一大堆缺陷和錯誤。」

「我跟絕大多數程式設計師一樣,大部分時間花在了維護缺乏文件的**上,而不是編寫新的**。」 8

除錯程式

即使是最好的,最小心翼翼打造出來的**也免不了錯誤。自然而然的,開發者們必須經常地花費時間追蹤並且修復軟體的 bug;不管源自自己的**還是別人的 。有些錯誤能被迅速發現並修復,其他的隱藏得太深,可能會令人發狂,進而導致浪費了數小時寶貴的開發時間,更別說因此損失的碼農的理智了。

網友的遭遇:

「發現乙個難以重現的 bug,甚至更糟,一組相同的**在整合測試中隨機地通過或失敗!之後你就會感覺你可能永遠也不會發現那些神秘潛伏在某處著的惡魔**。wtf!」

「我們寫出了如此龐大的程式(甚至有時很小的程式),以至於當除錯過程中我們去睡覺之後,我們遺忘了當初的錯誤是什麼。」 9

一坐一天

除非你有乙個跑步機功能的辦公桌,軟體開發的工作基本不是乙個有氧健身活動。大部分程式設計師長時間坐著,彎腰駝背地操作著鍵盤,目不轉睛地盯著電腦螢幕。所有這一切只需一會兒就會變得不舒適。如果你不至少換換在**坐著,這也能變得非常壓抑。

網友的遭遇:

「坐在一把椅子上一整天並且盯著螢幕。一段時間之前毛病開始了。一開始是背,然後是脖子,接下來眼睛開始灼傷疲勞,腦袋開始疼…人開始坐立不安…即便我開始用健身,打太極、瑜珈、氣功、騎自行車去上班。我也不能再每天八個多小時這樣坐著了。一整天困在辦公室裡…看著太陽朝公升夕落,卻仍然坐在那把傻了吧唧的椅子上虛度光陰。」 10

硬體在沒有了賴以生存的硬體之後,軟體當然是什麼也幹不了的。儘管一些程式設計師願意去忽略硬體端,但他們不可避免地或早或晚會在搭建或者除錯程式時面對硬體特定性的問題。這是為什麼有些程式設計師,強烈建議新程式設計師們熟悉他們**之下底層的硬體和系統,來減少未來類似問題的惡化。

網友的遭遇:

「任何乙個曾經被呼叫來除錯乙個詭異的資料庫伺服器崩潰,或是為什麼 raid 驅動程式沒有正常工作的程式設計師,都知道處理硬體問題是多麼痛苦。」

「程式設計師痛恨硬體:因為他們不能總是指責硬體。」

程式設計師必做的10件事

必做事之1 跳一次槽要選對行業 如果你在本單位既不能得到加薪的機會,也沒有公升職的苗頭,而且自己日復一日地混日子,對工作沒有了激情。那就請跳槽吧,因為跳槽後,你去了乙個全新的環境,新鮮感會刺激你認真工作,使你的工作狀態得到調整。必做事之2 確立乙個年度目標 中國社科院新發布的2007年人才藍皮書中顯...

成為程式設計師前需要做的10件事

想要成為一名偉大的程式設計師 並不是那麼容易的一件事,事實上 沒有經歷過漫長考驗的話,這根本就是妄想。想要成為一名堪稱優秀的程式設計師就已經很需要花時間了,而且過程不可謂不艱難 你會不止一次地想要放棄。我們需要知道的第乙個經驗教訓是,別人的經驗永遠不會與你的一樣,不僅是因為你們碰到的資源不同,還包括...

程式設計師應知道的12件事

12 things a programmer really needs to know 他分享了自己做程式設計師的12個經驗心得,更好的幫助程式設計師認清自身環境,並更加有效的提公升自身價值和解決專案開發過程中的難題。現csdn對原文進行編譯,內容如下 怎樣才能成為一名優秀的程式設計師呢?我曾為此寫...