这篇来聊聊困扰很多同学的一个问题: 是否要转方向 ?
这类问题没有标准的答案,每个人的理解也不一样,我写下的也只是我个人的想法,仅供大家参考。
本以为 iOS 开发咨询这类问题的会比较多,没想到实际却很少。后来想想,iOS方向可能已经比较 "冷"了吧。iOS 目前的市场占有率只有百分之十三了,比起巅峰时期,确实低了很多,而且还有继续下降的趋势。连技术类公众号里面,都几乎见不到 iOS 方向的。
前几年的时候,我们这边有:iOS 开发, Android 开发, 塞班开发。当时的 iOS 可谓如日中天,很热门,没想到只几年时间,市场变化如此之大。
近几年,我们这边的iOS开发都被要求学习 Android 甚至接触一些前端开发了,所以我觉得 iOS 的同学确实需要考虑这个问题。
当然,我不建议 iOS 的同学直接转后台开发或者机器学习, Android 和前端是更好的过渡。
Android 开发的转方向咨询是最多的,最想转的是大数据和机器学习。不过我大部分都是建议不要转。目前客户端开发确实有大前端化的趋势,像 Flutter, React Native 确实也带来了不小的影响, 但相对于原生开发, 这些框架都还存在不少的性能,细节体验上的问题。
至于未来会发展成什么样子,也不好预估。
就这个问题, 我特地请教过我们这边的前端开发专家。 对于未来他更看好 H5 的方向,但就现在而言还有点为时过早,原生开发还是最好的选择,当然,他建议大家有时间和精力也可以多接触新框架,但没必要现在就谈转方向。 把现有的事情做好,学习些更底层,更本质的东西是更好的选择。
我个人的建议是 目前 Android 客户端开发的整体发展方向还不明朗,建议先不要随便转方向,更加不要转大数据,机器学习。
因为大数据,机器学习跟 Android 开发几乎不搭边,迁移的损失极大,几乎是完全从头开始,更合适的是前端或者后台。 前端在思维模式上更接近, 后台首选 Java 后台 ,至少在语言层面,在虚拟机层面是可以复用的。
Java 后台的同学咨询的也比较多,大部分是想转大数据或机器学习方向。跟 Android , iOS 不一样, 他们不是担心 Java 后台的发展,而是因为觉得 Java 后台的东西太多,学起来太难了,另外觉得大数据和机器学习更火,所以想转过去的。
对于这类同学,我不建议转。 因为难,就转方向,这肯定是不妥当的。 凡是 吃香 的,赚钱的岗位,必定是一堆人涌入的,人多了,竞争自然激烈,要求,门槛自然被拉高,所以有难度其实是好事。
Java 后台应该算是最稳定的一个方向了,一个是后台开发本身就比较稳定,近年来新增且比较火热的也就是 go, 但 go 只是一门新的语言,有后台开发基础的同学,就算学起来也很快的,算不上是大问题。
后台服务器系统这十几年来都是以类 Unix 系统为主,底层机制方面,只要掌握了Linux (Unix) 和 数据库,感觉可以吃到退休了。
后台开发最难的几个问题: 高并发,高性能,一致性。这些并不会因为语言的 改变而改变, 只要掌握了这些问题的解决办法 ,积累了这些问题的架构经验,无论怎么换语言,都可以游刃有余。
这个方向也有些咨询的同学。 Python Web 算是后台方向,但实际业界使用的不是特别多,一些小公司或者内部系统可能会用,但大厂几乎没有用 Python 来构建大规模分布式后台的。
找工作应该是可以的,但未来发展的天花板会比较低,如果是考虑长远发展的话,我建议学学 go 或者 Java 。 相对于Java , go 要学习的东西会更少些,也更容易上手,当然这个要看个人的喜好。
做 Android 开发的同学想转大数据或机器学习,Java后台的同学也想转大数据或机器学习。因为工程和算法有很大的不同,所以我还是单独说说这块吧。
先说数据分析。
我们这边做数据分析的同学也经常抱怨,工作重复,枯燥且没有技术提升,所以想转数据分析的同学要慎重。
当然有同学会说,现在数据分析很火热呀,外面有那么多的培训机构以及各种宣传都在说数据分析前景很好,但那些看看就好,毕竟是商业宣传。
再来说说机器学习。
机器学习是门槛很高的方向,无论是对于公司还是个人,只是会跑模型是不行的,我在以前的文章里面写过算法方向的水平划分:
第三级,完全看不懂英文的paper,知道常用的算法,但无法区分出各种算法的优劣和适用场景,会用 Python,C++等语言的库进行算法组装。
第二级,不能完全理解paper和算法,但知道算法在某些特定场景下的效果和调优的方式。可以在GitHub上面找到合适的开源实现,进行使用甚至优化。如果有丰富的项目经验和实操经验会加分。
第一级,能够读懂英文的paper,完全理解 paper 里面描述的算法。知道算法的优劣和适用的场景,并且可以用自己熟悉的语言实现出该算法,且有改进和调优模型的能力,这个算是一流水平了,应该可以拿到很高工资。
大部分同学自学了一段时间,达到了入门的第三级,但要在工作中,真正的运用起来,至少要达到第二级的水平,但第三级和第二级的鸿沟是巨大的,要达到第二级,要有比较好的英语基础和数学基础,我觉得自学的同学大部分达不到这个 水平(有些牛人除外 ) 。
所以做工程的同学想转算法方向,我建议三思而行。
以上,就是我对于转方向的一些建议,不算是什么标准答案,但我觉得应该适用大部分人的情况。 转方向是很大的一件事情,会带来历史经验的损失和未来时间的投入,是需要极其谨慎的事情。 需要综合现有方向的未来和新方向的未来,还有自身的学习情况来定。
最后,祝大家职业发展顺利 !!!