当前位置: 首页 > news >正文

提高「程序员」的思维方式

大家好,我是Tom哥。

人和动物的最大区别就是,人具有思维能力,能将大脑里的东西实现出来。而动物则更多停留在模仿阶段,如:鹦鹉学舌。当然,这也是一种进化能力。

这里着重提到了思维能力,人与人的思维能力也是有差异的。比如:

  • 一线程序员关心的这个项目涉及到多少个接口? 接口的代码要如何实现?其他哪些接口可能会受到影响,需要重点 review

  • 团队 TL 则关心的这个项目的复杂度有多少?预计多少工作量?能不能按时开发完成?整个系统的性能、稳定性、扩展性等方面有什么帮助?会不会增加整个系统的维护成本?如果挂了,对业务有什么影响。

  • 部门老板则关心这个项目要不要做?有没有什么风险?对业务和技术团队的价值在哪里?能带来多少用户量、GMV?优先级高不高?如何让业务方满意?

我们可以发现基层、中层、高层,不同的职级的人关心的内容也不太一样,屁股决定脑袋。

不管是处于哪一个层级,都是做工作。那么在面对一件任务,你是如何开展工作的?我理解大概分为三个阶段:

  • 第一阶段:靠「直觉」,不管是男人女人,当面对一件事情大脑一般都会有一个初步解决方案,区别在于这个方案的完备性。

  • 第二阶段:靠「项目经验」去解决问题。这个适合有一定工作年限的同学

  • 第三阶段:靠「思维能力」去解决。我们不可能所有的事情都经历过,当面对一个陌生的、棘手的任务,我们希望有一定的方法论、工具包可以指引我们, 使我们可以有条不紊的开展工作。

那么如何提高我们的思维能力?

1、无规矩不成方圆,首先要有流程意识

兵法有云,“兵马未动粮草先行”。要想提高思维能力,首先要有「流程意识」,无规矩不成方圆。

我们相信,这个世间任何事情都是有规律可循的。我们要善于思考、善于发现,总结规律,抽象成流程。其中「使用流程」是基础,「优化流程」是进阶,「制定流程」则是巅峰。

图片

作为研发人员,我们就以软件项目开发为例,从客户问题收集、市场调研,产品同学分析整理成需求文档,业务和技术侧的可行性分析,到开发编码,系统发布上线。

大厂裁员,我们该怎么办?

面对这多的环节,我们在设计流程时要注意哪些问题呢?

  • 首先,我们要确认流程包含的所有节点。并区分出核心节点和非核心节点,每个节点在流程中的作用、关键物料输出,以及是否可以缺失等等。核心节点,要投入更多的精力把控。

  • 其次,将这些节点串联起来,就需要了解他们的上下游关系,这个顺序还是很重要的,乱了辈分很容易影响整个流程的交付。

  • 最后,流程的细化补充。可以叫上相关同学,大家一起头脑风暴,看看是否有一些异常的场景需要补充进来,将整个流程更加完善。

流程模板的制定非常考验大家的思维能力,尤其是一个全新的陌生领域。刚开始,有点盲人摸象的感觉,我们不清楚边界在哪里?哪些是重要的?哪些非核心的?不过没关系,我们可以尝试着按照自己的理解,先动起来。随着对业务逐渐熟悉,再对流程的各个细节优化。

架构是一个逐步衍化的过程,流程模板也是一样的道理,没有什么生来就是完美的。

2、流程是模板,说话靠数据

“一图胜千言” ,除了图之前,人类对数字也是很敏感的。

比如你要买房,然后你去问中介,这套房子什么价?如果对方很高,那估计你要打人,不管有多高,你肯定是想听到一个具体的数字, 600万、1000万…

知不知道是一回事,买不买的起是另一回事。

数据是理性的,具有很强的客观性,2大于1 本身就无法挑战。

我们日常的工作汇报中,不论是 PPT 还是邮件,能用数字量化的尽量用数据来表达,比起苍白的语言,数据清爽又让人无法反驳,我们要学会用数据武装自己,增强自己的说服力。

3、定期复盘,促使自己螺旋式成长

论语有一句话 “吾日三省吾身”。

工作中你是否经常自我反省?一个项目结束,你是否会组织个复盘会,盘点哪些做的好的,哪些有待改进的?

复盘有点类似上面的流程事件的回顾,我们对各个环节的成果、失败背后的原因深度分析总结。抽取其中有价值的经验和方法。

复盘一定要确保相关的项目人员都要参与进来,保证信息能完整的还原,容易得到一个更佳的复盘效果。我们可以采用时间为主线,梳理各个时间点的重要事件,并对事件满意度评价,促使后续能做的更好。

可能有小伙伴会问了,复盘的重要性我也知道,但是我不知道怎么复盘?

教给你一招,你可以采用 “5W根因分析法”,每一个环节每一个事件,反问自己是否取得了最好的结果?如果没有,那有哪些可以改进的点?有哪些优化方案?哪些方案是通用性经验?哪些方案是针对具体项目的经验?

不要把复盘当成是一种追责,它能帮我们认清自己的不足,短暂的痛苦是为了以后更大的成长。“如果你感到痛苦,那是因为你在成长!”

相关文章:

  • EasyExcel自定义Converter解决LocalDateTime系列时间日期转换的问题
  • Nginx限流优化
  • 洗地机暗战:蓝海到血海,内卷的尽头没有赢家
  • python神经网络编程 豆瓣,用python构建神经网络
  • 2-4.spring源码--BeanPostProcessor
  • Centos8/Rocky9/linuxmint-21/安装docker和docker安装python3.9【亲测有效】
  • 网课答案公众号接口API提供
  • 顺丰2022半年报:成绩单背后的业务韧性
  • 考研算法辅导课【合集】
  • LeetCode---SQL刷题5
  • xilinx ip xdc修改
  • 计算机组成原理_双口RAM和多模块存储器
  • 引用折叠 万能引用 模板参数推导
  • 【原创】基于SSM的医院预约挂号系统(医院预约挂号系统毕设源代码)
  • k8s 1.24 及以后版本如何对接 docker
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Apache的80端口被占用以及访问时报错403
  • JS变量作用域
  • Map集合、散列表、红黑树介绍
  • maya建模与骨骼动画快速实现人工鱼
  • nginx 配置多 域名 + 多 https
  • TypeScript实现数据结构(一)栈,队列,链表
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 从零开始学习部署
  • 反思总结然后整装待发
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 区块链将重新定义世界
  • 使用SAX解析XML
  • 我这样减少了26.5M Java内存!
  • 中文输入法与React文本输入框的问题与解决方案
  • 走向全栈之MongoDB的使用
  • UI设计初学者应该如何入门?
  • $.ajax()
  • $GOPATH/go.mod exists but should not goland
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (论文阅读30/100)Convolutional Pose Machines
  • (三)mysql_MYSQL(三)
  • (已解决)什么是vue导航守卫
  • (译) 函数式 JS #1:简介
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)JAVA中的堆栈
  • (转)菜鸟学数据库(三)——存储过程
  • (转)程序员疫苗:代码注入
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .net6+aspose.words导出word并转pdf
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .so文件(linux系统)
  • .ui文件相关
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @SpringBootApplication 包含的三个注解及其含义
  • @Transactional类内部访问失效原因详解
  • [ 蓝桥杯Web真题 ]-布局切换