后端架构师成长之路
前言
在一家小公司,既当司令也当兵,就要求 “文能PPT上讲架构,武能VIM里面撕代码”。这种状态,其实是一个开发人员,向架构师(高级技术岗),或者技术管理者(管理岗)转型的中间状态。本人原本是做linux系统的,主要集中在底层、网络驱动,以及嵌入式应用开发;机缘巧合之下,赶鸭子上架,走上了后端开发和架构。一路是跌跌撞撞,懵懵懂懂,少了些从容。
偶然,在github上看到国外精神小伙总结了一个后端程序员的roadmap,余深以为然,在此向广大后端开发者做一个推荐!
连接:
https://github.com/kamranahmedse/developer-roadmap
关于后端开发语言选择
没有参与战斗的将军,大抵也只会纸上谈兵;没有深厚开发经验的架构师,大抵也只会摇唇鼓舌。所以,先从码农做起!而开发语言,是我们面临的第一个选择。
后端语言选择面也是很宽的,开篇的推荐图中也有介绍。就我个人而言,从lua和php入手后端,之后尝试了一下java,后面转而拥抱了go语言。期间,问过度娘,“谁是最美的后端语言”?度娘说,学挖掘机上51job...
对于已经从业的人员,毫无疑问,拥抱现有的语言是最靠谱的(如果你待在一个还在用10年前的技术的公司,你首先应该考虑:是不是应该换个环境?而不是换一个编程语言),因为漫无目的的学习是很低效的,正真高效的学习是“学以致用”。当然,有余力的时候,必须扩展学习,丰富自己的技术储备;待用时,能够恰当选择,扬长避短,此情已是摸到了架构的门槛了。个人以为,架构的本质便是,“根据业务需求,选择最恰当的方案”。架构设计的过程,就是在“成本,质量,进度”的三角限定下,不断优化选择的一个过程。当然,前提是,你必须储备更多的选项。
对于准备进场的学弟学妹,师兄的建议是:立马着手开始,先弄个环境,打出口号“Hello World”。就按推荐图中,开始先学个python 或者PHP,一点毛病没有,因为简单易上手。学编程,核心学的是算法,数据结构和一些范式。至于语言,诚然,会存在较大差异,但这只是在表达方式上,核心的东西任是通用的。当你精通了一门语言后,再回头看其它的,应该不会有很大障碍。
再说到语言本身,按我的浅薄认知:
java 就像《雪中》(最近被迫看的垃圾剧)男主的佩剑绣冬:“钝锋朴拙,如世间道”。java历经多年,生态极为丰富,有很多现成的库,顺手捻来;各种架构和框架,支持完善;经过世道洗礼,坚挺如柱。但java本身,是一个重语言,对于初学者而已,学习曲线比较长(可以说很长,java基础卷I 卷II,卷III,每本都是大部头,spring家族也是“大一桶”),没有2-3年的投入,很难说“精通”二字。但学成后,堪称名门正派,江湖自有一席之地。本人起初也是抱着必胜的信念重拾java(10年前有所接触,开发过android),但奈何琐事缠身,时间成本确实有点高,完美演绎了一个“从入门到放弃”。
php也有所接触,确实语言简洁,很容易上手;现成的框架也成熟度很高,应用广泛,常年也是在受欢迎的语言排行榜中位列前茅。所带团队,起初也是PHP为主要,但后续逐步放弃:其一是因为招了更专业的架构师替我分担了,而他本人是java派的,为简化后端技术栈,而重java轻PHP;其二,PHP在分布式、高性能系统中,确实有些性能问题和部署的问题。
python是一个通用性很高的语言,虽然很少作为主要的后端开发语言,但它活跃在开发、测试、生产、运营的方方面面。是后端辅助开发和运维的最佳脚本语言。只能说 “学python不吃亏,学python不上当”。
js在国外是非常流行的,在国内也有一定的保有量,但并不是主流的后端开发语言。js本人也是皮毛,不敢妄言优劣。但作为前端,js已经代名词了。所以多少懂点,可以拉通前后端。
go语言是后起之秀,和云应用一起生长。语言简单,易学易用,而且效率高,尤其是其并发能力,技压群雄。目前很多大厂开始切换使用go作为主要后端开发语言,尤其是在一些基础架构、中间件中、云原生应用中,go语言大放异彩。对于一般企业,在业务流水线不那么复杂,没有太大子系统差异和融合的情况下,选择go语言作为主要后端开发语言完全没有问题。但,如果后台系统复杂度很高,需要多个系统协同,属于大规模或超大规模系统集成时,可能java还是优于go。毕竟,go的生态相比于java还是差了不少。很多开源库和集成度搞的架构系统,在go领域中,还不是那么成熟和完善。
阅读(1347) | 评论(0) | 转发(0) |