欧易

欧易(OKX)

国内用户最喜爱的合约交易所

火币

火币(HTX )

全球知名的比特币交易所

币安

币安(Binance)

全球用户最多的交易所

程序员的黄金奋斗时期是前5年|专访CSDN博主丁威

2022-10-10 19:17:29 3624

摘要:采访嘉宾 | 丁威 编辑 | 张红月出品 | CSDN(ID:CSDNnews)或是冥冥之中自有安排,亦或是坚持不懈努力得来,你是因何踏入程序员这个行业的呢?写代码,改Bug,一千个程序员,可能就有一千个与代码的故事……程序员甲,大学专业被...

采访嘉宾 | 丁威 编辑 | 张红月

出品 | CSDN(ID:CSDNnews)

或是冥冥之中自有安排,亦或是坚持不懈努力得来,你是因何踏入程序员这个行业的呢?写代码,改Bug,一千个程序员,可能就有一千个与代码的故事……

  • 程序员甲,大学专业被调剂,从此深深爱上了写bug……

  • 程序员乙,听说土木工程毕业不好找工作,于是赶紧转行学了编程

  • 程序员丙,因喜爱玩电脑、拆装手机,从此走上了编程的不归路,虽然我会修电脑,可我是真正的程序员

  • ……

今天,CSDN程序人生频道了采访了在职场混迹十年,依然对技术全情投入,饱有百分百热情的丁威老师,他是《RocketMQ技术内幕》作者,RocketMQ官方社区优秀布道师,CSDN 2020博客之星亚军,“中间件兴趣圈”公号号主。

丁威

丁威目前在中通快递研发中心基础平台担任资深架构师,主要负责全链路压测、消息中间件、数据同步、缓存等中间件在中通等研发与落地,日常主要关注中间件领域,他认为中间件在分布式架构体系中占据举足轻重的地位。主流分布式架构体系通常包含微服务、网关、服务治理、消息、缓存、调度、存储(关系型数据库、NoSQL)、分库分表等,每一个领域都会存在多款优秀的中间件,掌握中间件、深入理解各个中间件的设计理念,无疑将极大的提升对分布式架构的理解。

因“找工作” 与Java结缘 开启程序生涯

丁威大学专业是网络工程,大一第二学期接触到了C语言,但真正令他开启编程之路的则是大三选修的Java。步入大三下学期,离毕业越来越近,大家不得不面对“找工作”这个难题,而当时充斥的信息都说网络专业不好找工作,丁威表示:“作为一个名贫困生,如果读完大学无法找到工作,对我这样的家庭是致命的,经过一番调研,选修了Java课程,正式开启了编码之路。”

在谈到大学里的课程是否重要时,他提到:“不是读书无用,而是方到用上方恨少。”大学大部分专业课程在毕业后第一次找工作或许没有什么助力,但随着程序生涯逐渐深入,才会明白那些课程是多么重要。

作为离开校园10余载的程序员,他依然对如下几门课程印象颇深:

  1. 高等数学

  2. 计算机操作系统

  3. 数据结构与算法

  4. 软件工程

程序员奋斗的黄金时期

作为入行10年,经验丰富的程序员,丁威表示:结合自身工作经验,程序员的黄金奋斗时期是前5年

回顾自己的程序生涯,他觉得前五年一定要做好职业生涯规划并付诸努力行动。

  1. 第一份工作真的很重要,如果有好的学历背景,找工作时不能将就。

  2. 如果没有好的学历背景,也无需气馁,要一开始就为自己树立一个远大的目标:一定要凭着自己的努力,励志进入所处行业的头部企业。

  3. 有了目标,工作的第一年主要扩大自身知识面,点到为止,以便快速完成日常工作;进入工作第二年后,就要开始打牢基础,刨根问底,探究原理,快速成长。

此外,他还分享了自己的进入高并发领域的一次面试经历:“在2016年跳出舒适区去面试的时候,我发现面试官张口闭口就是分布式,高并发,而这又是我极为欠缺的。但能够进入拥有高并发的业务场景也不是一件容易的事情,想从实战中学习高并发更是可遇而不可求。”

作为一名没有高并发经验的程序员来说,要想有机会接触高并发,唯一能做的是先具备高并发的技能,而学习各个领域中的中间件,无疑能助力见识高并发的编程技巧,并且中间件也是分布式架构体系的支柱,故从2016年9月开启了中间件的学习之路,持续至今,会一直记录了我的学习成长历程。

与Bug打交道的日子

在分享技术之路方面,丁威谈到,C语言算是入门语言,而真正把他领入编程之路的是Java,此外,目前在工作中还会用C++、Go、Python等语言。对于准备踏入编程领域的同学来说,认真学好一门语言,后边可以基于自己的兴趣及工作业务需要,再扩展其它语言的学习,这样会容易很多。

那么,在编写代码时,程序员最讨厌跟“谁”打交道,那肯定非bug莫属了。丁威曾在博客发表过《困扰我半年之久的RocketMQ timeout exception 终于破解了》一文,为什么会这么久?丁威表示,该Bug之所以困扰半年,并不是说半年一直在处理,其中一个非常重要等因素该问题等定性:重要而不紧急。

对于超时问题,程序员很容易根据经验定性为网络原因,而且由于他对RocketMQ非常熟悉,有充足的证据证明RocketMQ服务端写入耗时非常低,将技术问题初步定性为网络问题,从而将问题抛给网络组同事,由于跨部门协作,并且该问题不紧急,各个职能部门有自身的OKR,协调起来比较麻烦。

在谈到Bug及突发事故的处理流程方面,他表示,面对BUG,或者生产事故,一个非常重要的突破口:询问是否有变更,优先回滚,优先止血恢复问题,然后才是分析与排查。排查BUG,通常是根据错误异常栈,定位代码,结合日志分析即可。

技术成就多彩人生

除了担任架构师一职,丁威还是RocketMQ官方布道师。2017年,阿里巴巴将 RocketMQ捐赠给Apache基金会成为Apache的顶级项目。与此同时,RocketMQ也深深吸引了丁威了关注,RocketMQ性能为何如此高效,背后运用了哪些技术?如何实现刷盘?定时消息、消息过滤等实现原理……

好奇心带来学习力,彼时,丁威正式开启RocketMQ源码研究之路(
https://blog.csdn.net/prestigeding/category_7034876.html)。与目前主流的消息中间件Kafka、RocketMQ、RabbitMQ相比,丁威觉得RocketMQ的优质特性有:

  1. 编程语言是Java,众所周知Java是当今最流行的编程语言;

  2. RocketMQ提供了消息检索功能,是回怼项目方质疑丢失消息的最佳法宝;

  3. 提供消息重试、定时消息、事务消息、自动位点提交等业务开发必须等功能。

  4. 架构简单清晰,运维成本低。

布道师也可以理解成技术推广专家,需要经常分享技术实战,参与社区组织的技术活动,对此丁威表示,程序员参与技术分享,打造技术影响力,拓宽人脉圈,助力职场,形成“品牌”溢价。

他说道:技术分享并不会牺牲工作效益,反而会提高生产力,但我们坚持一个原则,在公司,除非进行与工作相关的技术调研,业余学习必须利用业余时间,并且可以优先攻破公司中目前选用的技术栈。

程序员如何快速入行中间件领域,他表示:补齐基础,勇往之前。中间件开发的必备基础:Java集合、JUC并发包、Netty(NIO)网络编程。

入职中间件的职业发展方向,丁威介绍到:“中间件方向其实有两条路线,中间件研发人员(技术创作者)、中间件应用人才(技术架构师),大家根据自身情况选择即可,都可以成就一番事业。”

最后,丁威也分享了他的座右铭:越努力越幸运,唯有坚持不懈。与读者们共勉。

版权声明:本站所有文章皆是来自互联网,如内容侵权可以联系我们( 微信:bisheco )删除!
友情链接
币圈社群欧易官网