从事java开发行业,如何从优秀变为卓越

时间:2021-01-20 20:20:27

  优秀还是卓越跟算法没有直接联系,我也不认为开发者都应该投入很大的精力在算法上,这终究还是和做的事有关系。比如我们这边偏向业务,解决的多是工程上的实际问题,依赖的是技术栈和工程经验,去深入研究算法的投入产出比不高;同属于我们部门的腾讯优图,其产品主要也是面向移动端,但对他们来说,Android或者iOS只是一层皮而已,核心都是算法,研究算法的价值当然很大,所以对算法的要求自然也非常高。题主的问题比较多,分几个方面回答:

  1. 去大公司就得研究算法和数据结构?

  研究这个词用的太重,大公司大部分岗位对算法的要求也并不高。我不是科班出身,读书时虽然做了很多算法方面的工作,但主要是在Neural Network方面,跟传统意义上CS的算法差别很大。找工作之前翻完了算法导论、编程之美,写白板刷LeetCode,在真正开始找工作的时候倒也没有在算法上吃很大的亏。我相信稍微有点经验的程序员都不会轻视算法的重要性,算法对于大部分程序员来说,应该是其知识体系的一部分,但没有必要刻意夸大一般面试算法的难度,也没有必要刻意拔高算法的重要性。我们这边在面试的时候,也更倾向于把算法当作作为一种基础能力考察,而并不是一味深究。我自己在面腾讯的时候写了4道白板,都是常用的算法和数据结构,但真的要说难度,并不高。

  2. 开发Android应用软件很轻松?

  这是一道送分题。

  3. 如何成为卓越的开发者?

  卓越的开发者标准很多,但我个人的总结,在技术上最终就是一点:可靠。回身看看你的身边,什么样开发者能让你觉得可靠?

  高效的产出高质量代码,迅速解决开发中存在的BUG,对于需求提出合理的解决方案,领导解决困难的问题。

  但要做到可靠谈何容易!这依赖的是你不断高质量的完成最核心的需求,解决别人解决不了的BUG;依赖的是你每次都能提出最合理的解决方案,让大家少走弯路;依赖的是面对一个所有人都未知的领域,你能抽丝剥茧,带领大家攻坚;依赖的是在发生事故时,有你在就一定能力挽狂澜,把损失降到最低。那能做到这些的背后是什么?是扎实的技术栈,是对整个项目完全的理解,是超强的执行力、判断力和沟通能力。如果在你的团队中,大家都觉得你是一个可靠的人,那我相信你一定也是一个卓越的人。