31歲開始從機械轉向學軟件Java遲不遲?
看了下其他回答。有比較沖動“強行勸退”的,也有客觀分析的,還有所謂專家泛泛而談沒干貨的。相比而言前兩個還算比較實在。
先說下我的結論,利弊都有,結合個人情況分析。優先建議轉前端工程師。
理工科出身轉軟件可行性相對較高首選,軟件編程考驗的基礎能力就是邏輯思維能力。作為一個機械的理科生,應該是具備了一定邏輯思維能力的。哪怕自己覺得自己這方面做得不好,也好過哪些想轉到軟件行業的文科生。
我還見過學日語、英文轉軟件的。他們都能轉,一個理科生轉軟件的障礙天然更小。這方面要有信心。
首選不建議轉Java或其他后端語言軟件行業分支很多,開發、測試、UI、產品等。
轉測試最簡單,因為測試入門門檻低。但31歲的年紀無測試經驗和剛畢業無測試經驗,沒有公司會選擇前者。不建議去培訓機構做測試培訓,理由有二。一、一般性的測試,工作內容是功能測試,關鍵是對需求文檔的理解能力,動手操作軟件的實踐能力,不斷重復操作同一個功能的細心和耐心,這些都不需要花那個錢和時間去培訓。二、高階的測試講究的是性能測試、安全測試等,這些東西對測試還沒入門的人來說,直接上培訓就好像還沒學會走就想跑一樣,面試的時候很容易露餡,沒有必要跟自己過不去。
UI和產品更不要想。UI首先需要美術方面的專業技能。我估計一個機械專業的同學,要這方面才能大概率也不會去搞機械了。個別特殊人才我們不討論。
產品更是一個高階技能。
那么回到開發,從開發技能,簡單地分為前端和后端兩個方向。注意是為了簡化問題,所以簡單地談,希望杠精不要瞎扯。
什么大數據、人工智能、區塊鏈是從開發內容來分的,如果不是搞著玩或炒概念,需要更多的專業知識和背景就先不談。
后端的流派比較多,java、Python、php等。前端比較統一,不管后端用什么技能,前端都是用html、css、js去匹配。
其實不管前后端,對于智商正常的理工科學生來說“入門”都不難。但對于半路轉行的人有兩個建議:1、找一家靠譜的培訓機構,這樣能減少個人自學走彎路,提升學習效率;2、謹慎選擇后端,優先選前端。
因為不管選前端還是后端,入門之后,就涉及到如何精進,更進一步的問題。即便是一般性開發,除了在管理非常到位的一些外包公司(外包公司會把事情分解得很好,讓每個開發人員只是流水線上一個工人,干好你自己的哪幾個規定動作即可。長期下去不利于個人發展),一個后端需要了解,需要去做的東西,涉及到的知識領域非常廣。
簡單羅列下,至少包括:
數據庫安裝以及如何用工具(如navicat)去使用它(流行的數據庫又分oracle、mysql、sql sever、postgresql等),
數據結構,
算法、設計模式(簡單的要會撒),
不同開發語言各自存在的簡單性能問題、常用場景寫法、常用的開源生態,
windows和linux操作系統基本操作,
各種服務器的安裝使用疑難排查(比如java生態里面常用的tomcat)。
如果需要讀文檔、寫文檔,還會用到各種寫文檔的工具或語言,比如UML、powerdesign等。
還有很多零散的計算機基礎知識,比如一個中文占幾個字,英文占幾個字節,什么是ASCII碼、換行符是什么,不同的操作系統換行符有什么不同等等。
此外,比較難的一點是需要具有比較好的邏輯思維能力,才能寫出邏輯嚴謹Bug少的代碼。
轉前端開發相對見效快、進階容易相對而言,前端比較單純。用好html、css、js即可。
首先,這3個語言好學。不像后端語言,可能一個知識點,能牽涉出好多東西,這個是后端難的一個重要因素;
其次,整體而言前端對于邏輯性的要求,我只能說確實越來越高,但是跟后端比起來,難度等級還是要差很多。
這兩點決定了,前端比后端門檻低,上手快,進階容易。
后端說實話,越往后面進階越難,哪怕是對專業出身的人來說也是能難的一件事情。如果是半路出家的同學,除非具有非常強的上進心、很好的學習能力,我估計終其整個職業生涯也就是一個中級水平而已。但前端晉升高級的期望會大一些。
很多培訓機構給你說,轉Java沒有問題的。這話也沒錯,入門不難。但是他有沒有跟你講清楚,入門之后怎么辦?晉升空間大不大?
想轉Java或其他后端語言的同學們要冷靜,不要被所謂的高工資陷阱迷惑。并且現階段前端開發正處于一個上升期,有點類似前兩年的iOS開發。目前的前端工資水平其實有點虛高,就中初級人員而言,甚至有機會拿到比同等水平的后端人員更高的待遇。
其他非技術因素這主要就是說家庭之類的因素,這方面相信30多歲的人自己能評估可行性,就不需要我們在這里回答了。
反正需要題主平衡好吧,看看家人對你的支持程度,是否理解等等,綜合評估吧。簡單來說,30歲對普通人來說還有些機會調整人生。
不過千萬別認為自己與眾不同,像褚時健那樣八十多了還能去創業。以普通人的視角,普通人的能力來評估自己能不能承受其中的風險。切記好高騖遠,或自以為是!