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

news2024/12/28 3:39:39

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日,罗鹏程

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

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

相关文章

Intellij Idea生成含有META-INF的jar包

新建一个module,如果不会新建的话,参考:Intellij Idea新建module。命名为jar_test。 新建一个java类DateUtil,可以输出当前时间对应的是星期几。代码如下: import java.util.Calendar; import java.util.Date;publi…

编译原理 1 - 概述、形式语言

第1章 引论一些概念1.3 编译程序的总体结构1.4 编译程序的组织第二章 形式语言2.1 文法描述中的基本概念上下文无关文法第1章 引论 一些概念 机器语言:以0、1代码表示的机器指令所构成的语言 每一个具体的计算机系统都具有自己的指令系统 汇编语言:用助…

shiro

概述 shiro是什么 Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完成:认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程序。 为…

批量数据导入Neo4j的方式

批量数据导入Neo4j的方式 文章目录批量数据导入Neo4j的方式1、写在前面2、前置芝士3、CSV数据导入Neo4j3.1 LOAD CSV Cypher命令3.2 neo4j-admin命令3.3 Kettle导入工具4、数据导入失败5、参考资料1、写在前面 Linux版本:Ubuntu Kylin 16.04Neo4j版本:N…

分布式微服务架构下网络通信的底层实现原理

在分布式架构中,网络通信是底层基础,没有网络,也就没有所谓的分布式架构。只有通过网络才能使得一大片机器互相协作,共同完成一件事情。 同样,在大规模的系统架构中,应用吞吐量上不去、网络存在通信延迟、…

图的遍历(基础)

一、图的遍历的相关定义 遍历的定义:从已给的连通图中的某一顶点出发,沿着一些边访遍图中的所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历,它是图的基本运算。遍历的实质:找每个邻接点的过程。图的特…

跌倒自动检测雷达的应用

跌倒是老人最常发生的意外之一,据统计,我国每年有150多万老人跌倒身亡。如何及时发现和预防老人跌倒以及避免可能发生的伤害事件,已成为目前社会关注的热点。美国加州大学伯克利分校研究人员研发出一种可穿戴设备——跌倒自动检测雷达&#x…

大规模MIMO通信系统的发射端采用混合波束成形附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

阅读笔记 DAGA 低资源标记任务数据扩充方法

阅读笔记 DAGA 低资源标记任务数据扩充方法 文章目录阅读笔记 DAGA 低资源标记任务数据扩充方法前言概述IntroductionBackground1、NER2、Part-of-Speech (POS) Tagging3、Target Based Sentiment AnalysisProposed Method1、Labeled Sentence Linearization2、Language Modeli…

c#入门-命名参数

位置参数 在你填入实参时,你填入的类型和顺序都需要和形参相同。 因为默认情况下,他是按照从左到右的顺序依次填入实参的。 命名参数 你在声明参数时给变量声明的名字是有用的。 在填入实参时,可以加上名字,以指定你填入的是哪…

触觉智能分享-低成本高性能的厨电解决方案

每个热爱生活的人,一日三餐四季,柴米油盐这点小事,都值得去享受,可如何学会做一顿美味可口的饭菜,对厨房小白来说可不是易事,智能菜谱的出现,将做菜的烹饪过程进行了分步拆解,同时将…

基于STM32波形信号发生器proteus仿真设计(仿真+程序+报告+讲解)

基于STM32波形信号发生器proteus仿真设计(仿真程序报告讲解) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号:C0075 讲解仿真视频: 基于STM32的波形信号发生器proteus仿真设计主要功能&#xff1a…

nessus无法导出报告(nessus转中文报告)

nessus漏扫报告,可是nessus导出的报告全是英文,客户说看不懂(说的好像中文就能看懂似的)。找了很多nessus转中文报告的工具都不是很靠谱,今天突然灵机一动发现了一个解决nessus无法导出报告方法。总的说来就是生产一个html文件转中文。 ness…

入门系列 - Git安装与配置

Git安装与配置 要使用Git,你必须在你的电脑上安装它。要不要使用并升级到最新的Git,那取决您的需要了。 下载Git 要下载Git安装程序,请访问Git的官方网站并进入下载页面。本文写于2022-11-29,此时您可以去官网链接去下载&#…

AI教你学测试

ChatGPT这个词相信大家最近看到都不会陌生,应该刷爆了各位的朋友圈,各种分享注册教程、什么AI写代码的文章比比皆是,今天,让我们一起来看一下OpenAI能不能教我们学测试呢,对测试人员的日常工作是否有帮助呢&#xff1f…

原生API编写简单富文本编辑器004

原生API编写富文本编辑器004 遗留的问题: 设置的字体是使用 font属性,而非CSS设置的字号只接受1-7, 并且是以 size 属性而非 CSS控制,超出大小无法设置。color使用HTML的input时,始终有一个input框在那里,并且如果手…

Oracle项目业务表单设计:Oracle PrimaveraUnifier BP

目录 基本介绍 Basic Introduction 业务流程组件 Business Process Components 数据定义 Data Definitions 数据要素 Data Elements 状态 Status 表单 Forms 工作流程 (可选)Workflow 日志 Log 上部表单 Upper Form 详细表单 Detail Form 行项…

找不到msvcr110dll,无法继续执行代码,解决方法分享

找不到msvcr110dll,无法继续执行代码,电脑出现这种情况,主要是缺失了msvcr110dll这个文件。 要解决这个问题,其实不难,有多种方法 第一种解决msvcr110dll的方法 1在百度搜索下载msvcr110.dll文件 2下载后将文件放在c盘windows…

Stimulsoft Dashboards.PHP 2022.4.5 Crack

Stimulsoft Dashboards.PHP 是一个用于设计和查看仪表板的完整软件包。您可以使用该工具集成到您的应用程序中或作为独立的解决方案。同时,不需要复杂的配置或第三方模块。您可以轻松地将仪表板集成到几乎任何 PHP 应用程序中。 仪表板设计器是一个直接影响分析面板…

【推荐学习收藏】9种回归算法及实例总结的太详细了

我相信很多人跟我一样,学习机器学习和数据科学的第一个算法是线性回归,它简单易懂。由于其功能有限,它不太可能成为工作中的最佳选择。大多数情况下,线性回归被用作基线模型来评估和比较研究中的新方法。 在处理实际问题时&#…