五件在我靠程式吃飯之前就該知道的事

我的軟體開發生涯開始於大約 15 年以前。但是直到最近 5 年,我才真正地看到它的提高。下面這些事情,我希望在進入軟體開發領域時我已經知道了。如果我早點知道這些事兒,我將會變得更加成功。
評論
評論

本文轉自 外刊 IT 評論

我的軟體開發生涯開始於大約 15 年以前。

但是直到最近 5 年,我的職業才真正大幅長進。

下面這些事情,我希望在進入軟體開發領域時我已經知道了。如果我早點知道這些事,我將會變得更加成功。

軟體開發中沒有「正確的方式」

在我開發生涯的早期,我在學習和爭論上浪費了大量的時間。我錯誤地認為,在軟體開發的諸多方面都存在一種絕對「正確的方式」。

但是,關於軟體開發,幾乎每一件我當時認為是正確的事到頭來都被證明是錯的。

更重要的是,我發現幾乎沒有任何一件事是非黑即白的。在編寫程式和開發軟體的過程中,幾乎所有的決策都是基於當時特定的情形。

我之前已經談過為什麼信仰一種技術對開發人員有害,但是我現在說的這個話題談的不止是一種技術(這麼狹隘)。

沒有通用的最佳實踐,這也是真的。甚至是一些 highy charged 話題。例如,要不要單元測試?敏捷開發和瀑布模型哪個好?這些沒有永遠正確的答案。

在我的職業生涯中,我在「正道」(理想主義)路線的迷宮裡浪費了太多的時間,而不是採用可以幫我走得更遠的「務實」(現實主義)路線。

細讀書不是最佳的學習方式

我一開始學習寫程式和技術知識的時候,我花了太多時間細讀一些關於特定技術的書。

讀書沒錯,但是選擇讀什麼書和讀它的哪一部分非常重要。

比如,我記得我讀過一本非常厚的講 VC++ 的書。(我十分肯定是這本書的更早的一個版本。) 不管怎麼說,這本書是本內容豐富的好書,但是一頁一頁地讀並不是學習 VC++ 最好的方式。

如果我當時先粗略地看看此書的章節,獲得對 VC++ 一些全面的認知,然後再去搞懂其中最最重要的部分,我能學到並記住更多的東西。

如果我當時坐下來,通過實際地做一些東西來練習基礎知識,而不是僅僅讀一下或者過一過書上的例子,我現在會更加成功。你沒有在真正地學一門技術,除非你用它解決了真正的問題。

深入學習一門特定技術是浪費時間

我不僅在「細讀書」上浪費了時間,我在「讀錯書」上也浪費了時間。

我錯誤地相信,從裡到外學習一門特定的技術能很好地推動我的職業生涯。

我花了太多時間讀一些非常專門的技術書,如,ASP.NET 或 Hibernate,而不是讀更多的像《Code Complete》,《Clean Code》,和《Agile Principles, Patterns And Practices in C#》。(BTW,我推薦你去讀所有的這些書,如果你沒讀過的話。)

儘管了解你所使用的技術非常重要,但是成為那個特定技術的絕對專家並不重要。知道確切的 API 調用沒多大好處,你需要的時候可以輕而易舉地查到。

我在太多技術上花了太多時間深入學習,最後這個技術不是死掉了就是我後來放棄不用了。大多數關於這些特定技術的知識最後只代表了浪費掉的時間。

我發現,成為你正在使用的特定的程序語言的專家很重要,因為程序語言方面的知識將影響你很長時間。我仍然百分之百會花時間深入學習 C++,C#和 Java,但是我可能會花較少的時間去學習 C++所有復雜的細節,因為那些細節現在對我幫助不大。

在你的開發生涯中,社群極其重要!

我的生涯早期,我犯了一個錯誤,就是不怎麼去向社群尋求幫助,也不為他人提供幫助。

我一向樂於幫助我的同事,也在不同的工作崗位上也非常善於交際,但活動範圍從來沒有超出過公司。

我在我的生涯中花了大量的時間,試圖在一個特定的公司進行投資,卻沒能將我的時間投資在我參與的軟體開發社群中。

我花了很多時間,做關於技術或者是最佳實踐的內部 presentation,而這些時間原本可以用來製作可以服務於社群的內容和材料,同時也能給我帶來工作上的認可。

我也犯了另一個錯誤,就是認為自己沒什麼有價值的東西去貢獻。

我和很多剛入行的開發者聊過,有時候我覺得,比起我們這些”老油條“,他們有更多的東西去貢獻給社群,因為他們更理解其他初學者蛋疼的問題。

如果我可以重來一遍,我一定會在我的生涯中更早、更多地參與各種會議和使用者群。我會更早地開始寫部落格,並利用我的大部分學習時間去建立專案和資源,去幫助別人而不是只讀書。

參與業餘專案

可能我做的最大的,並且對我生涯影響最大的改變將會是

完全戒掉電視,無盡的任務和魔獸世界(兩個遊戲),並把這部分時間花在一個業餘專案上。

我過去花了相當一部分時間做一些享受性的,但是對我的生活沒有長遠利益的事情。

大約 3 到 4 年前,我已經基本不看電視了,現在我也很少看電影。電視和大部分電影只是一個對時間的巨大浪費,而這些時間你可以用來幹很多有用的事。視頻遊戲很大程度上也是一樣,但至少在視頻遊戲裡,你在積極地做一些事情,而不是被動地吸收一些沒有用的訊息。

我會一直熱愛玩電動遊戲,並且我不認為我會停下來,但是,我真心希望我(之前)把一大部分用來打遊戲看電視的時間花在一個業餘專案上。

慚愧的是,我做的第一個真正的業餘專案是在大約三年前,那時我開始創建我的第一個 Android app。

當你在為別人工作的時候,花時間為自己工作非常重要,不然你就是在為他人建立王國而忽視自己的王國。

我不僅從最近幾年的業餘專案中學到了很多,並且我也從中得到了很多利益。事實上,其中一個,即製作 Pluralsight 課程,是我現在花全部時間在做的。

(本文最初發表在 brotherb 上)

歡迎加入「Inside」Line 官方帳號,關注最新創業、科技、網路、工作訊息

好友人數

Akamai 服務上新,於邊緣處推動快速創新

Akamai EdgeWorkers 為開發團隊提供豐富功能和工具來創建新的微服務,利用 Akamai 提供的 25 萬台分佈式服務器組成的網絡,在邊緣執行安全而快速的計算,並在邊緣暫存內容,以實現快速交付。
評論
評論

在雲計算技術還沒有大規模普及前,絕大部分企業和組織都需要自建數據中心,或通過託管的方式來部署自己的硬體基礎架構,並在此基礎上為員工和客戶提供服務。取決於業務或其他方面的諸多要求,此時需要部署的數據中心可能有很多個,並廣泛分佈在不同地區,藉此為客戶提供流暢的體驗,並透過多個數據中心保障連續性。在發展的過程中,隨著「雲端」的出現,讓各個組織的計算開始集中。

而當在線直播、無人駕駛、智能家電、物聯網等應用開始陸續深入我們的工作和生活,情況又不同了。以往透過雲平台集中運行和服務的模式,因為距離導致的網絡延遲已經對用戶的使用體驗產生極大影響。為了提供更敏捷、靈活、快速、可靠的體驗,企業需要從最貼近用戶的地方提供服務。因此,邊緣計算就成為最有效的解決方法。

透過將數據的收集、分析和處理等工作,由「雲中心」重新分散到最接近用戶的邊緣位置,企業可以就近為用戶提供服務,通過延遲更低的響應打造更出色的用戶體驗。

「無服務器」的出現,帶來計算方式的革新

以前,當組織需要上線一套業務系統時,首先需要採購並部署相應的服務器硬體,並且要負擔服務器日常運維過程中的管理、維護、補丁安裝、配置等繁瑣任務。

上雲前,組織需要在自己的數據中心,以硬體服務器的方式執行這一系列工作;上雲後雖然簡單許多,但依然需要面對雲服務商提供的虛擬服務器,從本質上來看相關負擔仍相當繁重。

無服務器(Serverless)技術的出現,讓組織可以在不需要考慮服務器的情況下,構建並運行由微服務構成的創新式應用程式與和服務。藉此不僅可以省略基礎架構管理任務,還能為幾乎任何類型的應用程式或後端服務構建無服務器應用程序,更方便、靈活地構建出具備極高可用性的應用。

Akamai EdgeWorkers :為創新賦能

Akamai EdgeWorkers 為開發團隊提供豐富功能和工具來創建新的微服務,利用Akamai 超過 25 萬台分佈式服務器組成的網絡,在邊緣執行安全而快速的計算,並在邊緣暫存內容,以實現快速交付。

當開發團隊在邊緣開啟代碼時,他們會將數據、見解和邏輯推送到更靠近最終用戶的位置。Akamai 的高性能、可擴展式實施模型,可確保數據和計算不會被延遲問題困擾,進而避免對數字化體驗產生負面影響。

在該服務幫助下,開發者可直接在 Akamai 的全球分佈式平台上快速、迭代地創建和部署新服務,以解決問題和自定義交付。

長期以來,Akamai 在邊緣計算的創新和成功實施皆具有優勢。自 1998 年起,便開始為 Akamai 內容交付網絡(CDN)的客戶推出自定義交付邏輯,其他里程碑還包括 2001 年的 Edge Site Includes 、2002 年的 Edge Java 以及 2014 年的 cloudlet 應用程式。

目前, Akamai 在全球擁有超過 4100 個入網點,為 EdgeWorkers 用戶提供出色的邊緣基礎架構規模和範圍,開發人員可以在靠近最終用戶和他們的數字化接觸點的地方部署代碼,以實現盡可能低的延遲。EdgeWorkers 同樣獨立於雲,客戶可以選擇利用 CDN 供應商或雲供應商平台上的無服務器計算功能。在 Akamai 幫助下,客戶可以在整個混合雲或多雲環境中部署單一的無服務器計算平台。

更多相關資訊:https://www.akamai.com/solutions/edge

本文章內容由「猿聲串動」提供,經關鍵評論網媒體集團廣編企劃編審。