写给新手程序员的一封信

news2024/9/22 11:35:01

为什么写这篇文章

我是一名毕业四年的后端开发(可能会很多人来说,工作时间也没多长嘛),但是在这四年里,我写过PHP、Go、vue、做了两年多的敏捷团队管理,也设计过一些系统的架构。也算是有着相对较丰富的项目经验。在这几年,我的成长一直十分的明显,比如在当前的公司,我从转正的评级 6级(应届生级别),经过两年多的努力,升到了9级(相当于公司的中高级开发,10级是高级开发,也是组长的基础职级),因此我也想对过去的自己,简单总结一下,同时提供一些建议给新手程序员,希望可以帮助到大家。

一些建议

1、多写代码(重要程度:四颗星)

不要听公司老人抱怨工作枯燥,没有挑战性,新手一定要多写代码,工作初期,新手和老手最大的区别就是经验的差距,有些东西新手可能要搞好几个小时才能解决,老手可能只需要花个几十分钟,你不需要崇拜他们,其实他们也只是做了太多这种东西了,只是十分熟练而已,就好比你考试一样。人家刷了几年的题,你才刚做题,肯定是做的又慢错的又多,这是十分正常的,因此,如果你不是天才,只是一个普通人,一定要多写代码积累经验,很多东西你不实践是很难去积累真实的经验的,只有你做了很多很多的业务,写了很多很多的代码,才能慢慢成熟起来,熟练起来,当然写的多,也要不定时的做下总结和笔记。

2、基础很重要(重要程度:五颗星)

你可能在很多文章都看过很多人都在强调基础了,这点我也想强调,基础是决定你未来高度的重要因素(可能你现在还无法感知到),当你到了一定的层次,需要从网络、操作系统的层次来分析问题时,你此时就可以明白基础好和基础差的同学的差距了,我举个例子,有个组说我们的接口在某个时间响应较慢,我的思考过程是这样的。
他的机器到我的机器经过了哪些链路,链路的每个节点之间是不是有问题。(网络延迟?抖动?)
请求到了我的机器,我的机器资源的情况是否有问题。(CPU、磁盘IO、内存等情况)
接口的代码是否编写存在缺陷。
sql 或者命令语句是否存在问题。(慢SQL?)
依赖的第三方系统是否正常。(比如数据库是不是炸了?)。

如果是基础较差的同学,他可能直接先从代码开始分析。跳过了网络层和操作系统的问题。先看代码是否存在缺陷,再看sql 是不是慢查询,再分析数据库的负载情况。

最后我通过对日志的分析和各类资源的监控面板的分析,确定了是网关的问题,并且报告给了运维,将分析的数据和证据给到了他们(一开始他们还不肯承认是网关问题,最后看我的分析报告没有逻辑破绽,才承认了),再简单举个例子,我们有个服务一直报协程泄漏,组员查了很久都没查到是哪里的代码出现了协程泄漏,然后我通过pprof 结合 POD的TCP连接情况,以及服务发现的iP和服务的映射关系,发现是我们公司的一个文档服务一直在和我们的服务进行长连接的通讯,一直不释放, 导致协程数一直线性增长。类似的例子还有很多很多,大多都是非业务代码的问题导致的。如果你不懂网络,是很难发现原因的。所以当你掌握了基础,你是可以解决稍微更深的问题的。这也是你和别人不一样的地方。

3、学会向上管理(重要程度:三颗星)

这对新手来说可能会比较难,但是当你学会了向上管理,你就更容易得到更多机会晋升,算上实习的话,我呆过了好几家公司,我发现那些有机会晋升的人,往往都是存在感很高的人,我们常说会哭的孩子有奶吃,这句话我在职场中验证过,在某些公司确实是这样的,身边大多数没有机会上去的人,基本都是没有学会向上管理,对管理层来说,他们也都是容易替换的一群人,也是适合干活的人,一个团队中,必然有着这几类人,先驱者,创新者,劳苦者。所谓的先驱者,就是有一定的领导天赋,大家愿意听他的话,可以带领大家实现更高的价值,属于领导者(要做到这个真的很难,它和老板不同,老板只能靠职级压迫员工干活,而领导者可以让员工心甘情愿、高高兴兴帮他卖命),创新者则是团队中比较有想法的一群人,他们经常勇于尝试,热衷技术,有专研精神,可以帮团队输出高价值、有亮点的东西,而劳苦者则是默默不闻干活的人,其实他们做的大多数都是苦劳,对于有些只看重功劳不看重苦劳的公司来说,这些人是最好替换的劳动力(其实大多数公司都不看苦劳,你加班干活,别人不加班,这对资产阶级来说就是你工作能力不行,虽然态度可以,愿意加班,但是下次有裁员会优先考虑你,因为这类人最难给管理层输出可以向上报告的成果)。
那么怎么学会向上管理呢,我举个例子。

比如说,有个专项交给了你。我们如何让领导放心呢。

1、输出可行的技术方案并主动与其讨论
2、明确工作量和人员分工,列出开发计划
3、定时汇报工作进度和相关的问题,记录解决方案,如果有风险及时汇报会给出解决方案
4、项目完成后,复盘分析过程中遇到的问题,沉淀经验
5、让领导给你反馈意见,哪些地方可以改进

如果你这么做,我相信,慢慢的,你的领导会对你越来越看重,越来越放心,有重要的事情才敢交给你,但是你还是需要及时的汇报进度和风险。让整件事情可以闭环。

再举个例子,当团队遇到了一个问题的时候,你要及时的反馈这个问题的解决进度,不要等着领导问你才回答,而是积极的去汇报,在你认为他要做某件事的时候,你提前做了,在他动口之前,就先把答案告诉他,换位思考。所以我才说你需要了解你的领导,明确他的做事风格,管理层平时是比较忙的(虽然管理层大都不写代码不开发,但是有很多的会要开,很多的事情要跟进,很多的文档、表格、PPT要填写,很多的人要沟通,这也是我这几年的感受),当然,向上管理其实更需要你根据实际的工作场景做出合适的动作,我这里只是抛砖引玉,你可以在网上找几本看看,这个真的很重要,决定你的前途发展。

4、职场沟通(重要程度:三颗星)

大多数程序员都是不喜欢沟通的,可能都比较的“内向”,有人说,我写代码做IT就是不想和人打交道呀。其实你写代码也是跟机器在直接沟通,别人读你的代码也是在间接和你沟通,所以这也是属于沟通的一部分,也有很多人在网络上十分的活跃,到了现实一句话都不敢讲,其实这都是沟通能力差的表现之一。

在工作中,沟通也有很多的技巧,如果沟通能力差,很容易会导致协作效率低下。比如说经典的 X/Y 问题,举个例子,有个开发问你怎么获取字符串的最后三位字符,有的人可能直接就给他写了,有的人则会问他要这么干嘛,他说他想要获取文件的后缀。文件后缀可不一定是最后三位字符,而且基本上大多数语言都有现成的函数可以使用,明明问题是 X,但是他却问了 Y,所以在日常沟通中,和别人协作,多问一下背景是什么,这样才可以尽量避免发生 X/Y 问题,而且知道问题的本质,你也可以给出更好的方案或者建议。

我在日常和产品沟通需求的时候,经常会问他这个需求的背景是什么,是为了解决什么问题,对用户来说有没有价值。一般相对专业的产品,都会提前思考这几个问题,并给出回答,此时我会站在技术的角度上分析产品给的方案是否合理,从各个角度去分析方案的优劣势,尽量保证不要给未来的人留坑。

沟通过程中,我们也尽量保持中立的态度,不要情绪化,工作中确实会遇到一些很奇葩的人,但是大家应该都是奔着解决问题的方向去前进的,如果那个人确实很过分,就及时上报,但是你不要被他抓到把柄,做好自己,做好本职的工作就可以了。我就遇到过奇葩同事,整个部门的人都认为这个人性格有问题,甚至部门负责人和HR和他的直接上级都找他聊过,让他平时好好沟通,不要动不动发脾气,影响同事和谐关系,遇到这种人,尽量少接触就好了,这也是考验你的忍耐力的时候。

5、和同事搞好人际关系(重要程度:2颗星)

为啥要提这个话题呢。有些文章会说,在职时不要把同事当朋友,免得被坑。其实这句话我想反驳。作为公司的内推王(一年内推进来了8个人),我有挺多的朋友,也有很多关系比较好的同事,有些同事虽然没在一起工作好几年了,但是我们还是会经常的交流。在这里做中台的这几年,我和公司形形色色的人打过交道,普通研发,基层管理,部门负责人,产品总监、架构师,财务,产品运营,销售,他们都咨询过我问题,或者我找过他们开过会啥的,甚至每个部门我都基本有一两个有私下联系过的同事。因为找我的人太多了,因此我写了个自查文档。
在这里插入图片描述我才发现公司很多人认识我,写完不到半年就有200+人读过这篇我放在签名的文档。这个数字确实也让我惊奇(因为我只是个后端开发兼管理而已)

那么如何和同事搞好关系呢。
第一点是你要学会真诚待人,在同事面前,不要表现的太高冷了,放开心胸,该严肃时严肃,该搞笑时搞笑,尽量做个好相处的人。
然后平时表现大方一些,比如说买点小零食放座位上,偶尔给大家分一些吃的,必要时候可以请大家喝奶茶吃饭。(比如说拿奖了)。有空的时候可以了解一下大家的兴趣,看看能不能玩到一块去,比如说一起打羽毛球,一起爬山,一起吃饭,一起唱K,当然交际是很消耗时间的,所以你也可以不需要投入太多的精力,有些人是不值得交往的,你需要注意甄别。

和同事搞好关系的好处是什么呢,一个是如果你需要他们帮助的时候,他们会更加愿意帮助你,另一个则是培养人脉,说不定哪天你就需要他们的内推机会。

6、坚持读书学习(重要程度:五颗星)

我承认我是一个三分钟热度的人,所以我经常需要用各种方式来激励我去读书学习,我很羡慕那种喜欢看书,喜欢学习的人,学习其实是很反人类的,我估计只有极少人会喜欢学习,但是我们如果要上进,就不得不学习,我经常对自己说,对自己的投资才是最值得的投资,所以我从大学开始,就经常性的“逼”自己学习,在大学的时候,我主要是看慕课网的视频,那个时候我用一年多总共看了慕课网三百多个小时的视频。因此我刚毕业的时候,去面试,面试官都以为我已经有一两年经验至少了,后面毕业后,我开始迷恋于极客时间,也投入了一些时间去看各种专栏,同时也买了很多很多的技术书籍(毕业到现在,买了应该有几十本了),当然我没有全部看完,大概就看了一半左右,如果你是刚入门的,我建议你可以多看看视频课,然后对着视频敲代码,视频是比较好入门的,当你入门后,就需要多读书看报了,极客时间是一个很好的学习平台,也是目前我看过质量最高的课程平台。总共买了49门专栏,拿到了12门结业证书(有很多专栏我是挑着看的,所以没有拿到证书),其中有技术相关的,也有和技术无关的。有些专栏我还重复看了两三遍。做了很多很多的笔记。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

对于技术来说,刚毕业的1-3年是成长最快的时候,这个时候的你积极性高,脑子转的快,学东西特别的快。到了3-5年的时候,基本上学习效率就会开始慢慢下降,因此你需要付出更多时间。超过5年后,你的学习能力基本上已经赶不上年轻人了。
在这里插入图片描述

因此,如果你还是处于1-3年的时候,一定要花足够多的时间去学习,否则你到后面会慢慢的落后于其他人,我想我也是因为懂得了这个道理,所以才能达到今天的目标。(其实我们公司的9级,基本上平均工作年龄在7年以上,有的甚至述职了两三次才过,当然这也是我运气好,抓住了机会)

不学习就要落后,落后就要挨打,我看过好多吃老本的人,工作了八九年,甚至十几年,写出的代码和毕业一两年的没有差别,解决问题能力也差,靠着所谓对业务熟悉吃老本,这些人迟早要被淘汰掉。互联网35岁就没人要的前提是这个人没有坚持学习。否则你要是坚持学习到35岁,技术能力肯定十分的牛逼,怎么会没人要呢?

在职场和读书有一点很像,就是你不努力,就很难升职加薪,机会往往是给有准备的人的。

常常听到一些朋友抱怨他的公司不给他加钱,说他的领导让他先给出成果才能帮他提加钱。其实这是没有问题的。公司也是要赚钱的,并不是搞慈善的,当你认为你确实为公司贡献了很多能力,很多成果,这个时候我建议你主动的要求加薪,这是你的底气,别老想着公司会主动帮你,奶肯定是优先考虑有需要的人喝,你不提,我就是认为你对当前已经很满足了,有优秀的人提了,我为了留下他,我肯定是先把机会给他。

7、持续运动健身(重要程度:五颗星)

搞IT的人压力大,加班多,已经是互联网常态了,很多人不爱惜自己的身体,一天天的消耗自己的身体,最后身上一堆肥肉一堆病,我们工作是为了赚钱,赚钱是为了过自己想要的生活的,但是身体才是革命的本钱,拿命换钱,有钱赚没命花呀。尤其是当我听到耗子叔的消息,我更加确信,身体健康才是第一要考虑的,你会发现,爱运动的人,往往都是积极向上的,这些人很自律,因此在工作中也经常是出类拔萃,我们公司的老板就很喜欢跑步,他也经常鼓舞大家要多运动,做个健康的人。

因此,培养一个运动爱好,是很重要的,别老是想着打游戏打王者来放松心情了,偶尔多出去走走,徒步、爬山、骑车、打球、游泳都可以,我前阵子就开始接触了公路车运动,已经参加了两次百公里骑行活动了,现在又在健身房办了卡,早起的时候就会去撸撸铁,跑跑步,然后回来洗个澡再去上班。

我认为你至少需要一个健康的兴趣爱好,当然也不是说不让你打游戏,毕竟劳逸结合是对的,但是你只有打游戏一个爱好的话,这是很不健康的。

多投资一些钱在自己的身体健康上,也是很值得的。

8、暂时没有想到啥话题好说了

这是一个空白的地方,大家有想聊的话题可以评论一下,好的话题我会补上自己的见解(当然我会去看一些书再来回答你)

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

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

相关文章

数据结构-手撕单链表+代码详解

⭐️ 往期相关文章 ✨ 链接1:数据结构-手撕顺序表(动态版)代码详解 ✨ 链接2:数据结构和算法的概念以及时间复杂度空间复杂度详解 ⭐️ 链表 🌠 什么是链表? 链表是一种物理存储结构上非连续、非顺序的存储结构,数据…

OPLS-DA分析,组间差异 图形详解

OPLS-DA分析,组间差异 在上一场小工具讲解中,小姐姐给大家介绍了PLS-DA的原理及用途,而在代谢组学数据分析中,除去PLS-DA以外,OPLS-DA分析也是非常常见的,仅一个字母之差,那二者到底有何差别&am…

HTML select 用法及常用事件

前言 用于记录开发中常用到的&#xff0c;快捷开发 简单实例 <select><option value"volvo">Volvo</option><option value"saab">Saab</option><option value"mercedes">Mercedes</option><opt…

【WSN定位】基于浣熊优化算法的多通信半径和跳距加权Dvhop定位算法【Matlab代码#46】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】1. Dvhop定位算法2. 原始浣熊优化算法2.1 开发阶段2.2 探索阶段 3. 多通信半径和跳距加权策略3.1 多通信半径策略3.2 跳距加权策略 4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他…

超细,设计一个“完美“的测试用例,用户登录模块实例...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 好的测试用例一定…

ad18学习笔记七:drc检查在线和批量的区别

Altium Designer 22 DRC规则检查解析 - 哔哩哔哩 硬件工程师基本功&#xff1a;DRC设置要点详解-凡亿课堂 AD中PCB检查设计错误规则设置&#xff08;DRC检查配置&#xff09;_ad怎么检查pcb有没有错误_没有价值的生命的博客-CSDN博客 Altium Designer之DRC检查学习笔记_ad d…

【Linux】基于环形队列的生产者消费者模型的实现

文章目录 前言一、基于环形队列的生产者消费者模型的实现 前言 上一篇文章我们讲了信号量的几个接口和基于环形队列的生产者消费者模型&#xff0c;下面我们就快速来实现。 一、基于环形队列的生产者消费者模型的实现 首先我们创建三个文件&#xff0c;分别是makefile&#x…

【C++】医学影像归档和通信系统-PACS

一、PACS是通过DICOM3.0国际标准接口&#xff0c;将CT、超声、放射检查(DR)、核磁、磁共振&#xff08;MR)等多种医学影像以数字化的形式保存&#xff0c;提供授权方式查看和调回&#xff0c;并提供一些辅助诊断管理功能的系统。 二、PACS系统是HIS系统的重要组成部分&#xff…

强化学习路径优化:基于Q-learning算法的机器人路径优化(MATLAB)

一、强化学习之Q-learning算法 Q-learning算法是强化学习算法中的一种&#xff0c;该算法主要包含&#xff1a;Agent、状态、动作、环境、回报和惩罚。Q-learning算法通过机器人与环境不断地交换信息&#xff0c;来实现自我学习。Q-learning算法中的Q表是机器人与环境交互后的…

打造自己的分布式MinIO对象存储

MinIO是一个对象存储解决方案&#xff0c;它提供了一个与Amazon Web Services S3兼容的API&#xff0c;并支持所有核心S3特性。MinIO旨在部署在任何地方——公共云或私有云、裸机基础架构、协调环境和边缘基础架构。 分布式MinIO如何工作 Server Pool由多个Minio服务节点与其附…

OPNET Modeler 怎么修改背景颜色

OPNET Modeler 软件中除了顶层的网络模型&#xff0c;节点模型和进程模型中的默认背景色都是灰色的。 节点模型背景颜色如下图所示。 进程模型背景颜色如下图所示。 使用时间长了发现这个灰色背景对眼睛保护还真不错&#xff0c;而且在这种灰色背景下&#xff0c;你添加包流线…

高压线路零序电流方向保护程序逻辑原理(四)

2&#xff0e;全相循环程序逻辑框图 全相循环程序逻辑简图如图3&#xff0d;18所示。程序入口首先检测标志位UQDB1&#xff0c;在采样中断服务程序中采用3U。突变量来区分接地故障和TA断线&#xff0c;接地故障时Δ3U。大于定值&#xff0c;置标志位UQDB1&#xff0c;这是11型…

web标签的使用

一、iframe标签的使用 iframe参数说明 实例&#xff1a; <body><iframe width"400" height"400" name"abc"></iframe><br /><ul><a href"01.table.html" target"abc">01.table.html&l…

使用docker安装mysql主从集群

1.安装MySQL主容器 1.1首先&#xff0c;使用以下命令创建MySQL主容器&#xff1a; sudo docker run --name mysql-master -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 -d mysql:latest 在这里&#xff0c;使用了Docker官方提供的MySQL镜像&#xff0c;并且使用了MySQL的默认3…

浅谈自动化测试框架开发,有你们不会知道的吗?

在自动化测试项目中&#xff0c;为了实现更多功能&#xff0c;我们需要引入不同的库、框架。 首先&#xff0c;你需要将常用的这些库、框架都装上。 pip install requests pip install selenium pip install appium pip install pytest pip install pytest-rerunfailures pip …

以中非经贸连线,看星沙如何练就一流营商环境

不知不觉&#xff0c;“一带一路”倡议提出已有十年&#xff0c;回望过去十年间&#xff0c;在“一带一路”倡议推动下&#xff0c;中国与各国合作共识不断凝聚&#xff0c;国际感召力持续增强&#xff0c;共建“一带一路”的朋友圈持续扩大&#xff0c;遍布亚、欧、非等五大洲…

往数据库插入数据时出现了多条重复数据

业务场景 钉钉端发起审批流程后&#xff0c;会回调开发者后台的callback接口&#xff0c;然后callback接口逻辑处理时会对一些数据做入库处理&#xff0c;但是突然发现数据库中出现了很多重复的数据 问题发现 业务代码进行断点&#xff0c;发现并无异常&#xff0c;就是一条…

探索思维导图:提升思维能力与效率的利器

思维导图作为一种强大的思考工具&#xff0c;已经被广泛应用于各个领域&#xff0c;从学习、工作到创意思维和项目管理。 本文将为您介绍思维导图的基本概念、使用方法以及它对思维能力和效率提升的价值。通过学习和掌握思维导图&#xff0c;您将能够更系统地组织和表达您的思…

scss中写3元运算

为真选第1个参数&#xff0c;为假选第2个参数 前端基础——sass的使用_sass 三元运算_ccopcx的博客-CSDN博客

LabVIEW进行临床肝透析试验

LabVIEW进行临床肝透析试验 慢性肾衰竭患者可以在透析或肾移植的帮助下大大延长其预期寿命。肝病患者需要与透析相当的治疗作为肝移植的替代方案。肾透析可清除患者血液中的水基毒素&#xff0c;肝脏透析需要消除与蛋白质相关的毒素。 为了降低肝病患者的高死亡率&#xff0c…