我給新手程序員的實用建議
做一個高效的、充滿好奇心的問題解決者吧!這會幫助你成為一名成功的程序員。
你是否曾經(jīng)遇到過這樣一種情況:你想解決一個問題,并且你在 YouTube 或 Google 中找到了相關(guān)的教程。嗯,你覺得看會了,可真做起來,卻止步不前,大腦一片空白。你感覺自己每一行代碼都看懂了,可一旦離開了那個教程,就步履維艱。如果你在 HackerRank 或 LeetCode 上看過別人的解題過程,你就能體會到,一個有追求的程序員第一次看到這些挑戰(zhàn)時,他會是何種感受。舉例來說,假設(shè)你正在學(xué)習(xí)一門新語言,在你剛開始理解這門語言的基礎(chǔ)知識的時候,你看了一個教程,摩拳擦掌,結(jié)果發(fā)現(xiàn)自己無法獨立應(yīng)用學(xué)到的知識,這反過來可能會導(dǎo)致你懷疑自己的知識和能力。
把教程付諸于實踐
你應(yīng)該從頭開始嗎?如果你這么做,你可能很快就會發(fā)現(xiàn)自己重復(fù)學(xué)習(xí)了很多次相同的知識點。雖然從頭開始并不一定是種浪費,但是,你該如何變得更高效呢?
死記硬背在編程中完全是行不通的。話雖如此,但你也不能夠忽視熟悉語法的重要性。因為,死記硬背和養(yǎng)成習(xí)慣之間是有明顯區(qū)別的。習(xí)慣是很難打破的。要養(yǎng)成多使用編程語言的常規(guī)語法、函數(shù)、方法、模式、范式和構(gòu)造的習(xí)慣,這樣你才能掌握它。掌握一門編程語言需要大量的創(chuàng)造力和練習(xí)。練習(xí)語法是非常必要的,直到它們能在你的腦海中自然地浮現(xiàn),就像血液在血管里流動一樣。
“問題解決”的工作原理
那么,你該采取什么樣的方案呢?這實際上取決于許多因素。這些因素可以是任何東西,下至技術(shù)限制,上至用戶需要。世界上有無數(shù)的問題,每個問題都有許多解決方式。如何選擇一個最好的?這就需要 “問題解決”(problem-solving)的技巧了。
下面是一個簡單的例子。你需要把兩個數(shù) 相加 ,讓它們等于 6 。顯然,你有多種方式可供選擇:
3 + 3 = 6 或 4 + 2 = 6 或 5 + 1 = 6
同理,如果你需要讓兩個數(shù)字,經(jīng)過一次減法、乘法或除法運算后,得到的結(jié)果為 6 。你仍然有很多選項,包括:
8 - 2 = 6 或 12 / 2 = 6 或 3 * 2 = 6
每種方案都有它固有的限制,且各不相同。當(dāng)你在現(xiàn)實生活中嘗試做出一個高效的方案時,你必須要考慮到所有的限制。這個方案可行嗎?有什么障礙嗎?有可操作性嗎?是否可擴(kuò)展呢?而如何最小化約束,并做出一個最優(yōu)方案,就取決于問題類型和業(yè)務(wù)需要。
練習(xí)很重要
編程的目標(biāo)不僅僅是解決問題。因此,從工程視角理解代碼 如何 工作始終是一個優(yōu)勢。這就是代碼審查在企業(yè)級開發(fā)中發(fā)揮作用的地方。編程的最低要求是具備基本的編碼知識,包括語言的語法、函數(shù)和方法。歸根結(jié)底,“寫代碼”是需要你去 寫 的,所以練習(xí)總是有助于提高你的技能。流暢的寫作和復(fù)雜方案的開發(fā)都來自于持續(xù)的學(xué)習(xí)和訓(xùn)練。
學(xué)習(xí)編碼
我撰寫和分享這篇文章,是為了鼓勵新程序員去探尋自己的內(nèi)心,尋找那個“優(yōu)秀的問題解決者”。請不要停止相信自己。
要成功編碼,你需要培養(yǎng)許多習(xí)慣。下面是我在學(xué)習(xí)編碼時保持高效的方法:
一個包含語法、方法和函數(shù)速查手冊 總能應(yīng)付不時之需。
將問題分解成更小的部分,便于追蹤。
嘗試?yán)斫獯a運行的核心概念。
構(gòu)思解決方案時,大可發(fā)揮你的創(chuàng)造力 —— 但剛開始還是要注重基礎(chǔ)。
在練習(xí)時,創(chuàng)建盡可能多的應(yīng)用和組件。
永遠(yuǎn)不要從 Stack Overflow/Exchange 等開放平臺上復(fù)制/粘貼代碼,特別是在不了解上下文的情況下。
跟著教程做了一遍后,嘗試從頭開始構(gòu)建所有內(nèi)容。即使你只能獨立完成一半,那也仍然是一個成就。
祝我們所有人好運!