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