程序员工作七年,我踩过的那七个坑

news/2024/10/31 18:34:02/

作者:东东拿铁

引言

今天想聊聊,自己在7年工作中踩过坑的7件事情。

一、不会问问题

一杯茶一包烟,一个bug改一天。

程序员面对技术难题是非常正常的事情,谁还没有碰见问题束手无策的时候呢。

记得刚工作的时候,我对于碰见的业务异常,宁愿自己一行一行地看代码,一行一行地debug,也不愿意去问那些有很多业务经验的前辈,更不用说问自己的领导了。

因为那时候我觉着问别人,就会显得自己技术很菜,毕竟什么功能你把代码看一遍,理论上也能知道什么问题了。

于是自己花大量的时间钻研一些代码,哪怕这些代码在系统中并不是这么重要。 我一直觉着我自己有能力解决问题,所以不去问别人,显得自己技术强。

事实上,我是不知道如何提问,因为如果你的问题问的比较低级,再好脾气的人也会失去耐心。提问的能力,是我们在职场中必备技能。

就拿工作中一个很常见的系统报错场景举例,无论什么系统,都会有些业务性质的校验,比如参数异常、状态异常、库存异常、购物失败等,再就是系统bug。工作这几年,我遇见了集中不同程序员的提问方式。

第一种程序员:东哥, 功能报错了,你看页面上提示的xxxxx,怎么办? 第二种程序员:查询一下报错相关的日志,看看有没有更详细的信息,拿着信息开始去找哪一行或者哪一个服务报的错,然后喊:东哥,代码这个服务/代码怎么抛异常了,怎么办? 第三种程序员:先查看日志,然后核对数据,核对基本的商品配置、用户资格,尝试了解涉及到的业务细节,再过来问:秒杀失败了,涉及到的基本配置核对完了,帮我看看还有什么地方是我遗漏的吗?

其实这就是我工作过程中提问的成长路径:从遇见报错就去问别人,到学会用技术方式排查问题,再到后面的业务驱动去梳理问题。

反求诸己,如果你是被问的那个人,你会更倾向于帮谁解决问题?不同的提问方式,谁的成长速度会更快呢?

其实,技术问题绝大部分人都能解决,但在开发过程中面临的业务难题才是我们需要解决的,或者说更常见的。有些业务如果没有人告诉你,你永远也不知道这个功能为什么要这么写,或者说这么写的逻辑是什么。

千万不要羞于提问,相反,问别人是解决问题最快的方式。你要做的是,学会做好前期调研,尽量提出有价值的问题。

二、不善于展示自己

代码写好了,就足够了吗?

工作之后,另一个非常重要的误区就是,我只需要把活儿干好,那么像升职加薪自然就会轮到我。我想大家一定听过Linux开发之父说过的一句话:“Talk is cheap, show me your code.”

曾经我也是被这句话影响很深,作为程序员就应该写好自己的代码,做好手头的事情,就一定可以把自己的能力展现出来。

但工作后发现,如果你不说,你的代码只会存在于git里,只有下一个接手你工作的人,才会看到你的代码。

程序员需要避免的一个误区是:工作中不要认为技术才是最重要的,不要认为技术做好了,领导就一定能够看见你的功劳。

事实上,如果你不去把你所做的工作提炼出来,更好地汇报或者展示自己,其实没有人会知道你的工作具体有多困难,或者你写的代码具体有多好。

也许你认为你的代码逻辑清晰,扩展性强,用了各种设计模式,性能较好,你觉得自己很厉害。这没错,但是做出成绩,让别人知道,比完成更重要。

你这么做并不是说要邀功,而是在让上司、让同事更了解你的作用,也是在帮你的团队争取应有的认可、应有的资源。

三、缺乏冒险精神

按部就班,不再适用于当下的年轻人了。

我们父母年轻的时代,工作时可以从20岁一直干到55岁的。但在现在这个社会,几乎没有程序员会认为自己可以一辈子在一线写代码。或许有这样的人,但我肯定不是。

在现在这个社会,唯一不变的就是变化本身。从2017年毕业到现在2024年,整整七年的时间里,热门技术从Java的Spring MVC到Spring Boot,再到微服务架构。热门的技术赛道也从大数据、区块链到AI。热门技术是学不完的。对于普通的程序员来说,按部就班已经不再适用了。曾经的“三年P7,五年P8”在现在已经完全不可能了。

自从ChatGPT问世到现在,其实已经有一年的时间了。我已经见过很多人用AI改善自己的工作流程,比如AI写作、AI绘画,甚至用AI生成代码。但如果你还只会遇到问题去百度搜索,那么我想你已经跟不上这个时代了。

程序员现在考虑的是什么?或许是在程序员这一行还能干几年。

技术变革这么快,自己的技术在后面会不会被淘汰,公司会不会裁员,裁员之后还能不能找到工作。

可如果我们所做的工作,学习的内容,只是为了让自己在这一行多待几年,甚至是不被裁员,我想这个目标是不是从一开始就有问题?

  • 你学会的第一个开发语言,并不意味着你要一直从事这个语言相关的岗位,技术更迭,换一个语言也未尝不可。
  • 你并不一定要一直写代码,走向管理、转向产品或许可以让你看见更大的可能。
  • 你或许不一定非得要做一个程序员,或许你的兴趣并不是写代码,只是你自己还没有发现。

既然一份工作无法持续地干下去,那我们应该怎么办呢?终身学习,找到自己在哪一行能够更擅长、更喜欢的,把这份喜欢变成自己的事业。并不是说今天你是一个程序员,10年、20年之后你还是要做一个程序员。

愿你也能够不断的拥抱变化,有着足够的冒险精神。

四、缺少锋芒

不知为何,我的盖洛普优势中排名第二的是和谐。这意味着在冲突情境下,我会极力避免争论,希望和别人达成共识。

譬如,当我与同事探讨技术方案时,同事可能会对自己的方案极为执着,即便我的方案在性能、难易程度上更优。倘若同事始终坚持己见,那么我极有可能会选择妥协,采用那个看似并非最优的方案。

我发现自己在工作中,会不自觉的想要获得别人的好感,甚至变成了一种执着,因此我更愿意在职场中展现自己的亲和力。 比如:

  • 怕冒犯别人,不敢提出自己正当的需求和想法
  • 有时会暴露自己的弱点、缺点,以便拉近社交距离
  • 总是担心别人不喜欢自己

但是这样会产生一个副作用,那就是,别人可能会觉得你能力不足

或许你会说,这样似乎也不错啊,职场中我就喜欢这样的同事,如果我不这么做,那别人会不会不喜欢我啊?

《权力进化论》书中给出了一项长期研究的统计结果。研究的是亲和性(也叫宜人性)对于一个人事业成功的影响。结果发现,亲和性对所有人的薪酬都会产生负面影响,男性受到的影响比女性更严重。这是因为,那些在意自己亲和性的人,可能会把这个放在自己的事业目标之上,所以更容易错失一些推进事业发展的好机会。

而亲和性的反面是独断性。也就是一个人我行我素、以自己为中心的程度。加州大学伯克利分校的研究发现,独断性对权力的提升没有帮助,但也没有害处。这是因为,独断性能够引起两种相互抵消的作用:一方面,独断的人会做出更多支配性、攻击性行为,这能帮他们提升权力和地位;另一方面,独断的人做出的慷慨和群体行为比较少,这又对获得权力有负面的影响。

按照研究中的定义,独断性恰恰代表了一个人根本不关心自己会怎么影响别人。《权力进化论》书中的作者说,如果这对权力都不会产生影响,那么就更可以说明,其实我们没有必要过于担心,其他人喜不喜欢自己,会对事业造成多大影响。社会关系虽然重要,但我们不应该让那种想被人喜欢的念头压过了真正想做的事情,牺牲了自己的利益和规划。

研究表明,刻意去博得他人好感在职场中往往会起到反作用。相反,表现得更加强势虽不一定对自己的职业生涯有益,但也并无坏处。

工作中善于表达自己的观点,做你认为对的事情。

五、你配得上你所拥有的

我和许多加过来的粉丝朋友聊天,粉丝朋友们普遍会觉着:“嗯,你的履历不错啊。”他们认为履历对我的自媒体或许会有很大的帮助。我总是回答:“哎,这其实没有什么。我能进去,很大程度上也是运气,并不代表当时我的技术有多好。”

所以我从来没有把大厂的经历当做自己的一个优势去面对它。反而我会尽量避免和别人谈起过去的工作经历。

日常的表现就是自己更愿意去弱化自己的优势,却喜欢强调自己的不足

其实我这种情况叫做冒充者综合症。

什么是冒充者综合症呢?就是有些人其实已经很优秀了,但他们总是觉得自己并没有像别人说的那么优秀,生怕某一天别人会发现他是冒充的。

这就是一种会严重削弱你自身权力的行为。因为你看待自己的方式,必然会影响你展现给别人的形象。如果连你自己都不觉得自己有能力,值得更好的结果,那这种消极信号就会在不经意间传递给别人,让别人也看低你,最终会影响到你的事业。

首先,想一想你会怎么向别人描述自己。然后看看这里面有多少是消极描述,哪些可以摒弃掉;看看你有没有刻意掩饰自己的成绩和优势,能不能把它们加上去。

比如我看到的一个例子:一位女性学员,跟作者说公司里竞争很激烈,竞争对手总是想方设法地压她一头,或者抢占她的功劳。作者在跟这位学员交流的时候,发现她总是提到,自己是团队里唯一的女性,而且最年轻,资历也最浅。作者就提醒她说:“我知道这些是事实,但是我还可以再用三种完全不同的视角来描述你,那就是,你们团队里,只有你是顶尖商学院的MBA,只有你精通数理分析,也只有你曾经独立带过有很大经济影响的项目。所以呢,现在我们就有六个不同的视角了。至于今后你要一直想着哪三个,全看你自己。”

六、没有建立自己的品牌

上面说到,不善于展示自己。那么想要展示自己的话,如何展示才是最好的? 建立个人品牌,也就是IP,即Intellectual Property,也就是我现在在做的一件事情。

一句话,让人们第一时间想到你。具体应该怎么做呢?

第一步,和声名显赫的事情或人联系起来。 职场初期,我们大概率会去做一些边边角角的业务或者功能,核心功能或者业务的机会就这么多,只是做这些并不是很重要的业务,即使你很有能力,也很难被人发现。

遇见这种情况,那就主动去沟通联系,试着让自己接触更加底层与核心的逻辑,并深度参与其中。

比如虽然你只是开发人员,但你主动承担起跨部门的协作沟通,而不是把沟通的事情让别人去做,主动承担起计划的制定与发展规划。

即使不能负责,也要展现出你对这件事情的兴趣,持续积累核心业务的背景,这样你也能够建立起负责人对你的兴趣,建立沟通渠道。

第二步,准备好自我介绍,并反复打磨自己的故事。

比如你擅长哪些技能,熟悉哪些业务,你曾经负责过什么东西,做出过哪些成绩。

人人都需要自己的品牌声明。你要做的,就是想一想如何用两三句话向别人介绍自己,说明自己的专长和取得的成就,再想办法把这些内容和自己的某些心路历程结合起来。

第三步,让你的品牌广为人知。

有很多人不愿意做一些感觉像“自我推销”的事情,尤其是程序员。并且在我们社会的成长背景下,在崇尚谦卑品格的文化环境中,这种现象会尤其突出。

这样就会产生一个问题:如果你自己不讲出自己的故事,会有别人替你讲吗?别人还会看到你的成就吗?这些你都没法确定。

七、忽视社交网络

广结人脉,和埋头苦干,你会选择哪一种?

职场初期,我选择的是埋头苦干。先讲一个我自己的故事吧。

在之前一家公司,因为负责一个新的系统,主要是把App上面的功能,从公众号层面再实现一遍。

在做这件事情的时候,App上面的核心功能代码量比较大,但因为涉及到风控因此必须迁移,我花费了很多精力去进行迁移和重构工作,最终完成了小程序系统的上线。

半年之后,由于业务迭代,领导也发现APP的这部分功能比较核心,准备着手把核心功能统一迁移成为一个新的微服务,以便后续使用,便把这件事情交给了我的一个同事去做。

最后这件事情做完,领导认为这个工作量很大也很有价值,于是我的这个同事收获了很好的评价和非常好的绩效。但其实这部分工作,我早在之前的系统开发中,就已经完成这件事情了,然而这件事情我不说,领导也不得而知。

相同的工作,但是达成的效果完全不同。

互联网一直流行一个词叫做“向上管理”,我一直觉着这是一件听着有道理,但是总感觉哪里怪怪的事情。因为即使我看过这么多所谓的方法、技巧,如果不做最重要的一步,那么所有的方法都无从下手。

最重要的就是,要建立你的社交关系,不要仅仅限于同级的同事,也要包含你的上级、跨部门的上级。

其次就是要重视你的“弱连接”。弱,就是强弱的弱。“弱连接”指的是我们生活中的那些偶然认识的泛泛之交。社会经济学家做过一项研究,考察了二百多名求职者的经历,结果发现,大多数工作都不是通过投简历这种正式渠道获得的,而是靠社会关系提供的非正式信息取得的,而且很多是来自一些他们偶然认识的人,也就是“弱连接”。

跟亲朋好友同事这些强连接相比,那些弱连接的人脉,往往有着跟我们更不同的背景、经历、圈子,所以,利用好这些弱连接,我们就更可能接触到更广阔的视角、信息和机会,甚至可能实现圈层跃迁。

建立关系,重视弱连接,建立沟通渠道,才能让你的能力,得到杠杆效应

说在最后

以上,是我想分享的工作七年来,在职场中踩过的几个坑,给出的建议或许有失偏颇,也和自身的工作环境有很大关系,并不适合所有人。


“爱码士” 集结号,唤醒 “猿” 气超能力 —— 福利暖冬[免费]派送活动火热进行中

代码工具 VIP 会员、文创 “爱码士” 礼包、开心麻花门票等,➡派送通道 ~

程序员狂欢继续~~~


http://www.ppmy.cn/news/1543401.html

相关文章

机器人技术基础(4章逆运动解算和雅克比矩阵)

逆运动解算: 雅克比矩阵: 将动力学分析转向运动的物体 下图中的 n o y 反映了机器人的姿态矩阵, 最后一列 p 反应了机器人在空间中的位置:

YOLOv4和Darknet实现坑洼检测

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【MobileViT实现垃圾分类】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现mni…

【SpringCloud】06-Sentinel

1. 雪崩问题 一个微服务出现问题导致一系列微服务都不可以正常工作。 服务保护方案: 请求限流。线程隔离。 服务熔断 2. Sentinel 启动Sentinel java -Dserver.port8090 -Dcsp.sentinel.dashboard.serverlocalhost:8090 -Dproject.namesentinel-dashboard -ja…

Spring Cache-基于注解的缓存

Spring Cache 是 Spring 提供的缓存抽象框架,能够将数据缓存到内存或外部缓存中,减少数据库或远程服务的访问频率,从而显著提升应用性能。Spring Cache 通过注解的方式实现缓存逻辑,使用方便,支持多种缓存实现&#xf…

Python中除了matplotlib外还有哪些数据可视化的库?

matplotlib算是python比较底层的可视化库,可定制性强、图表资源丰富、简单易用、达到出版质量级别。 其它的可视化库诸如:seaborn、pyecharts、ggplot、plotnine、holoviews、basemap、altair、pyqtgraph、pygal、vispy、networkx、plotly、bokeh、geop…

【牛客算法】某司面试算法题:循环右移二叉树

一、算法题描述 1.1 算法描述 现有一棵n个节点构成的二叉树,请你将每一层的节点向右循环位移k位。某层向右位移一位(即k1)的含义为: 若当前节点为左孩子节点,会变成当前节点的双亲节点的右孩子节点。 若当前节点为右儿子,会变成…

2024年三个月自学网络安全(黑客技术)学习指南。

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、…

Django入门教程——数据模型建立

第二章:数据模型建立 教学目的 了解模板引擎的创建理解模板引擎的基本语法了解系统设计的基本原则,重点理解数据库的设计。了解ORM概念,理解数据模型创建方法。 模板引擎设置 Django的核心组件包括: 模型(Model&a…