1. 程式人生 > >程式設計師的十大思維誤區

程式設計師的十大思維誤區

作為老碼農老程式設計師,日常工作中打交道最多的也是程式設計師,在這個過程中,我發現不少程式設計師在技術、產品等方面的思維有各種各樣的小問題。現在我就來回憶一下,把這些我認為不太好的思維習慣記錄下來,在提醒自己的同時,也供程式設計師朋友們參考,不必對號入座,有則改之,無則加勉,或者你甚至認為這些不是思維誤區都可以的,我也不知道起怎麼樣的標題比較合適,且稱“程式設計師的十大思維誤區”吧,祝閱讀愉快!

 

1. 測試人員不按我的實現來測

前端介面有幾個下拉列表框,需要選擇後才能點“提交”按鈕,但前端的實現是,即使不選擇下拉框,也能點選“提交”按鈕。而如果沒選擇時就提交,會出錯。前端開發人員會說,你不按我的要求來使用,才出錯的啊。嗯,嗯,好像有點道理哈。

從測試的角度來看,粗暴點說,就是要把你的東西搞垮,當然不會按照開發人員想象的流程來測試,前端開發人員必須力求保證無論使用者怎麼使用,都不能出現崩潰的現象,使用者使用流程不合理時,進行適當提示,而不是掛掉。比如不滿足輸入條件的情況下,“提交”按鈕最好變灰,這樣也有助於引導使用者按照正常流程來使用產品功能。

 

2. 介面沒有資料,當然就出錯

APP或網站出錯了,找前端開發人員過來看。看完之後說:“介面返回空資料了,前端沒有問題”。真的沒問題嗎?

前端需要進行防禦式程式設計,永遠不要假定後端介面有資料返回或者資料格式一定是合理的,因此需要針對這些情況做處理,比如進行一些轉換然後展示給使用者。而不是:後端介面沒有返回資料,我就崩潰給你們看,跟我沒關係!

 

3. 把資料庫的錯誤返回給前端

後端開發人員有時候會將操作資料庫的異常資訊返回給前端,如果你跟他說需要遮蔽掉這種資訊,然後轉換成前端可以理解的資訊再返回,他會說正常情況下不會這樣的,只是因為資料庫的資料是測試資料,資料關係不合理。

就像前端開發人員不能假設後端介面一定返回資料給他一樣,後端開發人員不能對資料庫的資料做任何假設。在操作資料的時候,需要想象如果這個資料不是你想要的格式時,要怎麼處理,然後再返回給前端相應的資訊,而不是把異常資訊返回給前端。 

 

4. 功能開發完成,萬事大吉了

有些開發人員在寫完某個功能後,常常就覺得沒什麼事情了。功能開發之後,測試就不用說了,但此外,開發人員最好能多從運維、運營的角度去思考。比如怎樣的資訊有利用運維人員快速定位問題,也有助於自己快速找到應用程式碼中的問題。同樣,得想想,怎樣的資料資訊可以幫助運營人員做決策,怎樣的策略具有更好的安全性。

功能開發完成,只是第一步,一個系統要完整運轉起來並運轉得好,還需要很多其它的輔助工作,因此,開發同學具有運維、運營式研發思維,才有可能成長為一個能統領全域性的技術負責人之類的角色。

 

5. 口頭禪:我電腦上沒問題啊

聽到某個功能出問題時,技術人員往往會說:我電腦上沒問題啊。這倒是可以理解的,畢竟開發人員完成某個功能後,一般都是在自己電腦上測試過的,測試沒問題了才釋出出去。

但是開發人員自己測試,往往不能測出問題,因為他已經按自己的實現思路去使用了,但很有可能測試得不全面。而且,別人電腦和自己電腦環境可能不一樣,相容性是個問題。“我電腦上沒問題啊”,這句話給我們碼農掙回一點尊嚴是可以的,然後,應該認真對待別人提出的問題並解決掉。

 

6. 懷疑作業系統或者硬體問題

聽到產品有問題時,經常懷疑是作業系統或是硬體問題,而不主動想辦法解決。倒不是說作業系統和硬體是完美的不會出問題,而是這些東西都是經過千萬次測試後才推出來的產品,我們寫的程式碼可能沒有經過足夠的測試就釋出出去了。

從經驗來看的話,99%的情況下,是開發者不理解系統機制,或者是自己程式碼有問題。因此,一般遇到問題時,先想想自己程式碼哪裡比較可能出問題,然後再考慮其它方面的問題,當然,有些問題很明顯就不是程式碼問題的,那另當別論。

 

7. 假設程式碼都走“Happy Path”

Happy Path,也可以叫歡樂路徑。有些開發人員總會假設,程式執行時,配置檔案好好地躺那裡了,網路連線總是好好的,因此程式都會按理想中的流程執行著。

而實際上,程式在執行時,各種異常情況都有可能發生,可謂如履薄冰。因此處理異常的程式碼是非常必要的,甚至有時候,處理異常的程式碼比正常流程的程式碼量還要多,這都是為了程式的健壯性。

同樣的,因為歡樂路徑的思維,開發人員在估計開發時間的時候,也往往會以最順利情況下的時間作為進度計劃,而實際上在開發過程中,還會遇到各種各樣難以預料的問題,都需要花時間解決,因此程式設計師估算時間,一般差個2-3倍是比較常見的。

 

8. 主與次、抽象與具體分不清

技術人員有時候分不清主次,該理解的不去仔細理解,不該背誦的選擇背誦。有些東西其實理解了原理,使用時候再查一下文件就可以了,沒有必要花費精力去記憶。

還比如,捨不得花時間做設計,就早早動手寫程式碼了,理由是沒有時間設計。但到頭來,因為沒有提前做好設計而需要返工,導致花的時間更多。因此,除非不得已,建議先稍微想好再動手幹活,沒必要太急,這就是所謂的慢工出細活。 

 

9. 少溝通,以為都理解需求了

技術人員有時候跟業務人員、產品經理寒暄幾句,就以為都理解了需求,於是回頭就蠻幹起來。等到做得差不多了,拿給業務人員看時,可能會發現做的東西不是他們想要的,或者相差甚遠。

還有些時候,是因為不深入理解需求和環境,導致了複雜性。舉個例子,比如要給自動化部署的伺服器叢集分配內網IP,剛開始可能想到要生成各個網段的IP然後讓伺服器通過DHCP來自動獲取屬於這個網段內的IP,網段還不能重複。但如果理解了具體場景,比如每一次部署,在同一網段內的伺服器都不超過200臺,那其實就不需要用程式碼生成網段了,使用固定的網段就可以,因為不同的部署相互之間是隔離開的,不同次的部署,即使IP相同,也不會衝突,這就簡化了問題,本來要寫的程式碼現在也不需要寫了。有一種比較拗口的說法大致可以描述這種場景,就是:解決問題的最好辦法就是不去解決它。

 

10. 抱殘守缺不主動學習新知識

以前有位碼農問我,知不知道MVC模式,我只好苦笑。儘管我不敢說自己對一些模式的理解有多好,但這種東西在剛開始程式設計的那些年,也早就接觸了是不是。我估計他平時很少跟人溝通,或者看技術文章、技術資料比較少,以為自己偶然學過的東西,很多人都不懂,而實際上並非如此。

他還說,使用具有MVC模式的PHP框架後,後端的Model被修改後,瀏覽器前端立即有響應。我估計他受VC++裡面文件檢視程式設計的方式影響比較深,在單一的桌面程式裡面,MVC模式確實會這樣的。但是到Web程式設計時,代表資料的Model在後端被修改了,前端瀏覽器並不能看到View的變化,需要重新整理才能從後端獲取View的新內容,或者需要使用Ajax請求,又或者需要使用WebSocket之類的技術從後端向前端推送。這種時候,後端框架使用MVC模式,是為了模組劃分和更好的程式碼組織方式,並不是後端資料修改了,瀏覽器上顯示的View部分自動就更新了。

技術的更新實在太快了,即使身處於這個行業中,我們也時常會因為要跟進新技術而疲於奔命。比較有效的辦法是,儘量去理解一些本質性的原理性的知識,這些知識往往通用性比較強,同時選擇學習某些新框架。選擇的依據可以是這種框架的社群活躍程度、遇到問題時網上找解決辦法的難易程度、開發週期長短、市場上人才儲備情況等等。

 

文章來自:技術人成長

 

歡迎關注公眾號:

相關推薦

程式設計師思維誤區

作為老碼農老程式設計師,日常工作中打交道最多的也是程式設計師,在這個過程中,我發現不少程式設計師在技術、產品等方面的思維有各種各樣的小問題。現在我就來回憶一下,把這些我認為不太好的思維習慣記錄下來,在提醒自己的同時,也供程式設計師朋友們參考,不必對號入座,有則改之,無則加勉,或者你甚至認為這些不是思維誤區都可

.net程式設計師必學之一的xml實現類

動態建立xml節點 一、需求分析 網站中英版切換,網站資訊儲存於xml檔案當中,如果XML節點為空,則建立節點並設定預設值。 protected void Page_Load(object sender, EventArgs e) { XmlDocum

2018年 Java程式設計師學習資料最佳之路!

隨著大資料時代的到來,有很多Java程式設計師想要轉行大資料。 不得不說,大資料行業可以說是為Java程式設計師量身打造的一個朝陽行業?為什麼要這麼說呢? 因為Java工程師轉型大資料具有天然進階優勢,不僅僅是前景和薪資等。技術層面來說,大資料使用的Hadoop(在分散式伺服

#鑑別程式設計師牛還是小白?網友:簡單,從髮量就可以看出啊

程式設計師的技術高低是由什麼決定的呢?是有你的工作年限,還是你的專案經驗?我覺得都可以作為一個判斷依據,其中還有一個是什麼?沒錯,聰明的小夥伴已經猜出來了,就是你的發亮。 有網友在釋出了一個如何鑑別菜鳥和大神程式設計師的帖子,原貼是這樣的: 在這裡我推薦下自己整理的資料,我自己是一名從事

【Twinkle】轉:做碼農差不多五年了,聊聊程式設計師五年內職業生涯規劃,共勉之

    很多人以為技術人員可以做一直做下去,但是最近我發現這個觀點不完全正確,因為能一直做下去的技術人員非常稀少,因為不同的年齡段,公司對技術人員的要求會不一樣,如最近傳言華為計劃裁掉40歲以上的程式設計師,首先我認為肯定不會裁掉所有40歲以上的技術人員,如CTO或高階技術專家不

Java程式設計師年後還能有現在的高薪嗎?目前你的薪資又在哪個檔次

IT網際網路行業發展趨勢 一到兩年內,你工作有沒有晉升、薪水能不能增加,個人努力起很大作用。如果你的工作具有很大的可替代性,那麼勢必你的待遇很難提高,所以在工作的同時不要忘記提升自己的核心競爭力,相對於只懂一種程式語言的人,一專多精更能在工作中脫穎而出,更具升職加薪的機會。而對於五年、八年

前端課程集結!51cto 1024程式設計師放送,通過以下連結購買,可享受附加前端問題答疑服務

http://edu.51cto.com/sd/459c1 HTML5開發APP-框架MUI(仿支付寶案例)http://edu.51cto.com/sd/26227 NodeJS基礎、Express實戰視訊課程【後臺管理系統】【楊勝強老師-前端系列課程】http://edu.51cto.com/sd/a

Java 程式設計師面阿里,最終拿下阿里 P7offer!

今天介紹小編的一個朋友,他現今有四年開發經驗了,前前後後為了進阿里面試十次(阿里旗下—螞蟻金服,天貓的offer都被hr因學歷而被拒,最後的菜鳥面幸運的被錄用,拿到P7offer,真正的“十面”阿里!) 本文前半部分主要分享他的面試總結,後半部分分享他程式設計師個人架構開發之路的學習經驗。 面試總結 雖

普通的程式設計師神級的程式設計師有什麼區別?

普通的程式設計師和大神級的程式設計師的區別,小編來列舉幾點,順便給一些普通程式設計師一些學習建議,請查收 ~ 一、主要問題 1、沒有程式設計思想 或許很多人覺得很扯,但確實是這樣的。高階程式設計師在看到一個需求的時候,總是能夠快速在大腦裡生成這個需求在現實生活中的對映。每當產品經理提一個需求

一個老程式設計師年生涯總結(轉載)

今年是我大學畢業滿10年的日子,也是我投身IT技術的第10年。一直想能對過去的經歷做些回顧與反思,以更      好地走向未來,但總沒有筆。剛好CSDN舉辦“講述程式設計師的故事”徵文,這件事成了一個引子,我終於趁著暑期有時間,敲了一天鍵盤,便有了這篇人生自述。       10年對於一個人

徹底瞭解程式設計師學習資料開發的優勢在哪裡,轉行輕鬆度過菜鳥期

1.Linux基礎和分散式叢集技術 學完此階段可掌握的核心能力: 熟練使用Linux,熟練安裝Linux上的軟體,瞭解熟悉負載均衡、高可靠等叢集相關概念,搭建網際網路高併發、高可靠的服務架構; 學完此階段可解決的現實問題: 搭建負載均衡、高可靠的伺服器叢集,可以增

Java 程式設計師面阿里,最終拿下阿里 P6 offer!

今天介紹小編的一個朋友,他現今有四年開發經驗了,前前後後為了進阿里面試十次(阿里旗下—螞蟻金服,天貓的offer都被hr因學歷而被拒,最後的菜鳥面幸運的被錄用,拿到P6offer,真正的“十面”阿里!) 本文前半部分主要分享他的面試總結,後半部分分享他程式設計師個人架構開發

程式設計師恩人永遠地離開了

這個晚上月光很亮,你泡好一保溫杯枸杞養生茶,開啟電腦,開始敲程式碼;茶水的溫度剛剛好,你熟練地按下“Ctrl-C + Ctrl-V”……對於泡在程式碼裡的程式設計師而言,複製貼上無異於左右護法,很難想想沒有了這一功能的世界將會變成何等玄幻的模樣。可當我們頻繁按下這些快捷鍵的同時,似乎從未

2017年一線城市程式設計師工資調查

                                                                                                    編者按:作者爬了某招聘網站,獲取近一週的程式設計師工資18275條。其中,有工資的17628條(北京4892,

剛入坑的程式設計師,我該告訴你點什麼?(高齡程式設計師實話)

現在網際網路越來越發達,導致越來越多的人加入了程式設計師這個行列,或者說入了這個坑。那麼剛入坑的程式設計師你應該知道些什麼呢?下面是大佬的一些建議:在這裡相信有許多想要學習前端的同學,關注小編文章最後面文字,可免費領取一整套系統的web前端學習教程!正文少說廢話,多寫程式碼廢

4年程式設計師面阿里終拿下offer,評級P6

小編現今四年開發經驗,前前後後為了進阿里面試十次(阿里旗下—螞蟻金服,天貓的offer都被hr因學歷而被拒,最後的菜鳥面幸運的被錄用,拿到P6offer,真正的“十面”阿里!) 本文前半部分主要分享面試總結,後半部分分享程式設計師我個人架構開發之路的學習經驗。 面試總

頂級程式設計師和普通程式設計師的5個區別

1. 勇於去研究你不懂的程式碼 一般人都不願意去研究自己不曾接觸過的程式碼,很多人都沒有嘗試就放棄了。如果你經常去研究你沒有接觸過的程式碼,你就會越來越熟悉不同的程式碼結構和設 計模式。現在人們很容易就接觸到優秀的開原始碼資源,你可以很方便的就下載下來做一些改動或者除錯,去研究為什麼程式碼可以這

阿里P7告訴你普通的程式設計師神級的程式設計師有什麼區別?

一、主要問題 1、沒有程式設計思想 或許很多人覺得很扯,但確實是這樣的。高階程式設計師在看到一個需求的時候,總是能夠快速在大腦裡生成這個需求在現實生活中的對映。每當產品經理提一個需求的時候,高階程式設計師首先想到的就是,這個需求需要哪些資料庫上的改動,對現有的邏輯有什麼影響,需要提供

2018年,Java程式設計師轉型資料開發,是不是一個好選擇?

近日網上有一篇關於Java程式設計師職場生存現狀的文章“2017年 Java 程式設計師,風光背後的危機”,在Java程式設計師圈子裡引起了廣泛關注和熱議。 2017年,Java 程式設計師面臨更加激烈的競爭。 不得不承認,經歷過行業的飛速發展期,網際網路的整體發展趨於平

新人程式設計師牛進階之路

1.對程式碼花時間解構出來那一塊負責什麼功能,把專案給庖丁解牛成一個個不同功能的模組 2.對每個模組實現什麼瞭解 3.看懂每個模組的程式碼,不懂就google+stackoverflow去問 4.嘗試對某個你感興趣的小模組去重構 5.重構出來的效能不如原來的,分析原因,回到4,迴圈 6.期間惡補相關的知識,特