Windows 客戶端程序員如何才能轉到 Linux 開發?

具體情況是這樣的,題主做了兩年windows程序,想轉linux開發。

雖然linux開發可以自學一些,但是畢竟沒有linux項目經驗,很多公司連簡歷的關都過不了。

求問這種情況下如何才能完成轉型?

是否真的有公司會提供學習成長的機會?


別去寫什麼 OS X 或者 gnome/kde下面的 GUI,寫桌面學不到 linux的精髓,直接寫 server代碼:

1. 實現簡單的 HTTP伺服器(支持 GET/POST/CGI),然後用瀏覽器訪問,裡面有個CGI留言板。

2. 實現一個簡版 REDIS,或者給 Redis加10條命令,或者把後面存儲引擎換成 unqlite,再開源

3. 給 apache實現一個 module,可以支持 lua來寫服務。

4. 給 nginx寫一個 python模塊,可以python來寫服務。

5. 用 C/C++/go寫個代理翻牆軟體,跑在你的海外租的 vps上。

6. 實現一套簡單的 TCP RPC框架,並再基礎上做一個簡單聊天。

7. 閱讀 Linux代碼,應用層實現一個 Linux的定時器。

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

隨便找了幾個簡單的,有意思的東西做一下。

等你有了概念以後,可以嘗試一些其他東西增加熟練度:

1. 構建分散式架構,比如用腳本模擬實現一個分散式文件系統。

2. 構建個簡單的遊戲伺服器,比如模擬寫個 RPG服務端,可以用 telnet玩。

3. 實現個簡單的的分散式發布訂閱系統。隨便接入,任意PUB/SUB,有冗餘。

4. 做一個 MySQL前端,可以分解任務,拆分到各個節點上執行,並將結果合併返回。

找個好點的工作應該不難了。


先學會用linux,把它當成日常工具。其它沒什麼神秘的,linux的編程模型還要簡單一點。


難道第一步不是要從emacs和vim中選一個?

還好我兩個都用,就沒這個煩惱了


菜碼農一枚,僅針對C++強答一發,大牛們請輕噴。

1、挑一些比較複雜的STL容器實現一遍,比如std::map / std::tuple 等等

2、寫一個非同步io框架(包括socket),可能這個比較泛,領會精神就行。

3、把Windows的GDI+和Linux的x11封裝成統一的介面,用來繪圖(封裝好就行了,邊寫邊做測試)如果能用上述介面寫個簡單的窗口那就最好了。是的你沒有看錯,每個像素都要你親自來繪製)

如果跨平台沒弄過的話,兩種方式,一種么函數內部 #ifdef 掉,另一種外面做個os的枚舉,在全局範圍#ifdef掉,然后里面寫上typedef current_os_platform xxx / yyy, 然後所有的介面都泛型,分別對兩個OS進行特化實現,當然編譯速度可能比較感人……光速逃……


Qt大法好,跨平台客戶端保平安


學一下Evented Network Server怎麼寫就行了


為什麼我覺得Windows開發難很多 Windows程序設計 Windows核心編程者兩本書太特么難了


Linux下面的desktop開發么?那就去學qt或者kde,不是desktop就去弄Java吧


慕課網有個Linux guide for developer.的課程!學習一下,就可以迅速過度了!本屌學完已可以在ubantu下生存,大牛表噴!收到點贊跟評論,有點意外,貼下課程地址 Linux Guide for Developers


其實我很喜歡有Windows開發經驗的Linux開發工程師,編碼這個事情,舉一反三。

PS:Windows程序員,只要搞端MVC,自己也搭過這樣子一個框架,能力絕對米有問題!

從最開始的折騰編譯環境(IDE)到回歸程序員的核心工作 -- 編碼。

Linux、Windows下其實都是一個事兒。

從Windows轉Linux開發,也有不一樣的地方,主要開發方向的不同

1.Linux 應用開發

集中在嵌入式Linux中,多是C/C++開發語言,一個Makefile走天下

2.Linux Server開發

開發語言就五花八門了,C++/Java/JS/PHP

從前景上看,搞Server端開發會比較吃香


會寫Qt程序即可


參加過誇平台項目開發,寫過Windows和Linux代碼(OSX老大寫了),感覺題主如果Windows混的好,切換到Linux問題應該不大,我唯一覺得有障礙的是Windows那個又臭又長的Windows API參數,但習慣了就好。


cl,nmake,這兩個你的老本行如果沒有問題的話,不就是換套API嘛?


1.首先掌握 vi,bash,Makefile

2.盡量不使用桌面,用控制台

3.盡量不用apt/yum,下載源碼編譯

4.從下載的源碼中,挑選感興趣的研究

5.做小項目

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

是否真的有公司會提供學習成長的機會?

我覺得培養難度不高,但是不能一點經驗都沒.

如果從簡歷上一點linux經驗都沒,就沒法衡量是否適合培養,風險係數比較大


推薦閱讀:

我是一名剛上任的飛行員,如何才能跳到藏航?
員工跳槽到對面的競爭對手公司…並帶走部分客戶以及員工…還怎麼做才能減少損失?

TAG:跳槽 | 程序員 | 轉行 | Linux開發 |