上層應用開發是否沒有底層開發有前途?

本人以前主要是做工控單片機這方面的,可最近公司讓我從頭學
C#.NET ,做上位機開發。接觸後反而發現比底層有意思多了,甚至有往這方面發展的意願。

可以前總在網上看到一種言論,說是做軟體開發的比如JAVA、C#這些程序員,入門很容易,越老越沒市場,需要學習的東西也少。而做底層的,要學模電數電、計算機結構、CPU架構、操作系統原理、射頻高頻、PCB等等亂七八糟的東西,所以入門很難,越老越吃香。。。。

可事實是真的軟體開發就不需要積累了嗎?沒錯,做底層的是要學很多,可我覺得學的多了反而不精,誰也沒那個精力,最後還是要麼偏硬體做電路設計,要麼偏CODE做驅動或是應用層。難到說上層軟體開發就不需要學很多東西?數據結構、演算法那些就不說了,其他我不了解,應該還有很多要學的的東西吧。。。


底層與應用層誰比較有前途肯定是沒有標準答案的。底層相對於應用層的入門門檻是比較高點,但這個也只是針對「入門」這個級別的。往高端發展,二者的難度其實沒有多大區別。但要注意的一點是底層軟體是相對比較固定的,變動不大,市場需求量不如應用層多。在互聯網火熱發展的今天,應用層的開發職位比底層驅動職位多得多。
另外一點,現在應用層的開發功能劃分得越來越細,並不是按你是用c/c++或者java開發劃分了,而是按你熟悉什麼領域劃分:你是熟悉大數據處理還是圖像識別?或者是語義識別?這些功能的實現需要大量的數學知識和演算法知識,入門門檻也很高。如果能精通其中一種,也算是前途無量了。所以個人認為,「底層入門門檻高」只適用於比較低層次的比較。
我的學習方向也是偏底層運用的,但也學過若干如圖像處理,機器學習相關課程,感慨這些課程的深度不比你學數電模電,PCB繪製,甚至操作系統底層代碼編寫淺。計算機的任何一個層次都是令人窒息的博大精深。


上層的東西更有意思,更有發展空間。
不僅是要面對靈活多變的需求,各種功能,把這些東西組織成一個產品就是非常考驗能力的。光談技術,怎麼搭建架構?要做一件事情有多種選擇的時候,如何選擇?如何保證穩定性?如何保持擴展性?如何不在不必要的地方浪費精力?如何提高開發效率?
而底層,眼前的一些細節就已經讓人很傷腦筋了,好不容易解決,也沒有辦法去考慮能不能做得更好更可靠。老做底層,很容易只見樹木不見森林。
至於收入方面,很可能底層開發因為技術更新慢,所以更容易積累,單純做技術的時候薪水就容易上升。而做上層,技術更新快,新湧入的人也多,得持續努力學習,開拓視野。
看題目中題主流露的意思,其實題主已經是見到了森林的人了,更願意做上層,去搞宏觀一些的東西,只是有些擔心罷了。不用擔心,既然能領略森林之美,當然是森林更適合你。


過來人告訴你····
如果從性格上選擇底層:
性格保守,沒有安全感,喜歡追根問底,所以搞了底層
注重直接、高效、重過程,所以選擇C語言
喜歡自由,不被束縛,所以選擇開源系統開發
恭喜你,至少你選了一門你會幸福的方向

如果從「舒服」上選擇底層:
底層更新慢,不用拚命學習
底層重經驗,越老越香,不用擔心程序員「三十歲後轉型」
底層門檻高,競爭少
你還是走吧,不論哪個行業,不努力結果都是一樣的,底層一樣是拚命學習新知識、擔心轉型、競爭激烈,而且機會少


不管幹啥
稀缺人才總會吃香


做到所在領域的Top 5%都有前途,否則。。。


各行各業都需要軟體, 哪怕和計算機八竿子挨不著的行業也早晚需要用計算機管理數據。

而底層、硬體之類的,就業範圍窄得多。

要看市場需求! 不是說哪個難哪個就有前途,這個說法很無知。


喜歡做什麼,什麼就顯的更有前途。


我也曾經思考過這個問題,個人理解底層更像是製造建築材料,應用層更像是建造房屋。材料分粗鐵,鈦合金,建房子也要區分茅草屋和摩天大廈。兩者其實都有很漫長的發展路線,單從優劣上是難以得出結論的,就個人喜好來說相比底層,應用層更容易獲得成就感。


什麼叫做學Java和C#的越老越沒用?這個真叫胡扯!除了嵌入式程序,有什麼事情是Java/C#做不到的嗎?難道底層代碼不是為應用提供支撐的嗎?沒有應用,哪來的底層需求。

就是畫畫界面,也有水平高下之分之分好不好。只有做不好事情的人,才會越老越沒用,和做什麼根本沒關係。


.Net就不要浪費生命去學了。這個在國內基本是要被淘汰的貨。
否則你將來又要馬上來一次清零重學。
沒啥意思。
另外上層應用開發確實是迭代更新快。所以適合源源不斷的年輕人進入。
但這幫年輕人中年之後,失去了學習的動力了,就尷尬了。
但同時上層開發需求也大,你可以趁著浪潮不斷跳槽,薪水在你還年輕的時候,肯定是有競爭力的。


我以前也有過這樣的疑惑。其實何必糾結呢?
工作無非就是收入,其次是興趣,但必要有其一。
我之前做了四年運維的,但確實喜歡開發,於是做了iOS。iOS收入很不錯,令我即使很想鑽研底層卻始終沒有。平時也會買很多書去研究,務求留住這點興趣之火。現在終於有機會用上了,搞objective-c的一些SDK,用上很多語言底層知識,請謹記,磨刀不誤砍柴工。
扯遠了,回到你的問題。收入、興趣,你自己選,選了哪一行都要做精,發現不喜歡馬上轉,永遠做自己最擅長的(不是最喜歡的)。很多時候你喜歡的東西只是他的表象,源於你對這個行業不了解。像我之前也認為,底層很牛x,連cpu怎麼工作都知道了,還怕寫不出牛x的程序?事實上,這僅僅是一份工作,你很難一邊底層一邊app。這就是術業有專攻。


前途在於你是否努力,天分是不是夠,而不在於上層,還是下層。


贊同 @kubisoft 只見樹木不見森林,做底層的往上走相對容易點,最好能獨立完成一簡單產品。上下通吃嘛。。。。。。


上層開發需要懂的Computer方面要少一些,但是要求設計人員對軟體所服務的業務有足夠理解。比如讓你設計一款完善的財務軟體,設計完成後你基本上就可以直接去參加會計從業資格考試了


我覺得在移動互聯網大行其道的現在,前端應用APP的開發也是極具前途的,關鍵在於能夠挖掘出足夠吸引使用者的點。


想改變世界,就底層,只是想賺錢,上層開發吧


底層開發包括了哪些,哪位大神可以簡單介紹一下?


上層需要學習的東西也同樣多啊,雖然Java,C#入門容易,但後面還有軟體架構,軟體過程,軟體需求等等。每一項都需要投入很多的精力。另外,上層知識更新較快,今天一個框架,明天一種架構,一定要有快速和自主學習的能力才能跟上這些。


技術好才有前途


看你真正感興趣的點。方向不一樣,不要太急功近利就好。


其實找到自己喜歡做的才重要吧,這樣你才願意去做,有底層的知識對應用開發是有好處的,就像地基一樣,因為有些性能之類的問題就需要從底層入手。每個人的觀點肯定不一樣,做自己感興趣的吧。


推薦閱讀:

TAG:程序員 | 編程 | Android 開發 | 單片機 | C# |