作者面对面 | 非科班出身的技术狂人是如何炼成的

「作者面对面 (Chat Chat)」是 GitChat 团队出品的一档对话技术写作者的栏目。我们希望通过展示更多 Chat 作者的视角,来分享程序员关于生活和工作的态度,以及学习和成长的经历。立足于写作,但不限于写作。

作为非科班出身的程序员,没有相关学历傍身,就算通过自己的努力具备了同样的技术能力,在面试时仍然容易遭受偏见。

在前几期的访谈中,我们聊到非科班的前端程序员成长之路,这一次我们找到一位非科班的后端程序员作为采访对象。与 GitChat 作者范蠡聊一聊,非科班出身的他,是如何一步步成长为一位热爱技术的开发者的。

能否介绍一下你自己和你正在做的事?

大家好,我叫范蠡。做过客户端开发经理、产品经理、服务器主程,做过股票资讯系统、金融交易系统、即时通讯、直播、游戏等项目。有多年 C++、Java 等后端开发经验。2018 年年底从携程旅行网离职,目前与人合伙创业中。一句话总结:技术狂人,废寝忘食地热爱技术。

你是如何成为程序员的?

我大学学的其实并不是计算机专业,我的专业是地理科学,按正常的轨迹来说,应该会成为一名高中地理老师。开始接触编程是因为大学担任过学生会副主席,负责学院的网站建设。因为没什么人指导,所以自学了 Web 开发相关的知识,遂对编程产生了兴趣。

读研的时候选择了计算机相关专业,然后又恶补了很多了计算机相关的专业课,并且看了很多经典计算机书籍和源码。后来我放弃了去国企的机会,来到上海成了一名程序员。一言以蔽之,兴趣使然成了程序员。

在你的学习或职业生涯中,遇到的最大挑战是什么?你如何克服?

我是一个非常喜爱技术的人,我的职业规划就是想成为一个技术牛人,开发出给许多人使用的高性能系统。因此这么多年一直不断学习和总结。我在 GitChat 上出品的 《Linux GDB 调试指南》和《C/C++ 多线程编程精髓》从某种程度来看也是我对自己技术成长的一个总结吧。

IT 行业对于程序员的要求其实是不断接受和学习新的技术和思想。前段时间看一位牛人的博客,里面谈到人对外部世界的认知区域,感觉对于程序员来说挺有用,也正好适合我想表达的想法。心理学认为人对于外部世界的认识可以分为三个区域:舒适区(comfort zone)、学习区(learning zone)、恐慌区(panic zone)。

比如我们看一本书,如果这本书所说的内容都是我们熟悉的,完全符合我们的人生观和世界观,那么这本书就在我们的舒适区内。但如果这本书说的内容和我们的人生观和世界观不符,但我们在思考后之后仍能接受理解,那么这本书就在我们的学习区内。如果这本书所讲的内容在我们阅读时很难理解和吸收,那么这本书就在我们的恐慌区内。

心理学研究说,只有在「学习区」内做事,人才会进步。所以我们要走出自己的舒适区,克服恐慌,这样才能不断进步。

通过写专栏,比如《Linux GDB 调试指南》,你想向读者传递什么?从你的角度看,你的收获是什么?

「工欲善其事、必先利其器」。作为一名合格的软件开发者,至少得熟悉一种软件开发工具和调试器。GDB 是 Linux Linux C/C++ 后台开发必须熟练掌握的调试工具。另外,学会了 GDB 调试,就可以对各种 C/C++ 开源项目(如 Redis、Apache、Nginx 等)的学习做到游刃有余。因此想从事 Linux C/C++ 开发的读者,GDB 是一定要掌握的。

通过这个专栏,我也接触了形形色色的读者,在与他们的交流中我也收获了很多。另一方面,在与 GitChat 老师接触的过程中我也学会了很多写作技巧和排版技巧。

除此之外,你还是专栏《C/C++ 多线程编程精髓》的作者。在各种技术和编程语言日新月异的今天,对 C/C++ 的未来你是怎么看的?

坦白说,C/C++ 并不是我的第一门语言,我学得比较好的第一门语言是一种叫 ActionScript 的语言。在厌倦了上层各种封装和掩盖原理的业务开发后,我对底层实现产生了兴趣,于是我重新拾起了 C/C++。

软件开发行业,C++ 语言的诞生有三十多年了,C 还要更早。虽然,新语言新技术层出不穷,但构成我们现代信息大厦的基本技术和原理从未变过。C/C++ 就是这座大厦的地基很重要的一部分。很多人惧怕或者诟病 C++ 是因为 C++ 的难和繁。一方面可能是这些人并不熟悉 C/C++,另外一方面是 C/C++ 语言本身的历史包袱原因。

C/C++ 这门语言与其他语言不太一样,其本身不具备「语言完备性」,必须借助所在操作系统平台的 API 来实现一部分功能。因此也要求学习者必须了解非常多操作系统原理方面的知识。反过来说,C/C++ 的学习者也能收获很多操作系统方面的知识和技能。

但是 C++ 缺失「语言完备性」的情况正在逐步改变:从 C++11 新标准开始,C++ 变得像一门新的语言,之后的 C++14/17/20 更让这门语言的「自带功能」越来越完善,语法越来越简洁。

因此我认为,未来的 C/C++ 在保持高性能高效率的同时,也会变得更方便使用和平易近人。

对其他学习或奋斗中的人,你有什么建议?

我是一名开发者,所以就关于软件开发这条路分享一下我的建议吧。

要喜爱技术,兴趣在任何时候都是最好的动力。作为一名开发者,一定要把技术学好,因为它是你吃饭的家伙。

  • 提高你的技能,能让你在职场上和收入上有立竿见影的效果;

  • 提高自己实质性的能力,在职场中成为无可替代的人;

  • 踏踏实实做技术,不要附庸风雅地整各种技术名词,而是要弄懂技术背后的原理;

  • 精益求精反复总结,你需要定期总结和提炼你的技术知识。

职业规划要趁早,明确自己想要什么,成为什么样的人。有脱离自己舒适区的毅力,不要为了一点蝇头小利去一个地方选择一份工作,而是为自己的技能提高做投资

职业生涯的前几年,当你决定选择一份工作时一定是因为有利于成长,而不因为工资高。我的几份工作都是为了习得某一种技术栈而做的选择。当然,这种选择会有痛苦,但是只要你最终能达到目标,所有的痛苦都会成为宝贵的人生经历。

因此,悠闲舒适的地方我不去,看不到大多数源码让我觉得无法提高的地方我不去

经常玩知乎的人应该知道,知乎上各种「技术大神」动辄月薪三五万;还有学生群体讨论某某同学、师兄拿到 sp,年薪四五十万。这是典型的臆断妄想症。试想,年薪四五十万平均到每个月是多少钱?换位思考一下,IT 行业从原来的高级脑力活动变成工厂式的制作流程,一个几千或稍高工资就能招来的人干的活,如果你是老板,你会花高价招干同样活的人吗?当然不排除少数天才和各种研究性人才,虽然人人都渴望高薪,但多数人都停留在嘴上或想法中,只有凤毛麟角的人付诸于行动。

不要停止学习基础知识,不要盲目去跟风时下流行的技术,注重内功培养,肯为自己的提升投入时间和金钱。**在学习上对自己抠门的人,时间久了,必将泯然众人矣。**如果你分不清什么是内功,什么是流行技术,我建议你一开始工作时不要去从事像 Python、Go 这样的语种的开发。

做技术要有产品思维,技术本身不会给你带来财富,但相应的业务可以。一般某一行技术好的人很多,但是既熟悉业务又懂技术的人就难能可贵了。

点击阅读原文,关注范蠡

Guess you like

Origin blog.csdn.net/GitChat/article/details/103932398