總的來說,科技發(fā)展的迅速是一件令人興奮的事情。但如果站在一個技術開發(fā)者的角度去看的話盒揉,反而是一件心累的事兒,因為想要跟上科技更新的腳步并不是一件容易的事兑徘。Javascript 就是一個典型的列子刚盈。Javascript 變得越來越流行,所以大大小小的相關創(chuàng)新一直是層出不窮的挂脑,它們相互競爭扁掸,最后淘汰掉落后的那個。
“你知道 Angular1 推出了嗎最域?你不知道 Angular2 已經過時了嗎谴分?最近連 Angular4 都出了呢《浦”
“你覺得 Ember 系統(tǒng)怎么樣牺蹄?既然它的程序被重寫了,那 Ember2 是不是更好用了薄翅?”
“你知道 React 系統(tǒng)嗎沙兰?有哪些是一定要掌握得操作啊翘魄?怎樣更新系統(tǒng)岸μ臁?”
“還有 WebPack ...”
編程系統(tǒng)總是不斷地更新?lián)Q代而且這種速度越來越快了暑竟。
甚至很多高級軟件開發(fā)工程師都因這種進步而感到 “ JavaScript 式疲勞” 斋射。若連他們束手無策的話,還有誰可以阻止那些追求速度的工廠,叫停那些頻繁進行技術更新的行動呢罗岖?
深呼吸……
要知道涧至,早在1975年,當《人月神話》的作者 Frederick Brooks 在撰寫這本著作時桑包,就已經在書中論述過“程序員間的合作”南蓬。不管人們信不信,但他在書中所提到過的內容確實都幾近現(xiàn)實哑了。
實際上赘方,《人月神話》這本書是 Brooks 在進行 ALGOL (算法語言)和 OS/360 (360系統(tǒng))的工作的情況下,同時兼顧寫作完成的弱左。而這兩門技術正是如今 360 軟件系列的最原始版本蒜焊。
所以,令程序員頭疼的問題出現(xiàn)了轉折的余地科贬。在現(xiàn)在的最新的技術中泳梆,一些原始存在著的部分并沒有被徹底改動。
絕大多數(shù)新程序語言及其框架結構都只需要改變編程核心思維榜掌,然后用各種不同的方法來實現(xiàn)它們优妙。
也就是說,所有我們覺得龐雜的編程思維憎账,其實就像電視劇?The A-Team(天龍?zhí)毓リ牐┲械娜我鈳准粯犹着穑仓皇俏樟俗钤及姹镜膸卓|精華而已。于我個人而言胞皱,原始版本才是稱得上是最佳的創(chuàng)作邪意。
所以如果你正在觀看一個新的電影版的?The A-Team?(天龍?zhí)毓リ? 的話,其實你可以猜到接下來會上演什么橋段了反砌,例如:
T 打算拒絕登上飛機雾鬼。
T 將會因為喝了一個空乘給的牛奶而暈倒。
HM Murdock 將會把機組人員趕走宴树。
那些壞人將會得到應有的懲罰策菜。
同一個電影的不同版本都會對一些細節(jié)做稍稍改動,所以想要滿足對其電影版變化的期待感酒贬,其實只需看多幾個版本不同的電影就可以了又憨。
同樣的道理,不同的編程語言可能會有一些句法的不同和其他細微差別锭吨,但是總體上是極其相似的蠢莺。
大局觀在不同的語言中都是有效的
例如,要理解 Ruby 零如,你需要理解如何使用面向對象的原則來解決問題躏将。如果你看看其他編程語言锄弱,比如 Java、C ++耸携、C# 和 Swift ...它們都是面向對象的棵癣!還有 Python 辕翰?你猜對了夺衍!它也是面向對象的編程語言。
同樣的概念也適用于繼承喜命。
編程的基礎技能不一定是華而不實的沟沙。而且他們也不會有很多變化。這是個好消息壁榕!
這意味著編程技能矛紫,如...
學習如何使用單個函數(shù)調用將大型復雜問題分解成更小的、更易于管理的問題牌里。
參考單一職責原則颊咬,將類拆分為多個類
調研編程問題,以了解其他人是否找到了解決方案牡辽。
更具體的事情就像...
Ruby on Rails 如何使用 Model/View/Controller 模式來分離 Web 應用程序的職責喳篇。
...也可以應用于其他語言和框架! 例如态辛,ExpressJS 是另一個流行的 Web 框架麸澜。你可以使用與在 Ruby on Rails 中遵循的完全相同的模式來拆分這些應用程序(如果需要的話)。
把你的精力集中在下面的事情上:
學習如何分解問題
工作在一個敏捷團隊中
掌握大局觀
如果你做了所有這些奏黑,你將可以使用任何編程語言來構建真正的項目了炊邦。
不要陷入無盡追逐新的看起來有價值的東西
試著去學習全部是很吸引人的一件事兒……不應該僅僅停留在理解事物的表面層次
你可以選擇廣泛地涉獵,也可以專研某一項事物熟史,但是馁害,你不能兩者皆得。
如果你選擇花費大量的精力在某個特殊的工具或者某個框架的時候蹂匹,你會發(fā)現(xiàn)這些經歷會對于你學習其他的語言或者框架會很有幫助蜗细。
某種特別的技術最酷的方面不一定是它最重要的地方
如果你去一些黑客新聞網(wǎng)站,你會發(fā)現(xiàn)很多尖端的技術怒详。
如果你正在尋找如何闖入網(wǎng)絡開發(fā)的領域炉媒,你應該去學習所有的包括像 Elixir 或者 Rust 那樣的尖端技術嗎?
也許沒必要……
學習一個可能沒有足夠大的群體的東西可能是不切合實際的事情昆烁。因為你會失去很多大量人們在學習過程中總結的經驗吊骤。
相反的,選擇一個已經被很多信息證實過的技術然后學習那門語言里的基礎知識是更可行的辦法静尼。
試想一下:
你認為 杰森馬耶茲白粉、Lady Gaga传泊、鮑勃馬利、艾爾頓·約翰 他們的共同點是什么鸭巴?答案可能比你想像的要多眷细。
如果你聽 Axis of Awesome's Four-Chord Song, 你會發(fā)現(xiàn)所有的現(xiàn)代流行樂曲,即使來自于徹底不同風格的樂隊都遵循著類似的模版……舉個例子鹃祖,如果你用標準的四和弦溪椎,那么很多流行樂曲都可以融入其中。
以上的道理與學習編程語言和框架是一樣的恬口。
一旦你學會了一到兩種語言校读,再掌握其他語言并不是特別困難。不同的語言有著不同的特點祖能,當你熟練運用它們時歉秫,你就會欣賞不同語言本身的優(yōu)缺點。
在你職業(yè)生涯早期真正掌握基礎知識很重要
如果你只是想成為一名專業(yè)的開發(fā)者养铸,專注于不會改變的東西即可雁芙。
我最近寫了一篇關于我如何在幾乎沒有任何 Web 開發(fā)經驗的情況下被聘為 Web 開發(fā)人員的文章。我被雇用钞螟,是因為我的編程基礎非常強大兔甘,即使我沒有豐富的具體某種語言或框架的經驗。
如果你采取這種心態(tài)筛圆,并專注于將復雜的問題分解成更容易管理的問題裂明,那么你將學會如何保持與程序員的相關的所需要的技能,即使一切都在變化太援。
所以如果你害怕做出錯誤的決定闽晦,請深呼吸一下。
編程的基礎知識將適用于任何編程語言提岔、框架或心態(tài)仙蛉。
選擇語言,學習碱蒙,然后真正掌握它荠瘪。在此過程中,你將掌握編程的基礎知識赛惩,并能夠將其應用于任何其他語言或框架哀墓。
我這里有一套互聯(lián)網(wǎng)最新的Java進階架構師底層到實戰(zhàn)的學習思維導圖
1.開源框架解析
2.架構師鞏基
3.高性能架構
4.微服務架構
5.團隊協(xié)作開發(fā)
6.B2C商城項目
7.設計模式
完整的學習思路 學習方向,讓你在Java行業(yè)不在迷路(大綱技術會隨著互聯(lián)網(wǎng)技術持續(xù)更新的喷兼,無需擔心掉隊@捍隆)
獲取Java架構思維導圖 以及領取免費高清視頻資料
歡迎工作一到五年的Java工程師朋友們加入Java架構開發(fā):760940986
群內提供免費的Java架構學習資料(里面有高可用季惯、高并發(fā)吠各、高性能及分布式臀突、Jvm性能調優(yōu)、Spring源碼贾漏,MyBatis候学,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰纵散!趁年輕梳码,使勁拼,給未來的自己一個交代困食!