全棧學徒(軟體工程師)

desaco發表於2016-02-29

【分散式與虛擬化技術入門】分散式架構、分散式計算、分散式資料庫、分散式儲存、虛擬化技術課程- http://geek.csdn.net/news/detail/209709

2017 Web開發者學習路線圖(前端和後端)- https://zhuanlan.zhihu.com/p/25936930

各種語言/平臺 de程式設計之路- http://blog.csdn.net/banketree/article/details/39995209

關於移動端架構和全棧開發(全棧)- http://blog.csdn.net/offbye

> 1.全棧學徒至少要掌握以下幾種技能:(縱向)

   Web 前端開發,至少掌握一種前端框架;
   Server 後端開發,至少掌握一種後端框架;
   Server 運維,掌握 Linux Server 的搭建與維護;
   客戶端開發,iOS 和 Android 至少掌握一種;

   資料庫,掌握 SQL 和 NoSQL 資料庫等。

   2.橫向:如Android,應用層-->框架層-->庫和執行時-->核心層

  Linux Kernel、Android Runtime、Libraries、Application Framework、Applications

> 一種技術軌跡:
先聊聊我的技術軌跡吧,從初中開始使用 Linux,以 Ubuntu 作為自己主力系統,而後切換到 ArchLinux,再回到 Ubuntu,一直使用到大一,這幾年的 Linux 使用經驗奠定了 Server 架構的基礎,大一開始嘗試自己做一款產品。
  那時候就琢磨,我應該先寫一個網頁版,然後再寫個客戶端。
  所以從後端開始,我使用 Django 作為起步,不過很快我轉移到了 Rails 陣營,Rails 的敏捷開發極大的降低了開發成本,而其的約定習慣,也使得菜鳥能夠平安飛過很多危險區域。
  開始寫網頁前端的時候,並不知道有前端框架這個東西,直到用 Rails 寫完了後才發現原來有東西叫 Ember.js,於是開始用 Ember.js 來重寫,一開始的理解還是如何用 Rails 來渲染前端,後來發現其實在引入了前端框架後 Rails 的角色已經變成了個 API Server 了。
  於是由此開始從新的角度去考慮如何設計 Rails 的 API,閱讀了大量的 API 設計的資料,怎麼樣設計前端才好用,怎麼樣降低查詢時間,伺服器快取,redis,安全等等。
  Rails 的自動化幫了不少忙,很多自己並不知道的地方它已經幫忙做好,而當你想了解的時候,又會發現其實現是如此精妙。更別說 Rails 對新技術的接受程度,使得你總是有新東西可以玩,CoffeeScript 和 Sass 最早就是 Rails 吸收作為自己框架的預設前端技術。。
  隨後由 Ember.js 又切換到 Angular.js,用 Angular 重寫一遍,期間又接觸了前端工具 Grunt (前端的變化一日千里,現在用的東西已經不是這個了)
  最後到了 iOS 客戶端,此時 iOS 的介面實現又與網頁的 HTML 和 CSS 有著很多不同,也因此又花費了不少時間去理解 iOS 的 UI 概念,把思維從網頁轉換成 iOS 的介面開發思想。
  資料庫也在這個期間從 MySQL 換成了 MongoDB,因為那幾年的潮流也正好是這個轉變。

    專案上線後,隨著運維的複雜程度逐漸提升,也因此接觸了 chef 和 Ansible 這種自動化運維方式,再往後 NewRelic 這類的監控服務也上了,為了一個穩定的開發環境,繼而使用了 Vagrant。
  而這一切都只發生在一年的時間裡,不過很有趣的事情是,很多時候我寫著 iOS 突然想明白了 HTML 和 CSS 的實現原理,做著 Rails 突然想出了更好的 iOS 架構方式,不同的技術之間觸類旁通的感覺在每天都發生著。
  在後來的時間裡,這段經歷使得我和不同的技術人溝通都非常輕鬆,因為去年“秒視”做濾鏡的原因,我開始研究起 openGL,在重拾了Blender 之後,很多以前似懂非懂的地方,實現突然變的像 Hello World 一樣簡單,因此也乾脆玩起 Unity 來,在這一切的積累之後,Unity 的學習變的非常輕鬆,成為了我晚上的休閒專案,或許不久之後,你會看到一款我做的遊戲(可能會是 RPG)。

  我並不覺得全棧會使得你全面平庸,每種技術在做的時候都可以為其他的技術提供思路,而在你瞭解各種技術的前提下,深入其中的某個技術,時常能夠帶來對其他技術的反哺。相反,瞭解的技術如果非常狹隘,很可能才是限制自己潛能的原因。

--------------------------

我眼中的全棧工程師- http://www.offbye.com/2016/11/19/%E6%88%91%E7%90%86%E8%A7%A3%E7%9A%84%E5%85%A8%E6%A0%88%E5%B7%A5%E7%A8%8B%E5%B8%88%E6%98%AF%E6%80%8E%E6%A0%B7%E7%9A%84/
  全棧工程師,架構師,Android和HTML5專家。熟悉Java、Android、JavaScript、Python、Swift等技術。2014年開始關注Swift iOS開發,最近在業餘研究無人機和地面站。
  全棧工程師是下能玩硬體和驅動,上能寫網頁和js,中間能玩轉伺服器和資料庫,沒事還能自己做個安卓或iOS App, 對IT系統有著全面深刻的理解,熟悉所負責專案的整體技術棧。全棧工程師的特質應該有以下幾個:強大的解決問題能力;廣博的知識面,快速學習能力,不給自己設限,主動學習新技術;熟悉多種程式語言,熟悉整個系統從上到下的技術實現。
  在軟體開發過程中所遇到的問題,真正的技術問題只佔一部分,很多問題可能是工程或管理方面的問題。全棧工程師善於用全領域的知識積累從更本質的層面上找到解決問題的辦法,而不是侷限於某一種技術上尋求解決方案。例如前段時間遇到的HTML5 Hybrid App在某些安卓手機上相容問題,最終的解決方案就是修改js程式碼,而是直接把Cordova的webview核心換成了騰訊X5核心,這個如果沒有全棧技術能力是不可能做到的。
  做Java Web應用的全棧工程師,應該熟悉Java,Javascipt,CSS,HTML,SQL,XML等常用語言,並且熟悉常用的前後端技術框架,例如Spring,JPA,Mybatis,Jquery,AngularJs,React等。用PHP,Python,Ruby,微軟.net等技術棧做Web應用的應該也類似。
做移動網際網路應用的全棧工程師,應該熟悉Android,iOS開發或微信開發,以及伺服器端介面的開發,這樣才能做到溝通無障礙。

---------------------------

程式設計師獲取新程式設計技能的5個技巧?- http://www.codeceo.com/article/5-tips-get-new-programming.html
怎麼學會所有這些框架和語言的,用你想學的東西去建立一個合適又值得的專案就行了.還有要向合適的人徵求意見。聰明的人通常都很樂於教導和幫助別人。

相關文章