本文爲譯文,可能與原作有所差異!
總的來說,科技發展的迅速是一件令人興奮的事情。但如果站在一個技術開發者的角度去看的話,反而是一件心累的事兒,因爲想要跟上科技更新的腳步並不是一件容易的事。我是做Android開發的,就那Android來說吧!各種各樣的開發框架變得越來越流行,所以大大小小的相關創新一直是層出不窮的,它們相互競爭,最後淘汰掉落後的那個。
“你知道推出了MVP開發模式嗎?你不知道 MVC 經過時了嗎?最近連 MVVM都出了呢。”
“你覺得 rxjava +retrofit+MVP開發模式怎麼樣?”
“你知道 插件化開發模式嗎嗎?還有組件化開發?”
“還有 熱修復..”
編程系統總是不斷地更新換代而且這種速度越來越快了。
甚至很多高級軟件開發工程師都因這種進步而感到 “ JavaScript 式疲勞” 。若連他們束手無策的話,還有誰可以阻止那些追求速度的工廠,叫停那些頻繁進行技術更新的行動呢?
深呼吸……
要知道,早在1975年,當《人月神話》的作者 Frederick Brooks 在撰寫這本著作時,就已經在書中論述過“程序員間的合作”。不管人們信不信,但他在書中所提到過的內容確實都幾近現實。
實際上,《人月神話》這本書是 Brooks 在進行 ALGOL (算法語言)和 OS/360 (360系統)的工作的情況下,同時兼顧寫作完成的。而這兩門技術正是如今 360 軟件系列的最原始版本。
所以,令程序員頭疼的問題出現了轉折的餘地。在現在的最新的技術中,一些原始存在着的部分並沒有被徹底改動。
絕大多數新程序語言及其框架結構都只需要改變編程核心思維,然後用各種不同的方法來實現它們。
也就是說,所有我們覺得龐雜的編程思維,其實就像電視劇 The A-Team(天龍特攻隊)中的任意幾集一樣,也只是吸收了最原始版本的幾縷精華而已。於我個人而言,原始版本纔是稱得上是最佳的創作。
一個新的電影版的 The A-Team (天龍特攻隊) 的話,其實你可以猜到接下來會上演什麼橋段了,例如:
-
T 打算拒絕登上飛機。
-
T 將會因爲喝了一個空乘給的牛奶而暈倒。
-
HM Murdock 將會把機組人員趕走。
-
那些壞人將會得到應有的懲罰。
同一個電影的不同版本都會對一些細節做稍稍改動,所以想要滿足對其電影版變化的期待感,其實只需看多幾個版本不同的電影就可以了。
同樣的道理,不同的編程語言可能會有一些句法的不同和其他細微差別,但是總體上是極其相似的。
大局觀在不同的語言中都是有效的
例如,要理解 Ruby ,你需要理解如何使用面向對象的原則來解決問題。如果你看看其他編程語言,比如 Java、C ++、C# 和 Swift ...它們都是面向對象的!還有 Python ?你猜對了!它也是面向對象的編程語言。
同樣的概念也適用於繼承。
編程的基礎技能不一定是華而不實的。而且他們也不會有很多變化。這是個好消息!
這意味着編程技能,如...
-
學習如何使用單個函數調用將大型複雜問題分解成更小的、更易於管理的問題。
-
參考單一職責原則,將類拆分爲多個類
-
調研編程問題,以瞭解其他人是否找到了解決方案。
把你的精力集中在下面的事情上:
-
學習如何分解問題
-
工作在一個敏捷團隊中
-
掌握大局觀
如果你做了所有這些,你將可以使用任何編程語言來構建真正的項目了。
不要陷入無盡追逐新的看起來有價值的東西
試着去學習全部是很吸引人的一件事兒……不應該僅僅停留在理解事物的表面層次
你可以選擇廣泛地涉獵,也可以專研某一項事物,但是,你不能兩者皆得。
如果你選擇花費大量的精力在某個特殊的工具或者某個框架的時候,你會發現這些經歷會對於你學習其他的語言或者框架會很有幫助。
某種特別的技術最酷的方面不一定是它最重要的地方
如果你去一些黑客新聞網站,你會發現很多尖端的技術。
如果你正在尋找如何闖入網絡開發的領域,你應該去學習所有的包括像 Elixir 或者 Rust 那樣的尖端技術嗎?
也許沒必要……
學習一個可能沒有足夠大的羣體的東西可能是不切合實際的事情。因爲你會失去很多大量人們在學習過程中總結的經驗。
相反的,選擇一個已經被很多信息證實過的技術然後學習那門語言裏的基礎知識是更可行的辦法。
試想一下:
你認爲 傑森馬耶茲、Lady Gaga、鮑勃馬利、艾爾頓·約翰 他們的共同點是什麼?答案可能比你想像的要多。
如果你聽 Axis of Awesome's Four-Chord Song, 你會發現所有的現代流行樂曲,即使來自於徹底不同風格的樂隊都遵循着類似的模版……舉個例子,如果你用標準的四和絃,那麼很多流行樂曲都可以融入其中。
以上的道理與學習編程語言和框架是一樣的。
一旦你學會了一到兩種語言,再掌握其他語言並不是特別困難。不同的語言有着不同的特點,當你熟練運用它們時,你就會欣賞不同語言本身的優缺點。
在你職業生涯早期真正掌握基礎知識很重要
如果你只是想成爲一名專業的開發者,專注於不會改變的東西即可。
我最近寫了一篇關於我如何在幾乎沒有任何 Web 開發經驗的情況下被聘爲 Web 開發人員的文章。我被僱用,是因爲我的編程基礎非常強大,即使我沒有豐富的具體某種語言或框架的經驗。
如果你採取這種心態,並專注於將複雜的問題分解成更容易管理的問題,那麼你將學會如何保持與程序員的相關的所需要的技能,即使一切都在變化。
所以如果你害怕做出錯誤的決定,請深呼吸一下。
編程的基礎知識將適用於任何編程語言、框架或心態。
選擇語言,學習,然後真正掌握它。在此過程中,你將掌握編程的基礎知識,並能夠將其應用於任何其他語言或框架。
大家都有了相同的教程,但是人和人之間的區別在於:別人有顆更強大的內心,可怕的是比你聰明的人比你還要更努力!!
當你下定決心,準備前行的時候,剩下的只有堅持了。。。