点击蓝色“五分钟学算法”关注我哟
加个“星标”,天天中午 12:15,一起学算法
作者 | delphi
来源 | 大飞码字
有点标题党了哈,大家不用纠结百万年薪。百万不是一个确定的数字,就是高薪的意思。
说回正题,不少同学说程序员年龄的坎,让他感到焦虑,担心自己是不是跨不过30-35岁这个坎。
在一些论坛上,看到一些同学也在焦虑,焦虑目前技术更新太快,一下这个热点,那个热点,感觉学的好累,要跟不上了。
后来我想了下,这应该都是没有明白或积累够足的核心能力导致的。
核心能力,每个具体方向不同,也很难给个统一的定义。我例举些例子吧。我本身是做C/C++服务器开发的。我每次说完这个,有不少同学就反应,哇,会C/C++,好厉害的感觉。好像我这个方向的核心能力就是C/C++,大家却对服务器这三个字视而不见。
这个理解当然不对,语言只是实现逻辑的一种工具,核心能力是逻辑本身。
我换个介绍方式,海量分布式服务器系统设计开发。都是同样的工作,只是描述不同,你已经感到很大不一样了吧。
这里的核心能力是什么?是架构设计,关键细节设计的能力和经验。在海量服务器设计领域,核心能力,大概包含物理设计和软件设计。物理设计包含:磁盘存储设计,内存缓存设计,核心数据结构设计,一致性问题处理,容灾设计等;软件设计方面包含:模块划分,接口定义,设计模式应用,核心数据传输结构设计等。拥有上面的核心能力,你用C/C++,Java,甚至 python 都可以实现(虽然一般不会用 python 实现)。
在这里,核心竞争能力跟语言其实没有多大的关系。
换到客户端开发方向,也有它的核心能力。包含,单机存储设计,内存缓存设计,核心数据结构设计,并发处理, 软件分层,设计模式,传输协议等。你是 iOS 还是 andriod 开发,核心能力都很接近,只是某些特定的地方有区别。
我上面例举的两个例子,所涉及的核心能力,都是老掉牙的东西了。像磁盘存储设计,内存缓存的设计,软件设计模式,都不是什么新鲜的东西,几十年如此了,当然会有细微层面的进化。但大致如此。
所以焦虑的同学在焦虑什么呢?我看很多同学焦虑的是,又出了新的语言,新的框架,自己要跟不上了。
我只能说,如果你在焦虑语言和框架的时候,你就已经跟不上了。
你可能根本就没有理解你所在方向的核心能力是什么,更加没有掌握它。像andriod开发同学提到大前端,然后觉得焦虑,觉得自己要被淘汰了。
要是你理解软件设计就是客户端,前端开发最核心的能力之一的话,你就不会焦虑。反而会觉得,大前端这个概念,很好的解决了各种平台泛滥的问题。其实当你理解这点的时候,你平时学习,积累的点也就改变了。
你会更在意一个新的语言和框架为什么会这么设计,相比旧的东西,有什么改进。而不再只是注意语言,框架细节。这个视角是不一样的。
当你能理解这个事情,你离百万年薪就不远,或者已经超过百万年薪了吧。
上面例举的例子,可能太精专了,不在那个方向的同学可能不能理解。那我再来说说目前比较热门的数据和AI吧。
前几天,我很好奇,大家怎么突然都对python培训那么感兴趣了。后来百度了一下,都是python数据分析,AI的培训广告链接,然后就会心的笑了。
数据,AI都是大热门。刚毕业,进入到大厂,给60万以上都有可能。所以很多在已有方向做的不好的同学,就像找到了通往财富自由的捷径,或者去参加线下的培训班,或者自学数据,AI。当然学点东西挺好的,只不过有的同学可能期望太高。在这个事情上,我又想泼大家冷水了。
数据,AI的核心竞争力是什么?大家能说的出来吗?难道是会python的语法,会用python的库,就可以了?
说实话,我也不太懂。不过我接触了不少做这方面的同学,就说说我的理解吧。
数据,AI可以分两个方向来看。
一个是研究类,一个是工程类。上面说的毕业60万以上年薪的,基本都是研究类的,工程类的好像还没看到。研究类的比较好理解,大部分名校博士毕业,在一些顶级刊物上发表过paper的会加分很多。这个估计大部分同学也知道,就不多说了。
来说说工程类的。我周边有不少同学是本身是搞服务器开发的,有的转去做了数据推荐和AI。有的还做的不错。核心能力,我给划分了三个等级:
第一级,能够读懂英文的paper,完全理解paper里面描述的算法。知道算法的优劣和适用的场景,并且可以用自己熟悉的语言实现出该算法。这个算是工程里面的一流水平了,应该可以拿到很高工资。
第二级,不能完全理解paper和算法,但知道算法在某些特定场景下的效果和调优的方式。可以在GitHub上面找到合适的开源实现,进行使用甚至优化。如果有丰富的项目经验和实操经验会加分。
第三级,完全看不懂英文的paper,知道常用的算法,但无法区分出各种算法的优劣和适用场景,会用python,C++等语言的库进行算法组装。
大家看完上面的描述,觉得,数据,AI的核心竞争力是什么?是python语法,还是python的库?当然不是,我觉得最核心的还是算法本身,只不过对算法的理解程度的不同,会处于不同的等级。这里英文的阅读能力对很多人来说,也会成为一道坎。
目前自学和参加培训的同学大部分处在第三级,甚至第三级都没达到。有参加培训的同学过来咨询我。我问他目前是怎么学的。他说在看培训的视频,书太难了,看不懂。 如果是这种情况,恕我直言,可能永远没有机会进阶到第二级了。因为后面需要看的书籍,只会比入门书籍更难。
当然,肯定有同学有潜力,能通过自学或者培训到达二级水平或三级的水平,但路径可能比你想象的要漫长和艰难。
如果你确定入行走这条路,我建议你尝试做这么个事情。
去google(不要百度,百度出来都是一堆广告,简直误人子弟),比如:数据分析 职业发展 , 数据分析 书籍等。筛选出靠谱的文章。然后仔细的阅读,自己去整理总结,理出一个特定方向的发展路径,关键能力,要学习的课程和书籍。不一定很准确,但经过自己的整理和思考,自己对这个方向会有更深入的理解。然后再重新问自己,是不是确定要走这条路。而且做了这个事情后,你问别人相关问题,也能问得更具体些。
看完上面的文字,估计很多同学要喷我了。我本也可以写些政治正确的废话,鼓励大家努力往前。不过那么写,觉得对不住良心。所以还是写了实话。
有做工程的同学,发觉自己的发展遇到了瓶颈,然后抱怨自己所处的方向,天花板太低。于是他想转到数据方向。其实我看他所处的方向是没问题的,也有很多大牛人。只是他自己遇到了瓶颈,突破不了。对于这类同学,我的经验是。如果这个坎,你跨不过去,那么在数据,AI上面的坎,你也跨不过去。遇到了坎,不去努力突破,而是想绕过它,在后面你也依然难以突破。
最后希望大家能走在正确并且适合自己的道路上。
有热门推荐?
1.【程序员】
2.【GitHub】
3.【算法】
4.【数据结构】
▼ 点击『阅读原文』解锁更多图解 LeetCode 题目