與其爭論java和.net的差別,還不如多想點用編程技術掙錢的方式


    年前和最近,我發現在博客園和其它地方,有不少爭論java和.net哪個好的文章,其實這是種好現象。雖然到了架構層面,技術是通用的,但兼聽則明,而且技多不壓身,多種掙錢的方式總不會錯。

    本人最近主攻Java,最近在這方面也出了兩本書,Java Web輕量級開發面試教程Java核心技術及面試指南,但之前也講過.net課,而且之前和別人創業時,用的也是.net,體會下來,語言只是掙錢的手段,關鍵是要看怎么用它們掙錢,也就是學習進階和掙錢的方式。

    本文將結合自身和聽到看到的經歷,不僅將從語言使用的角度來說明這兩種語言的異同點,更將從提升能力接活掙外快的方面說明這兩種語言的作用,相信大家在看完后會感嘆:其實爭論沒必要,關鍵要選擇適合自己的方式。

1 入門時,語法有差別,所以不能拘泥細節

     對於初學者而言,.net和java語法就像天書一樣,一方面很難懂,另一方面調試起來也很困難,如果要自己寫段能通過編譯的代碼,非常困難。如果同時學Java和.NET,估計更會一頭霧水。

     其實磨刀不誤砍柴工,對於初學者而言,不論學哪種語言,都應該深入考慮這個問題:高級開發或架構在用這個語言時,一般會用到哪些特性?換句話說,這種語言能怎么幫到我?我是學Java的,就從Java角度來回答這個問題,我相信.NET的回答應該會是同樣精彩。

    1 Java主要用在架構方面,通過Spring MVC等架構能優化開發時間。   

    2 通過引入各種組件,比如nginx等,能實現高並發分布式的功能。

    3 目前Java主要用在互聯網高並發等場景,而且在處理大數據方面有一定的優勢。

    對於初學者來說,了解到上述知識點並不費勁,但一旦了解后,就可以在入門階段不走彎路,比如別過多拘泥於加減乘除循環之類的語法,跟不會去學Swing之類的用不到的技術。

    雖然在入門階段,Java和.net語法差別點不少,但如果不拘泥於細節,會發現開發的模式就像搭積木:用不同的API去組裝實現各種功能,我們需要關注的是各種函數以及參數有什么作用,該如何使用。 

    但如果硬要列出兩者誰好誰話,這本身就有問題,因為這樣一來,會讓自己過度深入語法,就好比學英語時過多關注單詞,語法本身其實是相通的。

    在我之前和現在的公司里,我見過不少從.net轉到java的,問他們當時轉型用了多久?一般最多不會超過3個月,前提是.net技能都已經精通。

2 做項目時,其實已經模塊化,差別的只是API

    當初學者開始做第一個商業項目的時候,會發現所接觸到的知識點非常有限,比如數據庫相關,MVC架構相關(如何在三者之間傳數據),外帶些數據結構(比如Java集合) 。

    而且,項目經理和架構師已經把項目的外型框架搭建好了,連數據庫以及前后台交互的方式也無需管了,開發者做的更多的是模仿,仿照別人做的模塊中的流程,開發自己的模塊。

    在這個層面上,Java和.NET雖然開發用的IDE不同,打包部署上線的方式也不同,但在開發過程中,由於框架已經是現成的,所以相差的還是API。

    相信大多數的項目經理會說,管理Java和.net項目的方式其實差不多,而兩者的差別,大多已經通過框架和模塊掩蓋掉了。

    之前我在外企,項目經理都是一個項目做好就換另外一個項目,我也見了不少項目經理同時管理java和.net的多個項目,也沒發現他們因此而混淆。而且,做項目時,編碼占的比例也不大,其它還有分析需求,設計架構和流程,和測試等人員聯調,估計編碼的工作量也就占個3成,要討論只占這么點比例的開發語言哪個好?沒意義且占時間。

3 兩者的差別其實體現在項目背景上

    之前主要說的是,從技術上來看,兩種語言差別不大,而且從架構角度上來看,一些基於分布式高並發的技術,通過兩種語言都能實現。  

    凡是存在的,必是合理的,那么目前沸沸揚揚的Java與.NET之爭原因何在呢?

    個人觀點,體現在項目背景上,面向不同需求和開發成本的項目,或許java/.net確實有些優勢。

    比如,某項目是套基於桌面的管理系統(成本管理機器管理均不論),是應用在一個公司里,那么.NET是個比較好的選項。

    又如,某項目是個並發量比較小的網站,比如社區門戶外帶簡單的動態數據,那么JSP即可。

    再如,如果是個高並發的項目,而且本公司的其它項目都是基於Java,那么可能會用到Java里的一些框架。   

    或者,某人之前做了不少.net項目,有現有的技術積累,再做個私活,用java和.net都可,那么可能就選.net了。

    也就是說,兩種語言沒有優劣之分,只有更適用,再具體來講,用哪個語言成本更低,開發周期更短。

4 到了架構級別,更多得考慮底層實現,很少顧及語法點

    本人勉強到了架構師級別(但自認為如果用高級開發的標准,本人應該屬於優秀),在我眼里,兩種語言真沒差別,我相信大多數的架構師或高級開發應該有相同的觀點。

    因為在這個級別,需要考慮的不僅僅是如何用語法實現功能點,而且如何性能調優和解決高並發問題。我列些最近我們組架構師解決的問題。

    1 直接訪問數據庫太慢了,需要用MyCAT進行分庫。

    2 網絡通訊,用http協議,有三次握手,且http報文頭有些長,需要用tcp協議。

    3 業務上,兩套表需要相互同步數據,這就得用到mq集群。

    以上為例,在這個程度,基本已經很少考慮兩種語言的差別,或者可以這樣說,我之說以在框架層面選用java,是因為該項目主要是基於Java的,而不是某些功能只有java實現,反之亦然。 

5 最近我見到值錢的技能,語法只占了很少比例,所以兩者都能掙錢

    最近比較流行收費課程,我最近在學玩 轉Spring全家桶(https://time.geekbang.org/course/intro/156) 這門課程,也了解了不少基於.NET的課程,最近也打算自己搞個收費課程。

    在這個過程中,我發現如果在課程中,只講差異性的語法,估計不會有市場,因為這些課程都是基於項目管理或者是框架的。我瀏覽了一些基於Java和.net的框架教程,發現分布式框架的要點都基本相似。

    從這個角度來看,在選型java和.net的時候,千萬不能事先有成見,比如認為哪種語言不好,或者哪種語言絕對不適合某種場景,因為這樣就相當於給自己畫地為牢,約束了自己的發展前景。

6 不拘一格去掙錢

    學編程語言是為了掙錢,這里給出些一般的掙錢方式。

    1 首先當然還是做好本職工作,具體來說,就是認真地把編程語言結合業務背景,然后再深挖性能優化和架構級別的技能,讓自己盡快達到高級開發或架構師的水准。

    2 如果感覺還有余力,就去找些外快,比如做項目寫書做講課老師或者開視頻教程,不知道渠道怎么辦?網站搜外帶群發郵件,如果身邊有人已經做得很好了,就趕緊請教。

       我在博客園里就見到不少講掙錢的文章,而且博客園里的圖書編輯和負責出視頻教材的人也不少,所以博客園內部的資源就不少。

    就拿外包項目來說吧,基於java和.net的都有,而且各層次各成本的都有,所以說,與其爭論,還不如多找找掙錢渠道,或者干脆多看點資料讓自己快進步。

7 總結和求推薦

    本來這篇文章應該是年后第一周(也就是上周)發表的,但事情太多,推遲了一周,但自感覺沒因此降低寫文章的標准。

    在上文里,更多地是從技術和架構來表述兩種語言的差別,而最近我看了不少身邊的人自己創業,他們掙錢的方式,也是和語言無關的。

    比如到各種兼職外包網站接活,比如出視頻教程,又如出去培訓講課,或者接項目自己來做,這些掙錢的方式里,更多考慮的是成本和周期,各種項目的甲方,也不會因為開發語言是java而多給錢。

    所以,爭論語言的差別,乃至爭論語言的好壞,真的沒必要,有時間爭論,還不如出去掙點外快,如果不知道渠道,就到網上找,如果感覺缺少掙外快的能力,就趕緊學。

    最后,祝各位用java的.net的python的(還有各種其它語言的)伙伴們技術日益進步,多多發財。

    如果大家感覺本文不差,請點擊下方的按鈕推薦本文,大家的推薦是對本人最大的激勵。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM