首页 > 编程语言 >当了程序员之后?(真心话)

当了程序员之后?(真心话)

时间:2024-03-08 23:45:07浏览次数:40  
标签:思维 真心话 老猫 之后 抽象思维 程序员 分层 时候

分享是最有效的学习方式。

博客:https://blog.ktdaddy.com/

地铁上刷到一个话题,觉得挺有意思的,如下。

话题

看到很多朋友在下面吐槽,有说加班是真的多,有说找对象是真的难,有说程序员爱穿格子衫是假爱背电脑是真的等等,大家吐槽得都挺欢乐的。

老猫也开始复盘这些年的经历,更多想聊的可能还是一个后端程序员的真实感悟。

入行

俗话说“男怕入错行,女怕嫁错郎。”相信很多朋友在进入一个行业之前都是深思熟虑的,亦或者是咨询过一些人,亦或者是查阅了挺多资料。然而老猫入行则相当奇葩,不是蓄谋已久,而是心血来潮。

一切都得从一部电视剧开始,不晓得大家有没有看过这部电视剧,佟丽娅主演的“我的经济适用男”。

电视剧

12年的一部电视剧,挺老了,主要女主放弃富二代的追求和"成熟稳重老实巴交的IT男"好上了的桥段。当时心智单纯的老猫可谓看的是热血沸腾啊。一拍桌子,“发可油,劳资今后就要当那个男主,这结局多好啊,抱得美人归啊这是,我要学IT!”。当时老猫的专业是电子信息类的专业,后来基本就放弃了本专业,大学基本逃课就跑去学软件去了。

就这么上了贼船,一晃十年过去了。多年前,躲在实验室里,开发了一个简单的坦克大战的游戏,感觉自己是最牛逼的,子弹爱怎么飞怎么飞,坦克能开多块就开多快,那时候觉得自己就是这个IT世界的主角,“control evety thing”。在这样一个程序的世界里,所有的事儿都是自己说了算。

踏上社会后,遭遇社会惨无人道地毒打之后,发现要做的就是提升造火箭吹牛逼的能力,工作中是个crud-boy。键盘上磨损最严重的那几个键是“ctrl”,“c”,“v”,“x”。当年那个意气风发的少年已经不复存在,我是一个弱鸡螺丝钉。

weak

工作十年

大部分后端程序员也主要是围绕着业务在转,所以crud可能占了大部分时间。

话虽如此,但还是有点除此以外的收获,这些收获甚至潜移默化地影响着我的生活。

技术日新月异,今天这个框架,明天那个架构,今天这种实现牛逼,明天那种部署更6等等,到头来发现自己一直都是在追着技术跑。也确实如果不奔跑的话,可能就会被淘汰。作为程序员来说适应变化也是程序员的一种品质,但是老猫觉得具备下面这些可能会更加重要一些,这些可能也是唯一不变的。

抽象思维很重要

第一次听到“架构师”这个职位的时候,觉得那一定是一个需要超强技术能力的人才能胜任的岗位。

后来才发现原来架构师也分种类,“业务架构”,“技术架构”等等。再后来发现无论哪种架构,其实他们身上会有一种共同的东西,那就是优秀的抽象思维。

啥是抽象思维?百度百科上是这么说的:

抽象思维,又称词的思维或者逻辑思维,是指用词进行判断、推理并得出结论的过程。抽象思维以词为中介来反映现实。这是思维的最本质特征,也是人的思维和动物心理的根本区别。

说的比较官方,甚至有点不好懂。

大家以前上语文课的时候,有没有做过阅读理解,老师在讲课的时候常常我们概述一下这段文字到底讲了什么东西,越精简越好,可能要求20个字以内。其实这个过程就是在锻炼咱们的抽象思维能力以及概括能力。

在软件后端领域,当业务传达某一个需求的时候,往往需要产品去提炼一道,那么此时就是产品抽象,继而产品又将需求传达给相关的研发负责人,研发负责人设计出相关的实现模型,那么这又是技术抽象,这些抽象的过程就是将复杂的业务流程和逻辑转化为可管理和可重用的组件的过程。它的目的是简化系统的实现,聚焦于应用程序的核心功能,同时隐藏不必要的细节。抽象后设计出各种基础能力,通过对基础能力的组合和拼接,支持复杂多变的业务逻辑和业务形态。

过程

具备抽象思维,能够让我们从复杂的业务中迅速切入业务关键点。在生活中可能表现在透过现象看到本质,或者碰到问题能够快速给出有效解决方案或思路。例如老猫上次遇到的“真-丢包事件”。

分层思维很重要

说到分层思维,应该准确地来说是建立在能够清晰的抽象出事务本质的基础上,而后再去做分层。

很多地方都会存在分层思想。生活中就有,大家双休日没事的时候估计会逛商场,商城的模式一般就是底层停车场,一层超市,二层卖服装的,三层儿童乐园,卖玩具的,四层吃饭看电影娱乐的等等。

再去聊到技术上的分层思想,例如OSI七层模型,大家在面试的时候甚至都碰到过。

分层

抛开这些,其实我们对自己当前负责的一些业务,一些系统也需要去做一些分层划分,这些分层可以让我们更好地看清业务系统之间的关系。例如老猫之前梳理的一张图。

开发整理分层

通过这样的分层梳理,我们可能更好地理解当前的系统组成以及层级关系。(备注一下,老猫这里画图工具用的还是wps绘制的)。

结构化思维很重要

结构化思维又是咋回事儿?
不着急,打个比方,咱们看下面一组数据:
213421790346567560889
现在有个要求,咱们需要记下这些数字,以及出现的次数。短时间内想要记住可能比较困难
如果我们把这些数字的内容调整下,变成下面这样:
00112233445566778899
是不是清晰了很多?

所谓的结构化思维,就是从无序到有序的一种思考过程,将搜集到的信息、数据、知识等素材按一定的逻辑进行分析、整理,呈现出有序的结构,继而化繁为简。有结构的信息更适合大脑记忆和理解。

人类大脑在处理信息的时候,有两个特点:

第一,不能一次太多,太多信息会让我们的大脑觉得负荷过大;乔治·米勒在他的论文《奇妙的数字7±2》中提出,人类大脑短期记忆无法一次容纳7个以上的记忆项目,比较容易记住的是3个项目,当然最容易的是1个。

第二,喜欢有规律的信息。有规律的信息能减少复杂度,Mitchell Waldrop在《复杂》一书中,提出一种用信息熵来进行复杂性度量的方法,所谓信息熵就是一条信息包含信息量的大小。举个例子,假设一条消息由符号A、C、G和T组成。如果序列高度有序,很容易描述,例如“A A A A A A A … A”,则熵为零。而完全随机的序列则有最大熵值。

老猫在写文章的时候喜欢先列一下要写的提纲,然后再跟着提纲一点一点的往下写,写定义,写实现,写流程。

虽然本文偷了个懒,没有写思维导图,老猫一般再聊到干货的时候都会和大家先列一下提纲。这种提纲其实也是结构化的一种。当我们遇到复杂系统需求的时候,咱们不妨先列个提纲,将需要做的按照自己定义好的顺序罗列好,这样解决起来会更加容易一些。

太过理性可能也不好

程序员做久了,做一件事情的时候都会去想着先做什么然后做什么一步一步,有时候会显得过于机械,不知变通,
有时候可能也会太过较真,大直男显得情商比较低,会多多少少给别人带去一些不便,记得在银行办理业务的时候会指出业务员说话的逻辑漏洞,然后不停地追问,最终可能导致业务员尴尬地叫来业务经理解释等等。

程序员思维做事情,可能在日常生活中比较严谨,但是很多时候还是会显得比较死板。

总结

以上是老猫觉得除了技术以外,觉得一个后端程序员应该具备的一些思考方式以及工作方式,当然也可能只是老猫的方法论,如果大家有其他的工作领悟,也欢迎大家留言,大家一起分享一下经验。

标签:思维,真心话,老猫,之后,抽象思维,程序员,分层,时候
From: https://www.cnblogs.com/kdaddy/p/18062079

相关文章

  • 程序员-你得把自己卖出去
    https://www.cnblogs.com/mangod/p/18060693 关于35岁的就业挑战这篇文章跟朋友们聊些35岁发展的话题。都说35岁的中年人不如狗,网上又是铺天盖地的贩卖35岁中年焦虑各种割韭菜,再加上不稳定的外部环境,种种因素叠加确实会增加中年人的戾气和焦躁。最近,我看到了一个关于罗振宇老......
  • 程序员-你得把自己卖出去
    关于35岁的就业挑战这篇文章跟朋友们聊些35岁发展的话题。都说35岁的中年人不如狗,网上又是铺天盖地的贩卖35岁中年焦虑各种割韭菜,再加上不稳定的外部环境,种种因素叠加确实会增加中年人的戾气和焦躁。最近,我看到了一个关于罗振宇老师谈论35岁失业问题的视频,颇为有趣。罗老师指出,......
  • 程序员的心理学书单 ——《蛤蟆先生去看心理医生》罗伯特·戴博德电子书 ,帮助愿意走出
     主人公蛤蟆先生本来是一个热情、时尚又爱冒险的家伙,可却突然深陷抑郁,不能自拔。在朋友鼹鼠和河鼠的帮助下,他去找心理咨询师苍鹭做了十次心理咨询。最后不仅恢复了正常的生活,重拾了快乐,内心也发生了改变。蛤蟆先生,其实就是每一个你我的真实写照。这本书可以启发我们开启和......
  • 使用BPF之前和之后生成直方图过程的对比
    以bitehist为例:使用BPF之前:1、在内核中:开启磁盘IO事件的插桩观测。2、在内核中,针对每个事件:向perf缓冲区写入一条记录。如果使用了跟踪点技术(推荐方式),记录中会包含关于磁盘IO的几个元数据字段。3、在用户空间:周期性地将所有事件的缓冲区内容复制到用户空间4。在用户空间:......
  • JDK1.5之后的自动装箱
    JDK1.5引入了一项非常实用的新特性,即自动装箱(Autoboxing)和自动拆箱(Unboxing)。这项特性的引入极大地简化了Java程序员在处理基本类型和它们对应的包装类之间的转换过程。自动装箱:自动装箱是指Java编译器能够在编译期间自动将基本数据类型转换为它们对应的包装类对象。例如,当你......
  • vue项目打包之后更改某些配置项
    .env.development(开发环境)、.env.production(生产环境)和 .env.test(测试环境)等环境变量,一旦你运行了 npmrunbuild 命令,环境变量的值就被固定下来了,你不能再直接更改 .env文件中的值来影响已经构建好的应用。但是有时候也需要修改某些配置项,而不是重新打包,因此需要另外的方法。......
  • 10年程序员生涯回顾
    十年河东,十年河西,莫欺少年穷学无止境,精益求精说十年程序员生涯,其实已经近12年了,老码农了,自12年毕业,至今,完成了娶妻生子,买车买房,生活一地鸡毛,但必须负重前行.......就从12年实习开始吧12年实习,在QQ上遇到中介,被忽悠到苏州,在佳世达电子厂组装打印机,每天工作12小时,全程站立,流水线......
  • 10年程序员生涯回顾
    十年河东,十年河西,莫欺少年穷学无止境,精益求精说十年程序员生涯,其实已经近12年了,老码农了,自12年毕业,至今,完成了娶妻生子,买车买房,生活一地鸡毛,但必须负重前行.......就从12年实习开始吧12年实习,在QQ上遇到中介,被忽悠到苏州,在佳世达电子厂组装打印机,每天工作12小时,全程站立,流水线......
  • 【专业技能】程序员的软件工程素养之画好 UML 时序图
    目录前言一、认识时序图1.1时序图元素1.2怎么使用二、画好时序图2.1一般步骤2.2举个例子2.3推荐工具三、其它作用四、文章小结前言笔者在本科的时候上过软件工程的专业课,也完成过类似的课堂作业,但是工作以后一直没怎么用上。碰巧前段时间有碰到一个复杂系统的部分功能设计,作为设......
  • 黑马程序员JavaWeb学习笔记-过滤器
    过滤器--Filter过滤器Filter快速入门Filter拦截路径过滤器链Filter——流程importcom.alibaba.fastjson.JSONObject;importcom.itheima.pojo.Result;importlombok.extern.slf4j.Slf4j;importorg.springframework.util.StringUtils;importjavax.servlet.*;im......