programming-math

需要懂數學才能做程式設計嗎? 不一定需要。即使在學校的數學成績不好,你仍然可以成為一個優秀的程式設計師。 我自己從事程式設計已經有20年了,從來沒有因為忘記需要的數學知識而去翻數學書。我在高中和大學時學習了很多數學,那些內容非常高深抽象,甚至我現在都忘記了學習的目標是什麼(除了通過考試)。 有一種普遍的觀點是,要成為一個優秀的程式設計師,你必須擁有出色的數學能力。這種觀點可能是因為最早從事計算機編程的人大多數是數學家,主要是因為當時還沒有“計算機編程師”的專業學校。當然,計算機科學或計算機工程專業涉及許多數學知識,但這些對實際應用來說並非必須。計算機科學學位中90%的內容都是非常有趣但鮮有實用價值的。你需要數學來理解底層理論,但在日常編程中並不是必需的。 我的論點基本上是針對網頁開發這個領域而言。當然,有些編程工作需要數學。例如,在三維渲染引擎、地理信息系統應用、密碼學/區塊鏈/人工智能/機器學習等領域工作所需的數學知識肯定是很多的,但這些都是非常特定的數學知識,並不是在學校裡教授的。任何涉及底層圖形或遊戲編程的工作也需要數學知識,你需要在嘗試進行這方面工作之前先學習相應的數學知識。數學也對理解算法的複雜度有所幫助,但在最初幾年的編程中,你不太可能需要創造出新的算法。 然而,你需要擅長解決問題。我認為學校數學教育教會你如何解決問題,但其他愛好,比如玩數獨也同樣能訓練你解決問題的能力。 當然,你需要掌握一些基本的數學概念,如微積分、代數和邏輯,但只是一些基礎知識罷了。你不需要了解複數、概率、方程、圖形、指數與對數、極限、導數、積分、微分方程等任何複雜的知識。 不要聽信那些門戶守衛的話:如果他們告訴你因為數學不好,你就不能成為程式設計師,那就不要理他們。你總是可以在途中學到你需要的一切。保持學習的態度比已經知道一切更加重要。 再次強調,我講的是網頁開發,而不是需要數學知識的圖形學或特定應用領域。

學習如何找解決方案和尋求幫助

作為一名開發人員,你需要培養的一項特殊技能是如何找到解決方案,以及在自己找不到解決方案時,如何尋求幫助。 作為開發人員,最好的技能之一就是知道如何解決問題。 你永遠不會遇到一個完全瞭解某項技術的開發人員。好吧,也許在花費大量時間學習其所有細節後才有可能。 但是,當你向某人請教一個略有不同的話題時,他們可能沒有答案。比如,他們對React了如指掌,但當你想知道如何使用React構建iOS應用程序時,他們可能完全沒有做過任何iOS開發。 這時,那個人就需要尋找答案。 你如何通過編程問題找到答案?你如何確定該如何正確地做某事? 這是一種你可以掌握的技能,就像任何一種技能一樣。很多時候,我收到的問題都可以通過一次谷歌搜索便能解答,對我來說這很明顯,因為我已經習慣了這樣做。所以我只需在谷歌上搜索該問題,然後將包含答案的頁面發送給對方。 使用谷歌是完全正常的。每個人都在使用它。這不是“作弊”。我們不是在學校,你被灌輸了從其他人那裡抄襲是不好的觀念。人們在線上分享他們的解決方案,這樣其他開發人員在未來就不用浪費時間了。 這也是我在我的博客中做的事情。 作為一個開發人員,你所擁有的最高級技能是快速找到解決方案,而谷歌是最好的工具。 學會如何正確使用谷歌會讓事情變得更快。例如,如果你想知道如何在JavaScript中獲取數組的第一個元素,你可以使用查詢 javascript get first item array 或 get first item array javascript。谷歌非常聰明,所以即使只是簡單地輸入 how to get the first item of the array in JavaScript?,就好像你正在大聲地說出來一樣,它也能理解你的意思。 有時你會得到太多的搜索結果。在這種情況下,使用谷歌的“-”運算符將刪除包含特定關鍵詞的搜索結果。 例如,how to loop array javascript -while 將顯示出展示如何在JavaScript中循環數組的頁面,但不包括while循環。 你會發現你自己很多時候都在搜索錯誤信息。假設你在React應用程序中遇到了cannot update a component while rendering a different component的錯誤。 你可以使用雙引號搜索該具體的短語。在谷歌中輸入它。有引號的搜索會得到600個結果。沒有引號,會得到3.25億個結果。這樣做有助於你集中注意力,避免看到只是無用的結果。 谷歌只是一個可以快速找到你需要的東西的工具,但谷歌給你的是其他人創建的頁面。 當然,你所找到的具體位置會因語言和框架而異。 有一些涵蓋幾乎所有內容的網站,比如StackOverflow。這是一個為開發人員而設的問答網站,它將出現在你搜索的90%情況下。通常,我遇到的問題以前已經解決過了,而且過去可能有很多方案。 你需要關注的一點是答案是否已經過時。有時,2012年的答案可能不再有效。技術發展得很快。 其他時候,你可能會找到個人開發者撰寫的個人博客。我強烈建議你創建自己的博客,分享你找到的解決方案。如果你花30分鐘查找如何以一個很酷的方式處理數組,那麼可能有其他開發者也遇到了同樣的問題。 如果你的博客文章能幫助他們更快地解決問題,那就是你得到好的因果報應。 有時谷歌並不能提供所有的答案。對於這種情況,每個框架/庫/工具都會有各自的交流平台。有時候是一個論壇,有時候是一個聊天工具,有時候是GitHub。 如果你在使用的技術有官方網站,尋找“社區”鏈接。那裡通常會有幫助。溫和地提問,你會得到答案。在StackOverflow上提問也是一個好主意。 你也可以在你所在的公司尋求幫助。更資深或專業的開發人員很樂意幫助你克服困難。不要害怕提問。對一個經驗老到的眼光來說,可能只需要2秒鐘就能解決你幾小時的問題。

產品/市場適配

您的產品必須滿足一個細分市場的需求,解決一個問題。 任何人都可以製作一個應用程式,撰寫一本書,或者製作一個WordPress主題或外掛程式。事實上,每一樣我提到的東西都有數以萬計的產品在市面上販售。它們都成功嗎?絕對不是!許多產品因為商業上的失敗而被廢棄,它們沒有取得足夠的市場關注。 我們可以說,只有1%的產品非常成功,另外9%處於既不具有超高成功的範疇,也不屬於失敗的範疇,算是一種適度的成功。 這符合著名的帕累托原則,即90/10。 帕累托原則由Vilfredo Pareto提出,他是一位生活在1800年到1900年之間的義大利工程師和經濟學家,在世界各地都因其發現一種規律而聞名,該規律在許多不同領域中以許多不同的形式出現: 大部分的結果是由少數原因所引起的 例如: 80%的財富由20%的人口擁有。 20%的銷售人員賣出了80%的銷售額。 80%的倉庫價值由總物品數量的20%所決定。 20%的產品在市場上占據了80%的營收。 80%的產品成功來自於具有合適的產品/市場適配。 馬克·安德森尼斯將產品/市場適配定義如下: 產品/市場適配意味著你的產品在一個好市場中,並能夠滿足該市場的需求。 您的產品必須滿足一個細分市場的需求,解決一個問題。 除非它們是與客戶溝通的利益的一部分,技術、細節以及實現方式對於任何人都沒有興趣,如果產品不能解決一個值得解決的問題,且如果沒有任何市場活動可以讓產品被目標市場所知道。 給程式設計師的警告:不要太追求潮流。 在選擇全新的程式設計技術或語言來創建您的產品時要小心,因為您將不得不花費大量時間學習它,您不了解它的限制和隱患,而且您會把焦點從產品轉移到實現細節上,而這些對於除了您之外的任何人都不重要。 如果您使用TypeScript或ClojureScript來製作應用程式,而不是使用JavaScript,對於任何人來說都沒有意義。如果您花了兩天時間在Node.js中調試一個不起作用的功能,但您不知道原因,也許您應該像平常一樣使用Python。