本人非科班出身,大学毕业学的PHP后转android,做了几年程序员了,谈谈我的看法吧:
1.关于兴趣.我当初是机缘巧合进了培训,开始时对编程也产生了极大兴趣.但是如果你说你对编程一无所知,仅仅因为兴趣就选择这个行业,建议谨慎再谨慎.我们的兴趣无非是电影里的各种黑客的炫酷,或者是对网上的一段小程序的一个小惊喜,或者是对一个精致游戏的入迷. 提醒:以工作为兴趣,兴趣迟早会消磨. 编程不是写一个炫酷的小程序,或者三下五除二搞定一个小游戏. 程序员的现实是:花很长时间写很普通的,很长的代码,而且这种重复性工作很多.很多时候,我们是在重复写界面,而不是在做创造性工作. 你可以把编程与原来的工作对比一下,很多时候都是重复性工作,这时候我再提醒你,谨慎再谨慎.
2.关于晋升.这一点非常重要,你自己和上面的老哥们也说了很多相关的东西.没有人只想做一个普通程序员,既然进入这个行业,那你肯定要往高处走,技术上肯定希望自己成为资深程序员甚至专家. 我列举一下这个行业至少要学的东西:数学,模电和数电,操作系统原理,网络基础,c语言,数据结构和算法,这些都是要学的.如果这些都不懂,仅仅去参加培训,那大概相当于学会装修房子时给地面铺一层地板砖.而如果你要晋升高级程序员,毫无疑问,你要学的还有很多很多.
3.关于游戏开发.什么,你说你要去参加培训,以后做游戏开发?!这说实话非常遥远.游戏开发貌似是专业程度相当高的类别,光靠培训,很难.培训到底教什么?我来说说大概吧:首先会教一下HTML,就是写一写网页.而且只能搞定比较普通的网页,很专业的js知识是不教的.然后学学语言特性,做一做服务器数据的增删改查,第二步大概就这些;接下来是做一两个项目,把前面学的东西串起来. 一般培训3-4个月,能学的东西有限,游戏开发的相关培训是咋样的,我就不知道了.
4.关于技术.科技发展非常迅速,就拿我做的android来说,每年至少1个版本,还得学Java,一两年也有一个新版本;这两年又出了kotlin,一门新语言,又得学.新东西出来,就得不停学.如果你是高级工程师,那好了,你每年要学的新知识多了去了,因为每一块都会有一些新东西.还有另外一方面要考虑:行业转换.我们都知道,苹果和android系统出来之后,诺基亚的塞班系统凉了;最近,苹果业绩下滑,未来到底如何?有没有可能说,在中国iOS开发要凉?现在Python开发很热,你选择余热的Java,android,php还是新潮的Python? 这里有两点要注意:技术如果不过关,就容易被行业冲击刷掉;行业冲击一旦发生,我们就有可能考虑转行,又是一大波新知识要学. 总之,干这个得一直学...想想你能不能接受吧.
5.有个词叫做"中年危机".程序员一样会面对中年危机.如果你没有基础,成为不了高级工程师,那35岁之后咋办? 要知道,并不是所有人都能成为高级工程师的,也不是所有人都能当管理的,假设你偷懒了,或者是因为没有基础,发展不上去,到时候有你头疼的.你去招聘网站看一看就知道,基本都要求35岁. 而且就算你熬过了中年危机,假设40岁之后,这个行业凉了,公司裁员,你是被裁的人之一,咋办?去学新的语言,换个行业?这些都是实实在在的东西,真的要考虑清楚. 程序员的寿命很短暂,如果不能成为高级工程师或者管理人员,那就得给自己留条后路.
总之,非科班出身的,光那些基础的东西,还有英语,没个2年拼命,或者3年拼搏,或者是5年的努力,你都没资格成为高级工程师.
如果你真的有时间,有激情,有毅力,每天能锻炼一个小时,学习8个小时,那么,祝你编程路上越走越好!
否则,谨慎再谨慎.