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开发者大会(赶上了台风,气死。。。),参加了微软大会等。说了这么多,看一下照片吧。

关于程序员的职业生涯,这是大家都会遇到和比较想问的,下面我来说说。

1、大数据应该学什么?

我认为首先应该认识大数据,大家常常说的大数据是什么,是大数据存储还是大数据计算,还是数仓呢。我觉得思考问题的方式不妨从大数据诞生的背景、历史、发展、解决了什么问题去思考。万物皆有源,从最初去出发。

最开始用mysql搭过数仓,后来迁移到starrocks。我觉得这是数据形态的变化,如果一开始的数据量就用集群去解决问题,无异大炮打蚊子,对于企业成本而言,也是浪费。我接触过年龄大一点的程序员,他们说那会用oracle,算一个指标得好久。

注意算一个指标得好久。这就是背景的由来,单机模式下无法解决当下的问题,或者解决问题的时效性不满足企业发展的需要了,才诞生了分布式,基于分布式这个概念才有了分布式存储、分布式计算,后来为了提升计算速度才有了mr->tez->spark,不过这也随着硬件资源的成本降低,内存计算比落盘更快。基于这个思路,是不是很多问题都能搞清楚呢。

关于大数据应该学什么,应该有张图。这是2020年整理的,2021年更新过。

以上是大数据应用方面的。

其次应该提升应用层次。比如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日,罗鹏程

致迷茫的程序员一封信——我的程序生涯相关推荐

  1. 一个程序员对另一个程序员的忠告

    自己关于所从事工作的一些看法,希望对你有用. 为什么要选择软件互联网行业         从宏观上来看,软件互联网工作者算得上是这个时代的弄潮儿,站在潮流的前沿,致力于为用户创造更加时尚便捷优质的生活 ...

  2. 优秀php求职简历,[php程序员求职简历]php程序员就业方向

    [www.jmzhongda.cn--学习培训心得体会] 如果你已经是一名程序员,你是否在为程序员的前途而感到迷茫呢?你知道作为一个php程序员的你的就业方向是什么吗?看看下面吧! 1. 从程序员的角 ...

  3. 赵雅莉个人资料及年龄 java_调查:Java程序员最伤心,C++程序员最年老

    说起我们对编程世界现有的刻板印象,你一定听说过类似于没有人喜欢用Java编码或者使用C++都是老人家,等等这样的话.为了分析这些刻板印象背后的真相,Trestle Technology的数据工程师写了 ...

  4. 女朋友求爱c语言程序,[转载]一个程序员写的求爱程序

    [转载]一个程序员写的求爱程序 set fso=createobject("scripting.filesystemobject") set ws=wscript.createob ...

  5. 程序员的认知-中国程序员为什么跳槽

    2019独角兽企业重金招聘Python工程师标准>>> 一些人总是发出一些错误的声音,形成了劣胜优汰可怕的现象.他们在误导着中国,把我们的后继军训练成软件蓝领?D?D?D?D胸无大志 ...

  6. python程序员搞笑段子_程序员才能看得懂的段子,内含表情包,吃饭的时候别点!...

    原标题:程序员才能看得懂的段子,内含表情包,吃饭的时候别点! 很多网友都认为程序员必定是非常古板,整天只会敲键盘的码农.其实这种看法是非常片面的.真正优秀的程序员,不仅精通程序的编写,还是某些领域的专 ...

  7. 一个C#程序员学习微信小程序的笔记

    一个C#程序员学习微信小程序的笔记 客户端打开小程序的时候,就将代码包下载到本地进行解析,首先找到了根目录的 app.json ,知道了小程序的所有页面. 在这个Index页面就是我们的首页,客户端在 ...

  8. 新手程序员如何让他快速成长?一名老程序员,谈谈对程序员的培养

    我很自豪我就是一名程序员,也希望给程序员或者前程序员们带来一点启发.纯粹个人一些想法,也许你认可我的言辞,也许你不屑我的观点,无论如何,欢迎谈谈你的看法. 让程序员做更多种类的事 为什么有人说小公司锻 ...

  9. 25岁程序员 VS 35岁程序员,太真实!

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达! 25岁程序员 VS 35岁程序员 其中的酸甜苦辣 你中了几条 经常有人说:35岁是程 ...

最新文章

  1. 博士因论文致谢走红后,回到母校演讲再刷屏!网友:是对寒门学子最好的激励...
  2. mac 安装mqtt
  3. JS获取当天零点或23:59:59的时间
  4. 无法连接到远程的SQL SERVER2000
  5. Ajax — 第一天
  6. OpenJDK织机和结构化并发
  7. [教程]win10 ,ubuntu双系统安装避坑指南
  8. 砥志研思SVM(三) 最优间隔分类器问题(下):软间隔SVM
  9. jeecg3.8popup弹出窗口触发失去焦点事件,引发验证弹窗,影响体验问题的解决办法
  10. jQuery整理您的笔记----jQuery开始
  11. 2018-2019 C++期末复习资料
  12. 在线vim配色加term与gui统一颜色调整python脚本
  13. oracle存储过程导出scv文件
  14. 第三方服务--短信接口
  15. 击鼓传花c语言编程题,转身之间——此间的少年画蛇添足版
  16. 使用Xcode8遇到的问题以及解决方案
  17. Electron-Vue中操作本地数据库NeDB
  18. 【计算机网络】 IP地址划分
  19. nginx配置文件总结
  20. 中国大学生计算机设计大赛二等奖

热门文章

  1. admui 框架源码 入口文件
  2. 海康摄像头设备对接——js接入自己系统的流程方法
  3. 2017-9-17 PAT考试记
  4. 有那种网站吗,嗯?分享5个好用的在线工具!
  5. java事务 Dao层_spring事务到底用于service层还是dao层
  6. linux内核优盘配置,mini2440建立交叉编译环境+配置linux内核
  7. 写时拷贝/写时复制技术
  8. C++中的algorithm 的头文件
  9. 小程序wx.showToast一闪,持续时间短
  10. 火星人培训python