Skip to content

Latest commit

 

History

History
33 lines (17 loc) · 3 KB

makeafullstackcoder.md

File metadata and controls

33 lines (17 loc) · 3 KB

为什么具备技术的广度性

references:

https://cult.honeypot.io/reads/become-a-polyglot-developer/

https://www.businessinsider.com/the-top-coding-languages-with-the-highest-salary-2020-4

“我是一个objective-c程序员,不用swift, react native同样很好,很方便地解决问题“

“我喜欢Java,接受不了javascript等脚本语言“

“我喜欢面向对象,不喜欢函数式编程“

...

我们有时在交流技术的时候,时不时能听到这样的声音,其实也没什么毛病。因为现在的技术太多了,我们能很自由地选择喜欢的语言,不去接触其他语言。

但是目前的趋势和数据证明,架构师、全栈或具备更多技术的程序员更具有优势,只掌握一门技术的程序员不再具备更多优势,除非你是真正的这门技术专家,然而真正的技术专家能有几个,都是万里挑一。再者就是因为我们写的更多代码是业务代码,基本是代码的搬运工,虽然也不好搬运。当然你同时又具备深度性,那绝对更能把代码写得更整洁、扩展性、可读性等。

学习和掌握更多的技术,自己达到一定程度的技术广度性和深度性,能让你在职场或找工作时更有优势。同时也会让你更轻松、更快地在不同技术之间进行切换和运用,因为万变不离其宗,一些根本的东西是一样的,比如算法、数据结构、内存、线程、网络协议等。

达到了一定的技术广度性,你解决问题的思路更广度,思维更前瞻,也会让你更清晰地知道自己所要研究的某一些或技术的某一块,因为你知道了每种语言的使用场景,优缺点等,甚至在A语言中很难的知识点,在B语言中确实最普通的知识点。比如面向对象的运行时和javascript中的运行时。

每种技术都有其使用场景和特性,甚至有的特性是其他语言不具备的。特别是微服务的盛行,也决定了一个产品可以根据其不同的业务划分模块,每个模块又根据其场景(高并发、运算密集、模型算法等)来选择不同的技术,比如高并发的可以选择Golang来开发,模型算法可以选择Python, R来开发对应的微服务,即用对的技术来做对的事情。所以这也要求一个程序员需要具备技术的广度,并且有一定的深度。

所谓全栈工程师,个人觉得至少在纯技术上要具备前端、后端、移动端app的开发能力,且在某一块有一定的深度。当然如果你具备来运维开发等的能力,那是再牛B不过了。

但是在短期内一个程序员既要达到一定的广度,又要达到一定的深度,这是很难或矛盾的。俗话说“十年磨一剑“,虽然现在获取信息的方式更多了,但想在某个领域成为佼佼者,岂能一朝一夕的事情,都是在不断的积累、沉淀才能厚积薄发。

至于广度、深度先选择哪个,这需要根据你自己的职业生涯所需来决定。

待续。。。