10年軟體開發中獲得的最寶貴的經驗!
物件導向”比你想象的要難得多
也許只有我有這種想法,不過我曾經以為電腦科學課上學過的“物件導向”是很簡單的東西。我的意思是,建立一些類來模擬現實世界能有多難啊?其實,那還真是挺難的。 十年之後,我仍然在學習如何合理地建模。我後悔以前我沒有花更多的時間來學習物件導向和設計模式。優秀的建模技術對於每一個開發團隊都是非常有價值的。
軟體開發的難點在於溝通
這裡的溝通是指與人的溝通,而不是socket程式設計。有時你的確會遇上棘手的技術問題,但是這種情況根本不常見。常見的問題在於那些你和專案經理之間的、你和客戶之間的、還有你和其他開發者之間的誤解。培養你的軟技能吧。
學會拒絕
當我剛開始工作的時候,我非常急切的想要去討好別人。這也就是說,我幾乎不能去回絕別人對我的要求。我加了很多班,但是還是不能完成他們交代給我的所有事情。結果他們表示不滿意,而我也表示要崩潰了。
如果你從不回絕別人,你的答應就顯得毫無意義。承擔能力所及的事情,如果別人不停地指派給你更多的事情,你需要明確的表示那意味著將會耽誤其他的工作。
為了應付這種事情,我會隨身攜帶一張列有待辦事項的紙(To-do list)。當人們叫我去做什麼事情的時候,我就給他們看這張紙,並且問他們我應該為他們擠掉哪個事情。這是我用來拒絕別人的一種好辦法。
如果每件事都重要,那就什麼事都不重要
我們這一行,總是強調每種特性都是同等重要的,其實並不是這樣。敦促你的同事,讓他們承擔起工作。
如果你不強迫他們選擇該做和不該做的事情,你會輕鬆很多。相反,讓他們來為你選擇你這周的任務。這會讓你生產出來的東西變得最有價值。如果其他的部分都還是亂糟糟的,至少你已經完成了最重要的。
不要過度考慮問題
我可以站在白板前面一整天策劃事情,但是這並不意味著事情會向更好的方向發展,這僅意味著事情將變得更復雜。
我的意思並不是“你不應該去做任何策劃”,只是如果我會在實現程式的時候會很快遇到我沒考慮過的問題的話,那為什麼我不去嘗試把它做好呢?像戴夫·法洛所說的,“魔鬼居住於細節中,而驅走魔鬼的方法是實踐,而不是理論”。
去鑽研一些東西,但不要鑽牛角尖
克里斯和我花費了大量的時間鑽研SQL伺服器的深層部分。那真的很有趣,我也學到了很多知識,但是過了一段時間我意識到,知道了那麼多的知識並不能幫助我解決業務上的問題。
舉個例子:我知道在資料表層次,SQL伺服器不會接受IU鎖——它只會接受IX鎖。這是一個效能調整,因為在大多數情況下,IU鎖都會升級成IX鎖。為了瞭解這些,我花掉了無數天做實驗,我讀了很多的書,還在會議上向微軟的員工瞭解情況。然而我用過這個技術知識嗎?沒有。
瞭解軟體開發系統的其他方面
這對成為一個優秀的開發者是很重要的,但是若要在一個開發軟體的系統中成為優秀的一員,你還需要去了解開發系統中剩下的部分在幹什麼。QA是如何工作的?專案經理在幹什麼?業務分析員在忙些什麼?這些知識會讓你與其他員工產生聯絡,並使你和他們之間的互動順暢。
向你周圍的人尋求幫助,以便學到更多的知識。有什麼好書呢?大多數人都會為你的關注而高興,並且很樂意幫助你。在這上花一點小時間會對你有很大的幫助。
同事是你最好的老師
在我找到第一份工作的一年後,我們和另一所公司合併了。突然之間身邊就多出很多聰明又經驗豐富的人。我深刻的記得這是我感到多麼自卑和愚蠢。我努力地學習,讀了一本又一本的書,還是還是趕不上他們。我發現他們和我比起來有非常突出的優勢。
現在,我不會因為和優秀的人一起工作而感到難受。我認為我有一生的時間去學習。我提出問題,並且非常努力地去了解我的同事們是怎麼做出結論的。這也是為什麼我加入了ThoughtWorks。把你的同事們看成財富,而不是競爭對手。
關於學習,不論是哪個行業,都是永恆的話題,正如 Jonathan Danylko在總結自己20年的程式設計經驗時所說到,“誠然,總有很多你不知道的技術,你可以從中學習以保持不落後。如果你有一種靈巧的方式來獲取你需要的新技術,那你每天都應該堅持學習。”(編注:ThoughtWorks是一家全球知名的IT諮詢公司。)
做出可用的軟體是最終目標
不管你的演算法有多酷,不管你的資料庫模式有多棒,不管你的什麼什麼有多麼多麼好,如果它不能搔到客戶的癢處,它就不值一文。專注於做出有用的軟體,同時準備繼續做出後續軟體,這才是正軌。
有些人真的不可理喻
在你身邊的大多數人總是很優秀的,你向他們學習,他們也向你學習。共同完成一件事情的感覺總是很好。然而不幸的是,你也有可能遇到例外。因為某些原因,人可能會變得冷漠刻薄。萎靡不振的老闆啊,滿口謊言的同事啊,無知愚昧的顧客什麼的。不要把他們看的太重。儘量避開他們,儘量把他們所帶來的痛苦和影響降到最小,但不要自責。只要你保持誠實並且盡力去工作,你就完成了你該做的事情。
英文來源:Andres Taylor
相關文章
- 必看!機器學習中的12條寶貴經驗!機器學習
- 程式設計師軟體專案預估的寶貴經驗程式設計師
- 我的軟體開發中經驗教訓
- 我的軟體開發生涯 :10年開發經驗總結和爆棧人生
- 開發軟體有多貴
- 【譯】構建 Android App 的30條寶貴經驗AndroidAPP
- 總結從“Thirst”模組所獲得的開發經驗和教訓
- 20+條軟體開發的經驗教訓
- 藍燕科技網站建設軟體開發10年經驗首選網站
- 經驗:專案順利進行的寶貴財富(轉)
- 從有趣的數字遊戲中,獲得的JavaScript學習經驗遊戲JavaScript
- CCNA滿分獲得者的經驗(轉)
- 前端開發程式設計師如何用1年獲得大廠3年實戰經驗?前端程式設計師
- 血汗結晶:漫漫程式設計路上學到的寶貴經驗程式設計
- 開發軟體到底有多貴
- Linus 談軟體開發管理經驗
- 軟體研發之道:微軟開發團隊的經驗法則微軟
- 35年程式設計史沉澱下來的8條寶貴經驗,受益匪淺!程式設計
- 2014年國人開發的最熱門的開源軟體TOP 100
- 2014 年最熱門的國人開發開源軟體 TOP 100
- Linus Torvalds談軟體開發管理經驗
- 捷克防毒軟體開發商Avast獲得1億美元投資防毒AST
- USB開發速成-我最真實的經驗!(轉)
- 開發者經驗:為Android開發比iOS貴4倍AndroidiOS
- Dapr 與 .NET Aspire 結合使用獲得無與倫比的本地開發體驗
- 軟體開發中的10大不為人知的真相
- 不錯的寶寶撫養經驗
- 100個替代昂貴商業軟體的開源應用
- 開發十年經驗之談:如何構建自己的Java開發體系Java
- 寶寶已卸貨,分享6周抽血測染色體的經驗
- 軟體開發中的DevOpsdev
- 5億個token之後,我們得出關於GPT的七條寶貴經驗GPT
- 軟體開發中的10條最佳指導原則
- 尋找一個有支付軟體開發經驗的外包公司開發支付系統
- 軟體測試如何獲得高薪?高薪
- 開發中的一些經驗總結
- Lotus Notes開發中的14個經驗
- Google 的軟體工程經驗總結Go軟體工程