转载

工作五年了,要不要转方向?

这篇来聊聊困扰很多同学的一个问题: 是否要转方向 ?

这类问题没有标准的答案,每个人的理解也不一样,我写下的也只是我个人的想法,仅供大家参考。

iOS 开发

本以为 iOS 开发咨询这类问题的会比较多,没想到实际却很少。后来想想,iOS方向可能已经比较 "冷"了吧。iOS 目前的市场占有率只有百分之十三了,比起巅峰时期,确实低了很多,而且还有继续下降的趋势。连技术类公众号里面,都几乎见不到 iOS 方向的。

我记得有个毕业生咨询过 iOS方向的问题,我给的建议是,顺便学学 Android 开发或前端开发。

前几年的时候,我们这边有:iOS 开发, Android 开发, 塞班开发。当时的 iOS 可谓如日中天,很热门,没想到只几年时间,市场变化如此之大。

近几年,我们这边的iOS开发都被要求学习 Android  甚至接触一些前端开发了,所以我觉得 iOS 的同学确实需要考虑这个问题。

当然,我不建议 iOS 的同学直接转后台开发或者机器学习, Android 和前端是更好的过渡。

Android 开发

Android 开发的转方向咨询是最多的,最想转的是大数据和机器学习。不过我大部分都是建议不要转。目前客户端开发确实有大前端化的趋势,像 Flutter, React Native 确实也带来了不小的影响, 但相对于原生开发, 这些框架都还存在不少的性能,细节体验上的问题。

至于未来会发展成什么样子,也不好预估。

就这个问题, 我特地请教过我们这边的前端开发专家。 对于未来他更看好 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 里面描述的算法。知道算法的优劣和适用的场景,并且可以用自己熟悉的语言实现出该算法,且有改进和调优模型的能力,这个算是一流水平了,应该可以拿到很高工资。

大部分同学自学了一段时间,达到了入门的第三级,但要在工作中,真正的运用起来,至少要达到第二级的水平,但第三级和第二级的鸿沟是巨大的,要达到第二级,要有比较好的英语基础和数学基础,我觉得自学的同学大部分达不到这个 水平(有些牛人除外 )

所以做工程的同学想转算法方向,我建议三思而行。

结语

以上,就是我对于转方向的一些建议,不算是什么标准答案,但我觉得应该适用大部分人的情况。 转方向是很大的一件事情,会带来历史经验的损失和未来时间的投入,是需要极其谨慎的事情。 需要综合现有方向的未来和新方向的未来,还有自身的学习情况来定。

最后,祝大家职业发展顺利 !!!

工作五年了,要不要转方向?

原文  http://mp.weixin.qq.com/s?__biz=MzIzMTE1ODkyNQ==&mid=2649412158&idx=1&sn=361bf039248a8bba353d31e19c25eae2
正文到此结束
Loading...