我是如何从计算机小白成长为技术专家的(上)?

作为一名程序员,我想大家接触最多的是计算机吧,但是一个从没有接触过计算机的小白,又是如何走上程序员的道路的呢。

农村的孩子,早当家

作为农村出身的孩子,且家里条件也不是非常的好,在我那个年代,能够读书,并且还能够读本科、研究生已经是奢望了,所以上大学的硬件条件肯定不好,比如电脑,那肯定是不会有的。

我可以毫不夸张的说,我在读大学之前,连QQ是什么都不知道,更别说电脑了。

我上高中那会,基本上没有去过学校外面的网吧,因为在家里人的眼中,去外面网吧上网和玩游戏就是坏学生,且浪费钱,当然我也不想说这样有多高尚,只是想告诉大家,在偏远的农村,确实是这个样子的。

读大学之前,我没见过计算机,也不会打字,可能是高中压抑太久了,读大学第一年就学会了去外面网吧上网和通宵,毕竟寝室的人都去,作为他们中的一员,那也要去,不然会被孤立。

那会接触计算机,绝对不是为了什么写代码,反而是为了玩游戏和看电影。当然毕竟那会计算机也开始普及起来了,大学四年我也没闲着,也去外面报培训班,拿了二级C语言和三级网络技术等计算机证书,但是还是没电脑,都有学校的付费机房中去练习编程。

我记得那会,我的本科毕业论文是在网吧写的,为了写论文,我还办了一张网吧的会员,其实我原打算是去学校的电子阅览室去写论文的,但是那个也是收费的,且机器真的很烂,人也是爆满。

我想现在很多大学生都没有体会过那种没有电脑的生活,也就是说在那种环境下,你想培养自己的互联网思维和编程思维,那是比登天还难的。

本科毕业那会,我也看到好多同学报了计算机相关的培训班,想着毕业之后去做计算机相关的工作,但是那个时候我已经一门心思的想着去考研,因为我觉得我的大学生活过的不完美,需要再延续几年。

当然最后我也如愿考上了研究生,我记得很清楚,当我拿到研究生的录取通知书的时候,我的本科论文还没写完,我晚上准备去网吧通宵写论文的时候,学校外面的广场上正在放小沈阳的小品“不差钱”,当时心情非常的好,还特意坐下来看了一会,这个印象特别深刻。

我准备考研的那一年,刚好是2008年北京奥运会,那个夏天可以说是水生火热,当然作为没有电脑的人来说,看北京奥运会只能在外面吃饭的餐馆去看看,因此那个夏天要么就是在奔赴考研辅导班的路上,要么就是在去餐馆看奥运会的路上。

我记得那一年,我听的最多的歌曲是SHE的“中国话”,可以说是大街小巷,毕竟北京奥运会,让全世界都知道中国的伟大。

我还记得那一年最流行的电视剧是林志颖的“放羊的星星”,不知道现在的小伙伴有没有看过的。

农村的孩子读大学比易,尤其是那些家里是比较贫困的,父母能够省吃俭用的给钱读书已经很不错了,其他额外的条件就不会有什么的奢望了,唯一能够期盼的是自己能够走出农村,去大城市生活。

我还记得我2002年,在家用破旧的,且还是有限天线(就是一根铝合金的棍子)的黑白电视机看到世界杯的罗纳尔多的进球集锦(只能看集锦,看直播那是不可能的),那时候别提有多高兴了。

到了2004年,换成了一台破旧的彩色电视机,在家用外接天线看雅典奥运会,我记得那会是上高中,家里是没人的,我和我的发小,一起熬夜看奥运会,我记得那会是刘翔的110米跨栏决赛,那个叫兴奋哈,估计在我们村子里面就我们两个像神经病一样在那里欢呼,为刘翔夺冠而喝彩。

在我读本科期间,我对计算机其实根本就是一窍不通,我身边的好哥们,当然后来他转专业的,从我所在的工程学院通信工程专业,转到了信息学院计算机相关的专业,可以说我的那个哥们对于计算机的前沿理解都比我深。我记得那会关于计算机的一些比较新的词汇,都是他给我说的,比如什么电子商务、卓越网、网上购物等,他那个时候也和我说过,电子商务必火,可惜后来人家回老家了,没有去大城市发展。

本科四年,我不懂什么是操作系统,什么是应用软件,什么是计算机语言,什么是机器语言,可以说我完全是一个计算机小白。

读研,改变了我的世界观

在杭州读研期间,我的世界观得到了颠覆性的改变,让我这个计算机小白不得不加倍的努力去改造自己。

家里人为了鼓励我考上研究生,咬牙给我买了一个联想的比较厚的笔记本,我记得好像是4200快吧,具体价格我是忘记了,反正总算是拥有了自己的第一台电脑。

有了电脑之后,我就可以做很多事情了,但是那会其实也没想到要用这台电脑去学编程,并且读研的实验室是有自己的台式电脑的,所以笔记本基本是属于摆设了,只能在寝室玩玩。

那个时候读研基本和上班其实没什么区别的,研究生每个月都会领到国家的几百块的生活补贴,导师再大方一点,每个月也会给项目补贴。

周一到周五,也都是早出晚归的,晚上才能回寝室,并且我那个时候的研究生宿舍,是在学校外面的,每天也都得骑自行车来回。

研一课程比较多,基本上除了上课,剩下的时间也都是在实验室度过的,也就是我压根就没有太多的时间去触碰我的笔记本。

读研也是比较自由的,除了上课和完成导师安排的工作之外,剩下的时间基本都是自己的,没人管你的,假如你碰到一个放羊的导师,那么估计你读研2年半,你都见不到导师。

我是在读研二的时候,开始意识到自己要不要搞计算机,要不要学习编程。为什么要会这么晚呢?主要还是因为在考研复试阶段,我本来是有机会去做计算机相关的研究,但是复试的时候,做算法编程笔试的时候,我没有通过,那个时候是对我打击很大的,总觉得我不是编程的料,也没有天赋。

我记得很清楚,那个时候那个研究生名额是我们学院院长的,具体是院长下面的一个小导师去带,当然我那个时候复试,他还不是院长,只是一个所长,具体是搞肿瘤识别和鉴定算法研究的,其实还是模式识别和智能算法,具体是和神经网络相关的,总是还是很高端的。

复试的时候,几道编程题做的不好,但是有一个搞理论的导师觉得我还行,想录用我到他的名下,但是这个院长后来也不知道什么原因,没同意,也就不了了之了。

但是后来这个导师还是把我推荐给了我现在的导师,但是他不是搞计算机的,而是搞生物医学的,当然也涉及到计算机,但是比重不是很大。

其实很多时候,人与人之间的接触就是看眼缘,可能城里出来的大学生眼界比较高,也比较活泼,没那么多顾虑,反而农村出来的,考虑的太多了,反而没法发挥出来。

虽然我被分配到了非计算机专业,但是我还是偷偷的在自学计算机,研一期间,自己能够支配的时间并不多,毕竟除了做生物医学的项目,还就是理论课程。

研二的时候,我就疯狂的学习计算机,什么C语言、Java语言、C++语言、MFC编程等,图书馆能够借的计算机书,我都去借。

并且我还偷偷的去外面实习,当然也是去小的互联网企业去实习,一方面可以赚点生活费,另一方面也可以积累一些编程项目经验。

其实读研究生最大的好处是让自己的眼界更高,能够接触更多优秀的人,我就列举一个例子吧。

我所在的大实验室里面,有很多导师的研究生,毕竟我不是院长的研究生,人家是有独立的实验室的。

在我这个实验室里面,有几个前院长的研究生,一个非常的好学,也是拼命的学习计算机,我每次去实验室都会看到他在C++编程,累了就看会亮剑,另外一个他们是同门,确一直打游戏(前面也说了,研二没什么课程了,基本都是自己的时间),临近毕业的时候,前面那个师兄拿了很多offer,而后面那个师兄工作都找不到,最后勉强拿了一个小企业的offer,这个就是我所在实验室的真实案例。

其实那个师兄也没有学多少技术,只是要比别人看的多一点,编程的实战能力强一点,学习能力强一点。

这个就对我的启发非常的大,虽然我的项目不是计算机的,但是我可以自学呀,于是我就开始我的计算机自学之路。

我还记得很清楚,那个时候我怕自己没有项目经验,我还用自己手上的研究生项目去包装为软件项目,并结合项目去做相关的软件研究。

我还去图书馆疯狂的借阅有项目的计算机书,比如那些图书管理系统、医疗管理系统、车辆管理系统,这些我都做过,且都是自学的。

为的就是我毕业的时候,能够手上多拿几个offer,而不至于像前面那个师兄一样,找不到理想的工作。

自学计算机的路是很苦的,尤其是你自己所在的实验室,都在做计算机无关的研究工作的时候,你会发现,你们很难会有共同的语言。

正所谓人穷志不短,就算是因为家庭原因,无法让我继续去读博士,那么我也要拼一把,努力的去计算机,让自己找到一份好的工作。

我记得那个时候,我学习Java,还停留在Swing编程的阶段,估计现在大部分Java开发都没接触过,毕竟那个时候面向Swing的图形界面编程是主流,这个是C/S架构向B/S架构转型的一个阶段,并且那个时候互联网没有现在发达,大部分开发都是面向硬件编程,而针对硬件的管理系统是非常吃香的,比如通信设备。

因此那个时候,在我们学校,只要你会编程,只要你的项目是计算机相关的,基本上都会被诸如华为、海康、大华等录用。

为什么会这样呢?主要还是这些企业的校友太多了,都是一些以前的师兄和师姐进去了,把口碑给做起来了,但是我确没有做计算机的项目,研究的是生物医学的,因此我是非常吃亏的,说白了,和你一起去面试的人,人家比你有优势,在学历相同的情况下,你竞争不过。

好吧,关于我是如何从计算机小白成长为技术专家的,我会继续在下一篇文章中去讲述。

胡弦(游侠),一个地地道道的从农村出来的程序员,大厂资深架构师,技术负责人,阿里巴巴P8专家,著有Spring Cloud Alibaba微服务架构实战派上下册,资深架构师,极客时间训练营讲师,互联网自媒体人,最具核心技术专家(KVP),电子工业出版社2021年度优秀作者,电子工业出版社2023技术成长领路人。

另外我的新书RocketMQ消息中间件实战派上下册,在京东已经上架啦,目前都是5折,非常的实惠。

https://item.jd.com/14337086.html​编辑https://item.jd.com/14337086.html

RocketMQ消息中间件实战派上下册”是我既“Spring Cloud Alibaba微服务架构实战派上下册”之后,又一本历时超过1年半的巨无霸技术实战类型的书籍。

为了提高读者阅读本书的体验性,本书总共设计了十个特色,下面我一一的给技术小伙伴阐述一下。 

【特色一】由浅到深

本书将RocketMQ的技术原理和最佳实践体系化,按照由浅到深的顺序呈现给读者,使读者可以按照章节顺序按部就班地学习。当学习完全书内容之后,读者不仅能熟悉RocketMQ的核心原理,还能充分理解RocketMQ的“根”。

【特色二】技术新

本书不仅包括RocketMQ4.x4.9.2版本)的核心原理分析和最佳实践,还包括RocketMQ5.x5.1. 0版本)的新特性分析和最佳实践。

【特色三】精心设计的主线:零基础入门,循序渐进,直至彻底掌握RocketMQ

本书精心研究了程序类、架构类知识的认知规律,全书共分为6篇:基础;进阶;高级;高并发、高可用和高性能;应用;新特性,是一条相对科学的主线,让读者快速从“菜鸟”向“RocketMQ分布式架构实战高手”迈进。

【特色四】绘制了大量的图,便于读者理解RocketMQ的原理、架构、流程 

一图胜于文,书中在涉及原理、架构、流程的地方配有插图,以便读者更加直观地理解。

【特色五】从架构师和技术专家的视角分析RocketMQ 

本书创造性地分析了RocketMQ具备高并发、高可用和高性能的功能及原理,并从架构的视角展开分析,这些也是程序员进阶为技术专家或架构师必备的技能。

以下为从架构师和技术专家的视角分析RocketMQ典型案例,读者阅读完本书之后,也能够达到这样的水准。

【特色六】不仅有原理分析,还有大量的实战案例 

本书介绍了大量的实战案例,能让读者“动起来”,在实践中体会功能,而不只是一种概念上的理解。

在讲解每一个知识模块时,我在思考:在这个知识模块中,哪些是读者必须实现的“标准动作”(实例);哪些“标准动作”是可以先完成的,以求读者能快速有一个感知;哪些“标准动作”具有一定难度, 需要放到后面完成。读者在实践完书中的案例之后,就能更容易理解那些抽象的概念和原理了。

本书的目标之一是,让读者在动手中学习,而不是“看书时好像全明白了,一动手却发现什么都不会”。通过体系化的理论和实战案例去培养读者的主动学习能力,这样本书的价值就会被最大化。 

本书相信“知行合一”的理念,而不是“只知,而不行”,避免开发人员出现眼高手低的现象。尤其是在技术面试过程中,面试官更加看重的是既懂原理,又能够主动是实践技术的技术人。

【特色七】深入剖析原理 

 本书以系统思维的方式,从业务功能视角剖析 RocketMQ 底层的技术原理,使读者具备快速阅读 RocketMQ 框架源码的能力。读者只有具备了这种能力,才能举一反三,实现更复杂的功能,应对更复杂的应用场景。

 【特色八】从运维的视角分析 RocketMQ 的最佳实践

【特色九】参与开源 

 本书向读者展示了如何修改 RocketMQ 源码,并快速验证案例分析。这样,读者可以从中学到参与开源的技能,并为后续自己能够参与开源做准备。

【特色十】双色印刷,读者体验会更好 

为了提高读者阅读本书的体验,在有上下两册的前提下(巨无霸,超过800页),出版社不吝啬印刷成本,依然采用双色印刷。

【推荐】本书的最佳学习路径 

 为了提高读者学习RocketMQ的效率,我这边结合我自身从RocketMQ小白到RocketMQ专家的经历,为读者汇总了一条最佳学习路径。

【寄语】作者寄语 

RocketMQ是我深度参与研究的一款开源消息中间件,无论是从源码,还是架构场景,我都提炼了很多最佳实践。

在开源领域,技术小伙伴可以使用的开源消息中间件非常的多,比如KafkaPulsar等,我之所以选择研究RocketMQ,除了工作内容和角色需要之外,更多的还是自己感兴趣,因此我建议技术小伙伴一定要先培养自己的兴趣,兴趣才是提升技术硬实力的第1要素。

当然我并不止研究了RocketMQ,还研究了PulsarKafka等(包括开源消息中间件生态中的主流框架),只是本书作为一本关于RocketMQ实战派的书籍,我必须要以RocketMQ为主。

假如技术小伙伴想成为Java领域的架构师或者技术专家,我强烈建议你去研究RocketMQ,它会给你带来很多意想不到的技术和架构方法论的收获,这个也是我写本书的主要目的之一。

建议技术小伙伴按照本书设计的学习路线,逐章的去阅读和实战,这样学习效果会更好。

如果技术小伙伴有技术交流的,可以通过博文视点官方的读者群找到我的联系方式,并与我沟通,我会实时的解答读者的疑问。

本文公众号“架构随笔录”

本人视频号“架构随笔录”

【博文视点】2021年度优秀作者

2021年我和博文视点合作了一本技术类型的书籍“Spring Cloud Alibaba微服务架构实战派上下册”,它是我涉足知识输出领域以来的第一本书,同时它也是我自己积累的技术池中部分技术的产出。

为了写好那本书,我几乎花费了所有的休息时间,并主动的承担了书的售后技术辅导和咨询的职责(几乎是有问必答,坚持了整整两年)。

所谓有付出总会有回报,Alibaba这本书的销量还不错,我也因此获得了博文视点颁发的2021年度优秀作者。

我很清楚,这个是博文视点为了鼓励我继续去用心写书,因此我又花了接近1年半的时间去写了RocketMQ消息中间件实战派上下册这本书。

所谓一分耕耘一份收获,我将我对RocketMQ的理解体系化的输出给喜欢技术的技术人,希望真的对大家有帮助。

 【博文视点】2023技术成长领路人

2022年,我开始涉足技术直播和技术讲师领域,并和博文视点合作几次技术直播,直播效果还不错,再加上我孜孜不倦的布道“Spring Cloud Alibaba微服务架构实战派上下册”这本书相关的技术,并且这些技术都是有助于“技术人”快速成长的,因此也获得了博文视点颁发的“2023技术成长领路人”这个技术奖项,这个奖项也是为了鼓励我继续通过技术直播的方式给技术人去布道技术,因此只要我有时间,我就会孜孜不倦的去讲和聊技术。

【四维口袋】2022 KVP最具价值技术专家 

2022年,我开始涉足企业培训和相关技术直播,并和“四维口袋”合作了几次技术直播,并荣获了2022 KVP最具价值技术专家的技术奖项。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/610812.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络配置与抓包工具介绍

目录 一、配置命令 1. ifconfig 1.1 概述信息解析 1.2 常用格式 2. ip 2.1 ip link 数据链路层 2.2 ip addr 网络层 2.3 路由 3. hostname 3.1 临时修改主机名 3.2 永久修改主机名 4. route 5. netstat 6. ss 7. ping 8. traceroute 9. nslookup 10. 永久修…

springcloud Config配置中心

简介 服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。 SpringCloud提供了ConfigS…

Android SDK环境搭建

一、Android SDK简介 SDK:(software development kit)软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。 因此,Android SDK 指的是Android专属的软件…

【Java集合篇】HashMap的remove方法是如何实现的?

HashMap的remove方法是如何实现的 ✔️典型解析✔️拓展知识仓✔️HashMap的remove方法的注意事项✔️HashMap的remove方法的参数类型✔️ 删除键和值的参数类型有什么区别✔️删除键值对的场景是什么 ✔️HashMap remove方法是阻塞队列的吗✔️HashMap remove方法是线程安全的…

如何使用web文件管理器Net2FTP搭建个人网盘

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人…

Linux 常用指令汇总

Linux 常用指令汇总 文章目录 Linux 常用指令汇总[toc]前言一、文件目录指令pwd 指令ls 指令cd 指令mkdir 指令rmdir 指令tree 指令cp 指令rm 指令mv 指令cat 指令more 指令less 指令head 指令tail 指令echo 指令> 指令>> 指令 二、时间日期指令date 指令cal 指令 三、…

Mars3D与mars3d-cesium版本间兼容造成3dtiles和gltf数据处理相关记录

说明: 1.在引入Mars3D SDK后正常可以在F12打印的信息中可以看到Mars3D和Cesium版本信息。 2.在项目的package.json文件中同样可以看到安装后的版本号。 Mars3D对Cesium版本对应关系: 1.正常情况下mars3d依赖的cesium均是最新版本,并且对cesi…

53K star! 平替TeamViewer,试试这个开源神器

还记得以前工作上遇到困难,会申请开发大神远程帮忙,那时候用都是TeamViewer,但是随着TeamViewer的收费,这些都已成为过往。 今天我们推荐的开源项目就是让你可以轻松平替TeamViewer,一款远程桌面神器,本项…

Antd使用table同时使用scroll和fixed定位,滑动导致左右高度不统一

今天使用组件里Table时候&#xff0c;遇到一个业务场景就是在有scroll控制滚动条的同时&#xff0c;固定部分列&#xff0c;就出现的如题的bug 问题&#xff1a;无法对齐 代码&#xff1a; <TabledataSource{data}scroll{{ y: calc(100vh - 275px), x: 1200px }}columns{t…

智能合约介绍

莫道儒冠误此生&#xff0c;从来诗书不负人 目录 一、什么是区块链智能合约? 二、智能合约的发展背景 三、智能合约的优势 四、智能合约的劣势 五、一些关于智能合约的应用 总结 一、什么是区块链智能合约? 智能合约&#xff0c;是一段写在区块链上的代码&#xff0c;一…

Simpy简介:python仿真模拟库-03/5

一、说明 在过去的两篇文章中&#xff0c;我们了解了 simpy 的基础知识、声明变量和处理表达式。值得注意的例子包括评估导数和积分。现在&#xff0c;让我们继续使用函数。 二、SymPy — 函数类 SymPy 包包含 sympy.core.function 模块中的 Function 类。该类作为各种数学函数…

构建labelstudio镜像的时候,报错node:18,如何解决

解决方案&#xff1a; vi Dockerfile # syntaxdocker/dockerfile:1.3 FROM --platformlinux/amd64 node:18.16-bullseye-slim AS frontend-builder18改成 18.16-bullseye-slim

【漏洞复现】锐捷EG易网关login.php命令注入漏洞

Nx01 产品简介 锐捷EG易网关是一款综合网关&#xff0c;由锐捷网络完全自主研发。它集成了先进的软硬件体系架构&#xff0c;配备了DPI深入分析引擎、行为分析/管理引擎&#xff0c;可以在保证网络出口高效转发的条件下&#xff0c;提供专业的流控功能、出色的URL过滤以及本地化…

【2024系统架构设计】 系统架构设计师第二版-通信系统架构设计理论与实践

目录 一 通信系统网络架构 二 网络构建的关键技术 三 网络构建和设计方法 四 案例分析 注:本节内容可作为知识储备,做一个基本的了解即可。

Linux-命名管道

文章目录 前言一、命名管道接口函数介绍二、使用步骤 前言 上章内容&#xff0c;我们介绍与使用了管道。上章内容所讲的&#xff0c;是通过pipe接口函数让操作系统给我们申请匿名管道进行进程间通信。 并且这种进程间通信一般只适用于父子进程之间&#xff0c;那么对于两个没有…

原来这些小众知识库软件这么好用,挖到宝了

在企业管理中&#xff0c;知识库的作用越来越被重视。它不仅可以提高工作流程的效率&#xff0c;还可以最大限度地利用企业中的知识资源。然而&#xff0c;在众多的知识库工具中选择一款合适的并非易事。不用担心&#xff0c;今天我要为大家揭晓一些小众却非常好用的知识库软件…

微信小程序实战-02翻页时钟-2

微信小程序实战系列 《微信小程序实战-01翻页时钟-1》 文章目录 微信小程序实战系列前言计时功能实现clock.wxmlclock.wxssclock.js 运行效果总结 前言 接着《微信小程序实战-01翻页时钟-1》&#xff0c;继续完成“6个页面的静态渲染和计时”功能。 计时功能实现 clock.wxm…

Linux前后端项目部署

目录 1.jdk&tomcat安装 配置并且测试jdk安装 修改tomcat 配置文件 登入tomcat 发布 安装mysql 导入sql数据 发布项目war包 redis安装 nginx安装 配置nginx域名映射 部署前端项目 centos 7的服务安装 安装jdk 安装tomcat 安装Mysql 安装redis 安装nginx 前后…

【Unity】Timer计时器属性及使用

可以代替协程完成延时操作 可以不用Update进行计时 GitHub开源计时插件 网址&#xff1a;https://github.com/akbiggs/UnityTimer/tree/master 导入&#xff1a;URL&#xff1a;https://github.com/akbiggs/UnityTimer.git 基本功能&#xff1a; 创建计时器&#xff1a; Time…

深入理解 Hadoop (四)HDFS源码剖析

HDFS 集群启动脚本 start-dfs.sh 分析 启动 HDFS 集群总共会涉及到的角色会有 namenode, datanode, zkfc, journalnode, secondaryName 共五种角色。 JournalNode 核心工作和启动流程源码剖析 // 启动 JournalNode 的核心业务方法 public void start() throws IOException …