軟體開發中的10大不為人知的真相
對於相關的計算機和程式碼知識,通常來說程式設計師比一般人要了解得多,下面我將為大家揭曉一些業內人士不會訴諸於口的真相。
真相#1
“你所不知道的是,很多我們每天都使用的關鍵軟體(如 Mac OS X 和 Facebook),作為一個整體雖然可以正常工作,但是實際上它們的背後充斥了各種的弊端和缺陷。這就像是你興致勃勃地拆開了一架全新的 747 飛機,但是卻發現燃料線是由衣架固定的,起落架是用膠帶貼上的。” ——Ben Cherry
這其實是非常有意思的一件事:網頁和程式外觀精美、執行流暢,但是卻很有可能只是完美在前端上(使用者所能看到的那一部分)。它們的背後其實千瘡百孔、滿是錯誤,不過因為某些神奇的原因,居然也可以正常工作。
真相#2
“編寫應用程式時,大概 25% 的時間是花在思考終端使用者將會做哪些蠢事上的。”——Brian Humes
不過,25%這個數值會根據開發人員和程式設計師的作為而上下浮動。每次構建產品時,我們都需要坐下來思考終端使用者將會如何把這個程式搞得一團亂。他們會點選什麼,他們會寫什麼,問題的措辭,使用的語言,以及我們的寫法所造成的不同理解。如果不注意這一點,那麼就會出現很多問題,這是因為雖然我們知道程式是如何工作的,但是終端使用者是不懂的。
真相#3
“程式設計師不是修電腦的。” ——Ritesh Kumar Gupta
程式設計師是搞演算法和設計原則的,不是一個修電腦的。我們知道電腦的內部工作原理,程式碼是如何協作的,但是,我們並不知道如何修理硬體,不知道為什麼每次開啟瀏覽器就崩潰,也不知道為什麼電腦發熱過度。請不要用一種“這種事對你們而言就是小菜一碟”的眼光看待我們。
真相#4
“程式設計是一種思想,而不是敲程式碼。” ——Casey Patton
程式設計並不是說,只要你安安靜靜地坐下來,寫個上千行程式碼,釋出程式或應用程式的意思,程式設計其實是一種思想,一種解決問題的方法。而放鬆則是思考出方法的關鍵。
真相#5
從零開始計算,而不是從一開始。
我們是從 0 開始計數的,所以你的“1”是我的“0”,你的“10”是我的“9”。之所以這麼做,是因為這可以大規模地改善效率。
真相#6
“一旦進入狀態,程式設計就猶如神助——這種全神貫注的狀態能讓任何問題都變得小菜一碟。”——Morgan Johansson
知道為什麼程式設計師被稱為夜貓子嗎?知道為什麼我們常常熬夜嗎?因為這樣能讓我們進入一種專注的狀態,而不必擔心會被其他人打斷——因為他們都睡著了,這些煩人的傢伙終於閉上了他們唧唧歪歪的嘴。真是一個偉大的程式設計時間啊!
真相#7
告訴你個祕密,帶著問題睡覺,實際上可以解決這個問題。
很多時候,我遇到那種花了幾個小時都解決不了的問題,我就會去睡一覺。通過 20 分鐘,一小時,六小時,十二小時的睡眠,醒來之後,問題答案就自然而然地出來了。
真相#8
分配下來的任務卻不再需要,就像父母殺掉孩子。
我們寫的程式其實都類似於這樣的層次結構。Parent管理它下面的Child。
現實中,如果父母不想要孩子,會去做流產。而在程式中,如果不再需要某些任務,那麼會切斷其與伺服器的聯絡,殺掉這個孩子。
真相#9
當我們吹噓我們有多麼瞭解電腦時,你通常會不屑一顧,同樣的,你的自吹自擂也讓我們覺得好煩。
老實說,這真的很煩,我們真的一點也不關心你對於計算機的瞭解。如果你說“我對於計算機不是很懂”,或者“我對計算機程式設計不是很感興趣”那還是可以理解的,但是自吹自擂,魯班門前弄大斧就會讓我們厭煩了。請規避這種行為吧。
相關文章
- 如何成為更好的軟體開發人員
- 鮮為人知的軟體專案管理原則專案管理
- 軟體開發中業務知識的啟用 - Feathers
- 軟體開發中的10個最佳實踐技巧!
- 何為軟體開發的難?
- 軟體開發中的DevOpsdev
- 警惕!Python 中少為人知的 10 個安全陷阱!Python
- 軟體開發中的10條最佳指導原則
- 何為開源,聊聊軟體開發中的那些開源協議協議
- 軟體工程令人不安的真相 • Buttondown軟體工程
- 來看看電腦上有哪些不為人知的小眾軟體?
- web開發知識體系中必要的知識點Web
- 81%的開發人員表示知道軟體存在缺陷
- 人的真相!【你信嗎?】
- 2020年以後...軟體開發人員趨勢為何?
- 探討敏捷開發在軟體開發中的應用敏捷
- 學會Zynq(3)Zynq的軟體開發基礎知識
- 分享個人用於開發相關的軟體/工具
- 軟體開發人員的關鍵績效指標指標
- 軟體開發中,如何為你的程式碼構建三層防護體系
- Java開發需求大不大?Java
- 我的軟體開發中經驗教訓
- 軟體開發的常見認知規律和原則 - Reflectoring
- 嵌入式軟硬體開發中遇到的坑
- 軟體開發中的精益和敏捷 - Aram Koukia敏捷
- 如何應對軟體開發中的估算問題?
- 軟體敏捷開發流程中的 Spike,Sprint 和 Takt敏捷
- 測試人員如何在軟體敏捷開發流程中體現價值?敏捷
- 鮮為人知的JavaScript功能JavaScript
- 不為人知的 Linus 大神
- 直播軟體原始碼開發千萬不能忘的一個知識點原始碼
- 線上教你開發直播軟體app時需要掌握的小知識APP
- 軟體測試需要具備的知識體系(個人總結)
- 軟體開發人員如何提升自己的架構設計能力?架構
- 大前端開發人員必知必會的HTTP知識前端HTTP
- 軟體功能測試在軟體開發中的重要性。在哪裡做軟體測試?
- 表面光鮮,實則搬磚,機器學習社群自嘲不為人知的AI工程師真相機器學習AI工程師
- 2020年面向iOS開發人員的知識點總結(更新中)iOS