1. 程式人生 > >在程式設計師圈子中,我只是一名平庸的開發者

在程式設計師圈子中,我只是一名平庸的開發者

開發十年,就只剩下這套架構體系了! >>>   

有一天,我看到一句話,“我只是一個頗為平庸無趣的普通人”。每一句話都需要放在一定的語境中理解。說話者也許輕鬆自在,用這句話來幽自己一默;也許他的生活平靜平凡,用這句話來自嘲;也許他自信心不足,那這句話就是情緒灰暗低落的表達。

撇開題目不談,我個人認識一些非常有才華的開發人員,他們可以一帆風順地創建極好的軟體。正是這些天賦人士,使得外行人對我們這個行業充滿了很高的期望。但我要說的一個可悲的事實是:並非每個人都是忍者/大師/明星開發者。
我就不是這些閃耀的新星,我只是一名平庸的開發者。如果你也不是天才玩家,那麼本文將指導你如何在這個行業中生存下去。

最簡單的事情——只要google一下

  • 我記不了很多東西。像標準庫中的函式和方法、引數位置、軟體包名稱,樣板程式碼等等,都在我腦容量之外。

  • 所以,我必須使用google搜尋。我每天都這樣做。我也一直在重複使用舊專案的程式碼。有時我甚至從StackOverflow或Github複製貼上答案。是的,我的開發其實可稱之為:StackOverflow驅動開發。

  • 但我並不孤單。許多其他開發人員也這樣做。有一個受眾面很廣的twitter討論就是由Ruby on Rails的建立者所啟動的。

  • 那麼,為什麼一開始會認為這種行徑是不好的呢?因為它有若干缺點:

  • 會導致你複製到糟糕的設計決策或易受其他人攻擊的程式碼

  • 會形成一種依賴心態:要是我們不能google到內容,那麼只能向人求助了
    沒有網就不能工作

  • 但是,我不認為這些是大問題。它甚至可以作為是你的祕密武器。我有一些建議可用於減少其負面影響。

生存指南:

  • 使用IDE來獲得自動完成和建議,所以你不必google程式語言的基礎內容;
    記住你曾解決過這個問題的地方(而不是如何解決的)。這樣你便可以隨時在那裡找到解決方案;
    所有貼上到專案中的程式碼你稍後都應該進行分析、重構和審查。這樣我們在快速提供解決方案的同時也不會損壞專案。
    一切保持簡單明瞭

  • 我們說什麼,機器就做什麼。即便是錯的,它們也毫不遲疑。所以,軟體開發中的主要問題不是機器,在於開發人員的心智慧力。而這玩意提升的空間是非常有限的。所以,我們——作為平庸的開發人員——不能將有限的腦力浪費在建立複雜的抽象、模糊演算法或不可讀的長程式碼塊上。你需要保持一切簡單明瞭。

  • 但是,我們怎麼判定程式碼是簡單還是複雜?我們使用WTFs / Minute方法來衡量程式碼質量。

這個原則很容易理解。每當你在程式碼中發現一些你不明白的東西時——哦,這太複雜了。怎麼做呢?

  • 重寫,使設計更乾淨
    提供文件
    給最棘手的部分添加註釋。但請記住,註釋應該描述的是程式碼本身
    如何從頭開始保持簡單明瞭:

  • 對變數、函式和類使用正確的名稱
    確保程式的每個部分只做一件事
    純函式優於正則函式
    正則函式優於類
    僅在強烈需求的情況下使用類
    不自信的我
    一些開發人員會證明自己可以提供高質量的程式碼。請看圖中的這位女士:阿波羅登月計劃的首席軟體工程師Margaret Hamilton。那幾乎有她人那麼高的是什麼呢?好吧,那正是她為登月任務編寫的程式碼:

但是,每當我編寫任何程式碼時——我都不自信。即使是專案最簡單的部分,我也可以把事情搞得一塌糊塗。搞糟的原因包括:

  • 語言錯誤
    邏輯錯誤
    設計錯誤
    樣式錯誤
    安全錯誤
    WTF錯誤(我向來最為喜歡的!)

  • 關於“學習如何編寫沒有bug的程式碼”的魔法書是不存在的。因為所有軟體都有bug——除了這個框架之外。遇到bug我們就應該處理掉。

  • 關鍵要點是:每個人編寫的程式碼都不應該帶有明顯的錯誤。對的,至少,我們應該朝著這個目標去做。但是我是如何保護我的專案免受我的摧殘呢?方法很多。

生存指南:

  • 編寫測試。編寫很多測試。從整合測試到單元測試。在每次pull請求前在CI中執行測試。這可以避免一些邏輯錯誤;
  • 使用靜態型別或可選的靜態型別。例如,我們在python中使用mypy,在javascript中使用flow。積極作用:更清潔的設計和“編譯時”檢查;
  • 使用自動樣式檢查。每種語言都有很多樣式檢查器;
  • 使用質量檢查。有些工具在你的程式碼庫上執行一些複雜的啟發式演算法來檢測不同的問題,比如這個程式碼行內有太多的邏輯,這個類是不需要的,這個函式太複雜了;
  • 審查你的程式碼。在合併為master之前對其進行審查。以及合併後的某個時間也是如此;
    付錢讓其他人來稽核你的程式碼。此手段可以產生巨大的積極影響!因為如果是陌生的開發人員來檢視你的程式碼,他們更容易發現不一致和糟糕的設計決策。
    不僅適用於我

  • 在我的團隊開發出我們的第一個大型軟體專案時,我們將其作為java原始檔釋出。然而,它無法在目標伺服器上編譯。這距離需要提交給客戶只有若干小時了。這是一個巨大的失敗!最後我們用盡辦法終於能夠啟動並運行了,但不可否認這真的是一次刻骨銘心的體驗。

  • 發生這種情況是因為構建管道中存在眾多配置和複雜性。而我們無法妥善管理這個系統的複雜性。所以,從那一天起,為了減少這種複雜性,我嘗試在隔離的環境中打包我的程式。並且在實際部署發生之前在這個環境中測試它們。

  • 在docker(通常還有容器)崛起的近幾年,事情變得簡單起來。docker允許你在相同的隔離環境中執行開發、測試和生產。所以,你永遠不會錯過任何重要的事情。

  • 那麼你會怎麼做?說說我自己,我在建立伺服器、初始配置或連線的時候總是會忘記一些事情。因為有這麼多需要記住的事情!幸運的是,這些我們都可以自動化。有很多不同的工具可以自動化部署過程,這些工具厲害極了,如:terraform,ansible和packer。閱讀工具資訊,找出實際需要哪一個用於任務。

  • 我也嘗試儘快建立CI / CD。這樣,如果我的構建在測試或部署中失敗,那麼就會有報告發我。

生存指南:

  • 自動化用於部署的任何內容;
    使用docker進行應用程式開發、測試和部署;
    使用部署工具。
    應用程式部署後,我仍然不自信
    終於,我的應用程式已經進入了產品階段。它可以工作了。我可以休息休息,應該不會出什麼問題了。等等,不!一切都崩潰了。是的,我沒有說錯:一切。

實際上,有一些工具可以使得查詢和解決現有問題更加容易。

  • Sentry。當你的任何使用者發生錯誤時——你將收到通知。幾乎綁定了所有程式語言;
    使用不同的服務和工具將多個程序和伺服器的日誌收集到一個地方;
    伺服器監控。這是你可以為CPU,磁碟,網路和記憶體配置顯示器的地方。你甚至可以在使用者實際破壞你的服務之前發現需要增加的時間
    簡而言之,我們需要監控生產中的應用。我們有時使用所有這些工具,有時只使用最需要的部分。

學無止境

需要學習的東西是無窮的。如果我們想編寫出好的軟體,那麼我們需要不斷地學習怎麼做。沒有捷徑也沒有魔法。每天進步一點點,就會越來越好。

總之,我們需要理解兩件基本的事情:

每個人都會遇到問題。關鍵是我們得對這些問題做好準備;
我們可以將問題的源頭控制到一些可接受的水平。
這些與你的心智慧力或心態無關。

“金三銀四”來臨,我這邊總結出了網際網路公司java程式設計師面試涉及到的絕大部分面試題及答案做成了文件和架構視訊資料免費分享給大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術資料),希望能幫助到您面試前的複習且找到一個好的工作,也節省大家在網上搜索資料的時間來學習,也可以點贊和關注一下以後會有更多幹貨分享。QQ群號:603619042

相關推薦

程式設計師圈子只是平庸開發者

開發十年,就只剩下這套架構體系了! >>>   

平安產品經理與程式設計師幹架都說了不要惹

8月2日,一段“辦公室打架”視訊訊息在網路流傳,並引起熱議。該訊息稱“據稱某網際網路公司產品經理提了個要求,要求APP開發人員可以做到根據使用者的手機殼來改變軟體主題顏色,然後,然後就幹起來了”。產品經理和程式猿是天敵啊,說了不要惹,不要惹,他們會動刀的。 以下內容可能只有程式猿才能看懂,

關於網上流傳著各種黑程式設計師的段子只能說你開心就好

“關於程式設計師日常的各種精彩瞬間,你都經歷過嗎? 小板凳做穩了嗎?開車。。。 溫馨提示:流量用不完的土豪觀看模式請隨意切換 當產品汪過來提需求的時候: 2.當看產品需求文件的時候: 3.當高中同學知道我是個程式設計師的時候: 4.開發向運維要root密碼的時候: 5.

程式設計師被辭退公司給15天帶薪時間找工作網友評論炸鍋了

對於職場人來說,最難過的事情無異於被公司辭退了,特別是臨近過年的時候,這就意味著不僅拿不到年終獎,也很難在短時間內找到下一份工作,而一般來說,如果員工被公司辭退,公司理應提前30天告知員工,讓員工找好下份工作。 最近有一位在原單位工作了1年半的女程式設計師在網上曝出自己的一段經歷,聲稱自己

前端程式設計師的趣事也不知道這程式碼是幹嘛的~

首先我們來看下HTML的4種黑法 HTML確實是一門程式語言啊 這個黑的太過分了吧! 小姑娘我被你的外表欺騙的好慘 ❷程式設計使我快樂 程式設計第一步 我好像走偏了路 ❸程式設計使我痛苦 我也想知道這是幹嘛的

程式設計師到CTO的跨界學習經驗分享!

從借鑑開始學習 我先從單一一個技能學習主線路,開啟今天我的跨界學習經驗分享! 任何一門程式語言,都離不開上圖的學習步驟和軌跡。 我知道部分同學喜歡跨越式學習,先掌握高階的內容,然後再開始學習基礎的部分。先把難度較大先攻破,然後再開始接觸簡單的和基礎部分? 程式

《你好哇程式設計師》—教你如何成為牛X的程式設計師

關注安大哥應該是從《漫談程式設計師系列》部落格開始,他的部落格語言幽默風趣,邏輯清晰,而且經常配以豐富的圖文,非常直觀和容易理解。 再後來瞭解到,安大哥剛好與我一樣也是從事C++開發,就又多了一個關注

程式設計師面試這5點低階錯誤不要犯

關注「實驗樓」,每天分享一個專案教程   跳槽旺季到了,最近你面了幾家公司了?都拿到多少offe

大家好程序員這就是2017年的……

bnt stk png jpeg 願望 手機 copy pbr 分享圖片 註:本文系轉載。 十年生死兩茫茫 寫程序,到天亮 千行代,Bug 何處藏 縱使上線又怎樣 朝令改,夕斷腸 領導每天新想法 天天改,日日忙 相顧無言惟有淚千行 每晚燈火闌珊處夜難寐,加班忙

分享java程式設計師是如何走向巔峰成為阿里的P8高階架構師

具有一到五年開發經驗的程式設計師 需要學習內容很多 JVM/分散式/高併發/效能優化/Spring MVC/Spring Boot/Spring Cloud/MyBatis/Netty原始碼分析等等等 01、透徹理解Tomcat原理手寫動靜態資源的實現 02、分享能源領域的分散式監測系統

java程式設計師是如何走向巔峰成為阿里的P8高階架構師!!!

具有一到五年開發經驗的程式設計師 需要學習內容很多 JVM/分散式/高併發/效能優化/Spring MVC/Spring Boot/Spring Cloud/MyBatis/Netty原始碼分析等等等 01、透徹理解Tomcat原理手寫動靜態資源的實現 02、分享能源領域的分散式監測系統架構

其實軟體工程師

手機突然震動了下,順手拿起一看,是一條簡訊,赫然寫著“ 您好,這是您的本期信用卡賬單,請點選查收 ”。 這應該是我的第20期賬單了吧,這張招行的信用卡是剛畢業那年的9月份辦理的。依稀記得看到周圍的同學使用iPhone的人數愈發氾濫,自己由於手頭的工資基本剛夠房租、伙食費、以

Expo大作戰(三十)--expo sdk api之Payments(expo的支付),翻譯這篇文章傻逼了完全不符合國內用戶負責翻譯大家可以略過!

span 依賴 require 查看 例如 rdf Nid tail only 簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網 我猜

今天算是的第一個10.24程式設計師節吧記錄由VGG16復現過程初見的用法、函式等以此起步。

1.a[len(a):len(a)]=[] a=[] a[len(a):len(a)]=[]可以用來擴充套件list,類似append,但是append,又類似於”整體加入“ a=[8,9] print(a) a[len(a):len(a)]=[1,2,3] print(a,) a

程式設計師的煩惱反正了!!!

今天我們就來談談程式設計師的四大煩惱,如果你是程式設計師,你又佔了哪幾條呢?   第一條:荒誕的需求 不得不說程式設計師的天敵就是無盡的需求,最恐怖的事情莫過於當你開發完的時候,客戶給你提出新的需求,這個時候真是想XXXX(此處省略100W個字)  

題目:立志成為好銷售萬萬沒想到還是走了程式設計師的路原因竟然是....

        【程式設計師養成第一步】         【叢立志當一名銷售到決定從事程式設計師的蛻變】         學習生活中,我閱讀了數不清的推送、博文,看了數不清的作者的故事,精彩的各種推送,以及各類技術大神的解答貼,為我的求學之路提供了技術上的幫助以及精神上的鼓

#浙大畢業生3萬月薪程式設計師不做去做網約車司機:高興樂意

浙大畢業的高材生放棄程式設計師高薪去做網約車司機:昨天打網約車回家,遇到一位浙大畢業的程式設計師,放棄了3萬一月的程式設計師工作,成了專職的網約車司機,1萬塊錢一個月,圖的是自由自在,並稱有錢難買我開心,各位怎麼看? 這裡的一萬塊錢指的是毛利潤,扣除車輛運營成本後的收入,即使如此,這

領導週末臨時叫程式設計師處理bug程式設計師是來上班的不賣身!

程式設計師是吃青春飯的行業嗎?這個問題放在國內,很多人都會表示認同,君不見,很多網際網路企業招聘程式設計師,年紀三十多歲的一般就不考慮了,比如華為,前段時間就盛傳清退35歲以上的員工,雖然沒有得到官方證實,但空穴不來風。華為好歹設了一個35歲的標準,可是近日一名網友的爆料卻讓更多的程式設計師顫抖:一

程式設計師相親失敗因請對方吃肯德基而被嫌棄最後被怒刪

今天看到一個有趣的話題,一個粉絲投稿: “我是程式設計師,今天相親時被對方嫌棄了,最後她刪了我”。 樓主男生,第一次見面時請對方吃肯德基,女生吐槽了他很多,最後刪了他···看看他倆的聊天記錄,你們品品。。。 以下是聊天截圖: 小編看完有點不想吐槽。。。

“刷波” 程式設計師面試題掌握八成便可BATJ試~

最近看見了很多程式設計師成功入的BAT,小編這裡在網上搜集了一些國內一線網際網路公司的面試題和麵試技巧,特此整理分享給需要的技術人員,看你和BAT之間差了多少!    阿里巴巴   根據部分網友的反饋,阿里的面試共分為五輪,前兩輪均為電面(電話和視訊),四輪技術一