程序员的那些坏习惯!来看看你有几个?

一、前言

写了20多年代码,我见过不下于4位数的程序员,我觉得程序员的能力水平可以分为4个阶段:线性级、逻辑级、架构级和工程级。

同样的在这些人当中,我也发现了8个程序员最常见的陋习,基本上可以覆盖90%的人,其中说不定就有你哦。

文章目录
    • 一、前言
    • 二、4个能力水平
        • 1.线性级
        • 2.逻辑级
        • 3.架构级
        • 4.工程级
    • 三、8个陋习
        • 1.自我
        • 2.封闭
        • 3.惯性
        • 4.沟通障碍
        • 5.一叶障目
        • 6.工作量估计乐观
        • 7.拒绝变化
        • 8.拒绝重构
    • 四、结语

二、4个能力水平

1.线性级

线性级程序员的思维很简单,写程序的时候就像盖房子似的,一块砖一块砖往上垒的,但是他不知道后面会垒成什么样,可能越垒越庞大,后面的代码组织和管理等会越来越混乱,最后导致后面的很多程序修改和维护很麻烦。
在这里插入图片描述

2.逻辑级

对于逻辑级程序员,已经掌握了一些算法理论基础,并且对于业务世界的逻辑有一个清楚的把握,能能够撰写出一些很好的模块和和函数,而且逻辑比较严密,bug比较少的这样的一个状态。

3.架构级

对于架构级程序员,因为除了对程序语言本身的了解和把握以外,还要对现实世界的所要解决的业务逻辑有一个清楚的把握和了解。

这样的话才能够对软件进行架构和分层,然后指导团队的其他成员来按照统一的目标来不断的实现。

在这里插入图片描述

4.工程级

对于工程级程序员,因为本身软件开发不仅仅是开发本身,这里面还有很多其他的项目管理的要素在里面。

比如说刚才提到的计划、组织、管理和控制,如果有了一些项目管理的指导和原则的话,那么对于一个软件工程的过程管理就会有一个"一览众山小"的状态。

在这里插入图片描述

接下来我们来说一下90%的程序员多少都会有的陋习。


三、8个陋习

根据以前的工作经验呢,我觉得程序员身上的这些陋习是阻碍程序员进步的最大的一个障碍。

1.自我

那么首先程序员因为本身是一个脑力活动者,他那个是一个很重要的特性,就是非常自我。

很多时候就是说撰写代码的时候,基本上是不愿意去听从别人的意见和建议的。

在这里插入图片描述

2.封闭

有的程序员很封闭,也就说它不够开放。

如果是用一种开放和交流的心态来跟其他程序上来进行交互的话,那么这样的相互取得的促进效果会是非常明显的。

3.惯性

有一些有经验的程序员会有一些工作的惯性,经常会说"我以前是怎么这么做的"、“我以前是这样这样做的,我就觉得你现在这样做的不对”…
其实这种惯性,也是阻碍沟通的一种很大的问题。
在这里插入图片描述

4.沟通障碍

这是比较显著的一类陋习,因为程序员整天面对电脑、只跟机器交互,所以说去跟其他产品经理和其他测试等等一些这些人去交流的时候,会有很明显的沟通障碍。

5.一叶障目

这是最大的问题,就是说程序员经常一叶障目,只看到自己眼前的工作。

比如说有一些团队协作开发的任务的时候呢,只依据自己为中心。那么对于别人的一些请求,尤其有一些交互性、复杂的网络接口开发时经常会下意识地去拒绝别人。

在这里插入图片描述

6.工作量估计乐观

还有一个最重要的问题,就是说经常会把工作量估计漏完。

比如说拿到一个需求的时候,好,我一个星期就能完成结果,真正的实现的时候呢,发现需要花两到三周乃至更长的时间来实现这项工作任务。
在这里插入图片描述

7.拒绝变化

对于需求的变更来讲的话,程序员的很大心态是有逆反心理的。

当我正在撰写一个东西的时候,发现需求变更了,就会产生一种阻碍心态来拒绝变化。

但是拒绝变化的前提应该先进行客观、合理的分析和判断,最后再给出答案。其实它应该是要仔细衡量本身这个变化影响不影响我目前的软件体系和架构?对我的工作量的增加有多大?这需要有一个好的估量来决定这个变化的取舍。

在这里插入图片描述

8.拒绝重构

最后且最重要的一个问题,就是说很多时候我们是拒绝重构的,因为这个重构有些时候是很难取舍的一个问题。

比如说经常会想,哎呀我原来写的这个软件体系结构,跟后面的整个实现过程中,变化会越来越大,而且信息学、新需求进来的时候呢,我就很难再保持一个良好的这样的一个体系结构。那么经常会纠结,我是重构呢还是按照这个原来的路敲敲打打呢?

在这里插入图片描述

是否重构其实是需要根据实际性的。比如尤其我前几个月写的一个电商系统,我也是经常处于这种心态,我也在纠结到底重不重构的?后来一咬牙一闭眼还是重构了。

重构的话,前期可能会花费点时间,但是能够在后期保证我这个软件的目标实现,且拥有一个清晰、完整的架构和体系结构,并且后期会达到一个易于维护的这样的一个状态。
在这里插入图片描述


四、结语

前面所说的这些工作陋习,其实是大多数程序员的天性,我们需要在工作中慢慢改进,首先需要意识到这是一个陋习,有意识地去不断纠正自己,用一种很好的心态来避免这些问题的发生。

感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你,干货内容包括: ![在这里插入图片描述](https://img-blog.csdnimg.cn/de14fd28c8a448f8843222321e108875.jpeg#pic_center)

今天的内容就分享到这里,如果你喜欢这篇文章的话,麻烦请动动你的手点个赞或者点个关注吧,这将是我最大的动力!谢谢,这里有我以前整理的大量自学资料

🐵需要的可以点这里自取👉:网安入门到进阶资源

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶算法(十):多项式轨迹与Minimun Snap闭式求解原理及代码讲解

目录 1 多项式轨迹与Minimun Snap闭式求解原理 2 代码解析 1 多项式轨迹与Minimun Snap闭式求解原理 我们上次说的Minimun Snap,其实我们就在求一个二次函数的最优解: 也就是优化函数在约束下的最小值。 但这是一个渐进最优解而不是解析最优解&#xf…

云栖大会丨桑文锋:打造云原生数字化客户经营引擎

近日,2023 云栖大会在杭州举办。今年云栖大会回归了 2015 的主题:「计算,为了无法计算的价值」。神策数据创始人 & CEO 桑文锋受邀出席「生态产品与伙伴赋能」技术主题,并以「打造云原生数字化客户经营引擎」为主题进行演讲。…

【Java】I/O流—转换流、序列化流的初学者指南及RandomAccessFile类

🌺个人主页:Dawn黎明开始 🎀系列专栏:Java ⭐每日一句:我不在意你曾堕落,我只在意你是否会崛起 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️ 文章目录…

OpenCV-Python小应用(八):判断是否有深色线条

OpenCV-Python小应用(八):判断是否有深色线条 前言前提条件相关介绍实验环境判断是否有深色线条思路一:通过图像梯度直方图判断思路二:通过图像灰度值变化判断 参考 前言 由于本人水平有限,难免出现错漏&am…

LoRAShear:微软在LLM修剪和知识恢复方面的最新研究

LoRAShear是微软为优化语言模型模型(llm)和保存知识而开发的一种新方法。它可以进行结构性修剪,减少计算需求并提高效率。 LHSPG技术( Lora Half-Space Projected Gradient)支持渐进式结构化剪枝和动态知识恢复。可以通过依赖图分析和稀疏度…

rabbitmq延迟队列发送与取消

安装延迟插件 根据rabbitmq的版本下载插件版本 # 延迟队列插件下载地址 https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases# 将本地下载好的插件复制到docker里 # docker cp rabbitmq_delayed_message_exchange-3.9.0.ez 容器名:/plugins docker cp r…

3.0 熟悉IDAPro静态反汇编器

IDA Pro 是一种功能强大且灵活的反汇编工具,可以在许多领域中发挥作用,例如漏洞研究、逆向工程、安全审计和软件开发等,被许多安全专家和软件开发者用于逆向工程和分析二进制代码。它支持大量的二进制文件格式和CPU架构,并提供了强…

spring命名空间注入和XML自动装配、引入外部配置文件

Spring p命名空间注入util命名空间注入基于XML的自动装配根据名称自动装配 Spring引入外部属性配置文件 p命名空间注入 作用:简化配置。 使用p命名空间注入的前提条件包括两个: ● 第一:在XML头部信息中添加p命名空间的配置信息&#xff1a…

error C2143的原因及解决办法

error C2143的原因及解决办法 在C编程中,经常会遇到各种错误。其中之一就是error C2143。本文将讨论error C2143的原因,并给出相应的解决办法。 error C2143通常是由于语法错误引起的。具体而言,C2143错误表示编译器无法识别代码中的某个符…

鲲鹏920的架构分析

*本文信息主要来源于书籍《鲲鹏处理器架构与编程》以及论文《Kunpeng 920: The First 7-nm Chiplet-Based 64-Core ARM SoC for Cloud Services》 * 笔者已然写了一篇上述论文的分析博客,但尚觉论文内容对chiplet架构描述不够清晰,因此查阅《鲲鹏处理器…

ECharts修改tooltip样式

tooltip不支持rich&#xff0c;formatter返回的是html片段&#xff0c;可以在这个返回的片段里面增加类名。以达到更改tooltip文字格式的效果。所以&#xff0c;直接写html的样式就可以 静态数据 formatter: (params) > {console.log(params, params)return <h2 style&q…

C++多态特性

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;强烈推荐优质专栏: &#x1f354;&#x1f35f;&#x1f32f;C的世界(持续更新中) &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;…

Redis之主从复制

文章目录 一、什么是Redis主从复制&#xff1f;1.作用2.配置主从复制的原因3.环境配置 二、一主二从三、复制原理四、链路总结 一、什么是Redis主从复制&#xff1f; 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(ma…

HTML点击链接强制触发下载

常见网页中会有很多点击链接即下载的内容&#xff0c;以下示范一下如何实现 <a href"文件地址" download"下载的文件名字&#xff08;不包括后缀&#xff09;">强制下载</a> 下面举个例子&#xff1a; <a href"./image/test.jpg"…

Azure 机器学习 - 如何使用模板创建安全工作区

目录 先决条件了解模板配置模板连接到工作区疑难解答错误&#xff1a;Windows 计算机名的长度不能超过 15 个字符&#xff0c;并且不能全为数字或包含以下字符 本教程介绍如何使用 [Microsoft Bicep]和 [Hashicorp Terraform]模板创建以下 Azure 资源&#xff1a; Azure 虚拟网…

王学岗visibility改变后调用onLayout()

自定义控件的时候发现了一个bug。 Button位移动画执行结束后我设置了一个不相关的TextView的可见性由gone变为visible.令人郁闷的是&#xff0c;只要我注释的地方放开。动画执行结束后button都会重新绘制在位移动画开始的位置。注释掉这段代码就正常。 经过分析后得知 View的Vi…

算法:FloodFill算法

文章目录 算法原理图像渲染岛屿数量岛屿的最大面积被围绕的区域太平洋大西洋水流问题扫雷游戏衣橱整理 算法原理 FLoodFill算法通俗来讲&#xff0c;就是洪水给地势带来的变化&#xff0c;而实际上题目要求的就是一个连通块问题&#xff0c;那本质还是暴搜和DFS/BFS相结合&…

dream_ready

&#x1f9f8;欢迎来到dream_ready的博客&#xff0c;&#x1f4dc;相信您对这篇博客也感兴趣o (ˉ▽ˉ&#xff1b;) Python 语法及入门 &#xff08;超全超详细&#xff09; 专为Python零基础 一篇博客让你完全掌握Python语法 路的尽头是什么&#xff1f;这是我年少时常伴在嘴…

【题解】2023-11-11 B层模拟赛T1

宣传一下 算法提高课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 CF461B 题目描述 一棵树有 n n n 个节点&#xff0c; n − 1 n − 1 n−1 条边。树上的节点有两种&#xff1a;黑&#xff0c;白节点。 Tyk 想断掉一些边把树分成很多部分。 他想要保证每个部…

【chat】4: ubuntu20.04:数据库创建:mysql8 导入5.7表

【chat】3: ubutnu 安装mysql-8 并支持远程访问 已经支持 8.0的SQLyog 远程访问:大神2021年的文章:sql是5.7的版本,我使用的ubuntu20.04,8.0版本:chat数据库设计 C++搭建集群聊天室(七):MySQL数据库配置 及项目工程目录配置 User表,以id 唯一标识 Friend 表,自己的id…