兜兜零元 发表于 2024-9-11 23:26:58

致渺茫的程序员一封信——我的程序生涯

0、开头       

 大家好,我是罗鹏程,一个很老套的开头,哈哈哈。
        这封信姗姗来迟,与其说是一封信,不如说是来听听我的故事。从2020开始,收到过很多网友的题目,职业的选择,是做大数据还是做java;选择了大数据,找工作的时间纠结是离线计算还是实时计算,恐怕做了选择,背面的日子会责怪当初自己的错误选择。你碰到的题目,我都碰到过,接下来,慢慢听我说。
        接触过c、c++、python、java、go、rust、javascript,常用的是java、python,web范畴写过python web(django、flask),java web(sprintboot。现在专注做大数据,mpp数据库重度使用,且我相信这是未来(观点仅限个人,勿喷),并在这方面持续投入精力。
        讲讲工作上的事。做过架构师、口试官、团队负责人(5人规模),一年时间写过上百个文档,组织过20多人会议,给同事做培训,也曾接过私活(去南京出差跟国电的项目领导开会讨论技能方案),集群搭建和维护,优化接口查询(最乐成的是将20s的sql优化到毫秒级,且cpu和内存低落,为公司节流服务器本钱)。
        讲讲社区那些事,今年算是参与社区元年吧,之以是是元年,是认认真真参与社区中,其实2021年的时间参与了pulsar线下的meet up,见到了翟佳老师。今年呢参与了csdn北京总部的线下讨论会,认识了csdn的王总等大佬,9.15去上海到场了google开发者大会(赶上了台风,气死。。。),到场了微软大会等。说了这么多,看一下照片吧。
https://i-blog.csdnimg.cn/blog_migrate/902447b4c3c2c9ffe8fcdaa7cd0df827.jpeg

        https://i-blog.csdnimg.cn/blog_migrate/3fe70d29b64420ec76a85363b8ce47c4.jpeg
         关于程序员的职业生涯,这是大家都会碰到和比较想问的,下面我来说说。
1、大数据应该学什么?

        我以为起首应该认识大数据,大家常常说的大数据是什么,是大数据存储还是大数据计算,还是数仓呢。我觉得思考题目的方式不妨从大数据诞生的配景、历史、发展、办理了什么题目去思考。万物皆有源,从最初去出发。
       最开始用mysql搭过数仓,厥后迁移到starrocks。我觉得这是数据形态的变革,如果一开始的数据量就用集群去办理题目,无异大炮打蚊子,对于企业本钱而言,也是浪费。我接触过年岁大一点的程序员,他们说那会用oracle,算一个指标得好久。
        注意算一个指标得好久。这就是配景的由来,单机模式下无法办理当下的题目,或者办理题目的时效性不满足企业发展的需要了,才诞生了分布式,基于分布式这个概念才有了分布式存储、分布式计算,厥后为了提升计算速度才有了mr->tez->spark,不过这也随着硬件资源的本钱低落,内存计算比落盘更快。基于这个思路,是不是很多题目都能搞清楚呢。
        关于大数据应该学什么,应该有张图。这是2020年整理的,2021年更新过。
https://i-blog.csdnimg.cn/blog_migrate/c178aea79074f9f57ca241c83e2d4289.png
 以上是大数据应用方面的。
其次应该提升应用条理。比如flink,很多常见名词,窗口、watermark、双流join、flinksql、flink cdc、flink table、侧输出流、状态后端、状态变量、flink on yarn 、flink on k8s,还有最新的flink table store。使用一门技能,尤其是工作中重度使用的技能,要去关注发展史和最新环境,多看看会议发的文章和ppt,看看大公司是如何使用,该技能的生态、和应用场景,工作中不大概都接触到,这为了提升知识面,
最后应该关注底层,还是以flink为例,内里用了netty,akka等异步通讯,这些也是需要相识的,也可以自己上手写一个demo,亲身感受一下。平常也可以加入一些技能交流群,积极回答网友题目,看看自己是否能办理,不光资助他人,同时也积累了经验。(这对于我是一个比较紧张的学习途径)。也可以看看github上issue,看看大家都有什么题目,也可以看看pr,看看这个题目是如何修复的。

以上便是学习技能,自上而下的过程。

2、技能之争?

        好多人是Java转过来,觉得大数据给的钱多,从现状看,确实云云,打不过就加入,没毛病,阐明思路很明白啊。
        我以为呢,其实没有区别,为什么这么说呢?java程序员,通常意义上是做java后端开发,大数据工程师呢,是离线数仓写sql,实时开发写flink、sparkstreaming。本质上都是程序员,都是业务开发,也有一些是做平台开发,前者是面向用户,后者是面向开发。程序员本质是通过程序办理题目,提高生产力。
        我觉得关注点分为三方面:
        第一方面:优先办理当下工作题目。大数据为主,就多学大数据技能,尤其是当下重度使用技能和最新流行技能。
        第二方面:深入掌握一门语言。java不光可以做web开发,增删改查,也可以写服务。学习多线程、常用数据结构、网络通讯等等,这些都是各个框架底层所用到的东西,各个语言基本都有这些东西,以是深入掌握一门语言,在学习其他语言是很好很快入门的。
         第三方面:计算机底子。计算机操作系统、计算机网络原理、计算机编译原理、数据库等。
如果万丈高楼举例,计算机底子地基,编程语言是沙子,底层组件则是水泥,上层组件则是门窗楼梯电梯。
        前面讲到接触过的技能,其实我不挑技能,对什么感爱好就看什么,重点还是优先办理当下。之前写爬虫的时间,碰到一个题目卡了2天,厥后发现是使用题目,我就把requests文档通读了一遍。碰到azkaban的一个题目,我也把azkaban相关章节通读一遍。很多人也会质疑说,这么多东西学的过来吗?确实学不过来,知识面广肯定是好事,不是为了炫耀,也不是为了和人交流的谈资,而是进入这个行业,对这个世界抱有好奇和经验,只有接触过,我才知道应该专注的方向,如果一开始就做java后端开发,只写springboot,你愿意从一而终吗?以是联合自身时间、精力、工作、未来的期望综合考虑,可以或许建立自己的技能体系。
3、关于口试

        先推荐一篇文章,python口试经验之谈 ,这是2018年口试华为之后写的,华为外包,拿到offer了。我自己这几年口试不算多,但是口试通过率90%。回过头来看刚才的口试文章内容,仍旧觉得很受用。
           我也当过口试官,口试过数十人,有的人技能不是很好,但是口试体验很好,我很乐意要这如许的人。     
          项目介绍简单清晰、可以或许明白表达项目配景及作用、可以或许清晰表达自己负责内容、可以或许围绕题目回答而不是答非所问、对于不会的题目可以或许说出一二且不东扯西扯、对于简历上的内容有准备不会滥竽充数。
        以是简历环节肯定要行文流畅、字体大小同一、有重点、不堆砌。

4、最后

        想说就这么多了,不知不觉写了一个多小时,写了过程中也是回首了8年来的历程,衷心地盼望大家可以或许学好技能、找到好工作、发家致富,加油。
                                                                        
     2022年12月8日,罗鹏程

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 致渺茫的程序员一封信——我的程序生涯