惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cloudbric
Cloudbric
有赞技术团队
有赞技术团队
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
Threat Research - Cisco Blogs
L
LangChain Blog
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
Latest news
Latest news
S
Schneier on Security
Cisco Talos Blog
Cisco Talos Blog
MyScale Blog
MyScale Blog
C
Check Point Blog
IT之家
IT之家
P
Palo Alto Networks Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
CERT Recently Published Vulnerability Notes
Scott Helme
Scott Helme
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
G
Google Developers Blog
T
Tor Project blog
T
Threatpost
D
DataBreaches.Net
博客园 - 【当耐特】
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Troy Hunt's Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
NISL@THU
NISL@THU
P
Privacy & Cybersecurity Law Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
Cisco Blogs
博客园_首页
S
Securelist
T
The Exploit Database - CXSecurity.com
Last Week in AI
Last Week in AI
量子位
U
Unit 42
Know Your Adversary
Know Your Adversary
Hugging Face - Blog
Hugging Face - Blog
S
Security Affairs
Google Online Security Blog
Google Online Security Blog
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
S
SegmentFault 最新的问题
Engineering at Meta
Engineering at Meta
N
News and Events Feed by Topic
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志

Mobility

从薅 token 到管 skill:我的 pks 工具落地实践 把笔记、微信读书、知乎装进 Obsidian:我基于llm-wiki知识中枢搭建实录 免费AI视频生成器:我如何用零成本做出带旁白字幕的多场景AI视频 Agnes免费模型真能白嫖视频?我改造了ViMax来试试 教你薅token(二):构建agent无关的skills管理工作流 教你薅token:构建agent无关的AI工作流 用 AI Agent 完成 Hexo 主题迁移:从 Next 到 Butterfly 的全自动化实践 Vercel封禁163邮箱后,我是怎么恢复博客的 用LLM管理安全开发规范:一次llm-wiki实践 Vaadin框架教程:Java工程师的前端开发秘籍 hexo多语言方案总结及最佳实践 知乎增强工具-评论时间精确到秒 怎么理解数据库的四个隔离级别 kubernetes是什么-实用向教程 怎么更科学的用知乎摸鱼 读书笔记《系统之美》,如何面对现实中的复杂问题 分布式系统设计中的通用方法 高并发解决方案很难吗?轻松聊清楚高并发设计 SSP,DSP,RTB,ADX都是什么? 讲讲互联网广告的概念与发展 从redolog,undolog到隔离级别,刨根问底,讲清楚事务和ACID java项目低学习成本使用kubernetes的实践经验 剧变中的2021-一个中年工程师的年终总结 kubernetes环境下做金丝雀发布的一种思路 prometheus教程: 一篇文章讲懂prometheus 实现一个简单的java版本高性能获取ip地址所属国家工具 iterm2配置ssh书签, 实现记住密码和自动登录 怎样做一个好的技术分享 云原生究竟是什么 读书笔记 稻盛和夫《干法》-思考应该怎样去工作 review的个人价值 户口?大厂?高薪?生活?聊聊应届程序员的职业选择 RPC接口将所有输入输出封装成类是合理设计吗 程序员做业务开发的价值 设计模式的原则,设计模式究竟是什么 通过合理的设计降低软件开发复杂度 信息传播过程中的衰减 看房小记-2020北京学区 读书感悟:文明、现代化、价值投资与中国 读书笔记-我曾走在崩溃的边缘 [翻译][关于分布式架构和系统设计]分布式系统的模式-综述 redis的对象 redis里的数据结构 设计模式备忘录 聊聊程序员的职业生涯,我对程序员这个职业的理解 通过mysql批量操作不生效问题聊聊java里mysql的batch 【实践经验】单元测试怎么写 关于rocketmq的readQueue和writeQueue 数据分析的利器-clickhouse介绍 通过位运算转换大小写 activemq多线程消费的不同处理方式 高并发下作余额扣减的一些经验 java细节:三目运算符和自动拆箱 设计一个开源的北京地铁路线规划小工具 java版本 redis cluster的数据迁移 jstorm源码解析之循环任务AsyncLoopThread activemq特性之持久化 activemq的安装及基本使用 activemq系列-概述 hexo教程:博客系统搭建及部署到github jstorm的监控metrics数据输出到第三方存储介质 camel系列之camel debugger的使用 jstorm源码解析之bolt异常处理 log4j动态添加appender 【翻译】java里编写基准测试的一些经验 java线程池:获取运行线程数并控制线程启动速度 maven里的mirror和repository: 配置多repository 使用maven shade plugin 打可执行Jar包 activemq plugin开发指南及示例 通过加入classpath的形式实现命令行运行java程序时引入第三方jar包 解决fatjar的 “java.lang.SecurityException: Invalid signature file digest for Manifest main attributes” 问题 通过实际操作理解redis cluster原理 一种实现在hbase中存储set的思路 log4j2.xml配置示例及与log4j的区别 不实现equals方法的情况下比较java list 使用lua脚本和jedis实现redis的hmsetnx命令,操作hash表时不覆盖原有数据 vitualbox虚拟机安装centos 7 及ssh访问、自启动等配置 在java独立进程(standalone app)中嵌入hawtio监控 java日志系统简介: 从tomcat大量打印debug日志说起 Java kryo/protobuf/protostuff序列化 or Json 性能对比 java分布式锁入门实战 leetcode第三题: 输出不包含重复字母的最长子串 java多线程实现三个字母顺序输出 一次kafka空间激增排查:kafka的数据压缩、批量发送等 java里128有何魔力? 聊聊Integer的缓存 storm/jstorm生态与周边工具,storm连接activemq,kafka,hdfs等 jstorm UI 介绍 五分钟学会写storm代码: jstorm/storm编码原理与普通java程序的区别 activemq web console的权限配置 storm ui 中一些关键属性的含义 activemq 5.6 连接池的内存泄露问题 关于apache camel的消息转发效率 一篇不错的lda模型入门文档 wordcount代码 hadoop基本的学习资料
我提升开发效率的经验
流沙 · 2021-02-01 · via Mobility

大家好,我是流沙,一名近六年工作经验的程序员。我的工作经历里,包含了整体文化、氛围差别非常大的公司,和很多不同类型的人合作过,观察到过很多没效率的现象。同时,我一直觉得我自己的开发效率是非常高的。整个职业经历里,我很少在八小时的工作时间外处理任务性的事项。即使有时迫于公司制度不得不进行加班,也是在执行自己的学习计划,或者进行一些深层的思考。因此,我想做一个系统性的关于开发效率的总结,分享给大家。

首先,列两个非常没效率的场景。

  • 小A开发过程中碰到一个没见过的报错,于是抱着电脑去找团队里的大牛小X, 小X努力的搜集相关的各种必要信息。与此同时,小A就在旁边看着,并且不时的和小X还有旁边的小Y聊着天。
  • 小C拿到一个大型需求,匆匆看了一遍,接着就开始开发。开发一半了,发现产品稿上有个点看不明白,又去和产品问。问的过程中产品又想起来别的事,又说了起来。最后聊了半天,小C发现自己之前的工作基本白做了。

虽然有夸张的成分,但是这些事也是确实每时每刻都在发生的。造成这些现象的原因很多,我们今天就好好剖析一下。在剖析效率问题之前,我们需要先看看程序员日常都要做哪些事。其中对工作效率影响比较大的,我把他们主要归为三类:

  1. 日常开发
  2. 沟通
  3. 排查和解决问题

接下来,我们就对这三项逐一分析,如何提升工作效率。

日常开发

日常开发中都有什么情况会造成效率下降呢,我列举几个:

  • 像上边小C一样的返工行为
  • 日常工作中大量重复劳动,比如写sql,写模板代码
  • 本来是一个很小的改动点,改了才发现这也要改,那也要改;更严重的是,根本不知道「那也要改」,结果一改就崩
  • 个人注意力不集中,老走神

可以看到,这里边大部分是和代码设计有关的。对于设计,其实就两句话,一是要设计,二是要设计好。

也就是说,首先,你得知道开发之前是得有设计这么个环节的。软件工程是一门科学,它有概要设计、详细设计这些步骤是有道理的。要设计到什么程度再进开发呢?我的观点是越细越好,理论上,除了实际把代码码出来,其他所有事都可以在设计阶段做完。

关于设计的好不好,一个重要的评价标准,就是后续改起来是否容易。如果一个变化的原因会导致多处代码修改,那就是一个不好的设计。如何提升这一点,需要去学习设计模式、架构方面的知识,没有速成之路。

另外,关于注意力的问题,当然大家可以借助番茄钟这样的工具。但是工具永远都只能是辅助,最重要的还是自己去提升主观上的自控力。

沟通

接着说沟通这块,沟通分主动沟通和被动沟通。主动沟通就是你自己这边发起,要去找其他人问问题、讨论;被动沟通则是别人发起,来问你问题或者讨论事。

主动沟通的主要问题就是越聊越远,聊着聊着就不知道聊哪去了。这里我给两个建议,一是发起沟通前一定要想清楚自己想通过这次沟通达到什么目的,不能有个模糊的想法就迷迷糊糊的去了,这种沟通就是最大的时间杀手;二是可以列一个沟通清单,沟通过程中话题扩散其实是个常见的现象,我觉得没必要刻意去杜绝这种事,关键是要保证自己本来想聊的聊出结果来,这就需要一个可以用来check的清单。

被动沟通其实是一种很容易打乱工作节奏的事,但是很多情况下无法避免,比如突然又线上问题要处理,领导有事找你,等等。我们能做的就只有减少不必要的被动沟通次数。比如自己提供的功能,写好文档和注释,其他人就不需要靠问你就能看明白。方法名、返回值等团队内要建立起一些固有约定,大家都遵守,也就不需要问才能了解了。

另外还有一点是做好任务的拆分,做若干个小任务,而不是做一个大任务。这样,当被迫打断工作时,「切换上下文」的成本会低一些。

排查和解决问题

这也是很重要的一个方面。对有些人来说,查Bug改Bug的时间,可能会远高于开发新需求。对于这个,我们的主要目标就是降低排查难度,减少排查时间。可以从下面几个方面做。

  1. 设法尽早暴露问题,比如通过写单元测试。同样一个问题,出现在一个小模块里,和出现在一个复杂系统中,排查难度是不言而喻的。

  2. 要有足够多的信息,比如日志,比如各类监控数据。就像我们体检一样,只有先看得到那些异常指标,才能再去针对性的详细排查。否则什么指标没有,就只能两眼抓瞎乱查了。

  3. 再一个就是排查方式,每个人都需要逐渐积累经验,建立起相对固定的排查问题的套路。比如我,习惯就是遇到问题先把各种能看到的信息都扫一遍,从中发现异常指标,指标看不懂的话就借助搜索引擎或者他人来理解,然后根据指标思考有什么可能原因,再逐步去验证。这里边很重要的一点就是什么样的问题要自己思考,什么样的问题应该借助于他人或者搜索引擎。像上边小A的做法,就是非常不可取的,问别人或者搜索引擎的问题,一定是非常具体的,你随手一个报错发过来,别人首先得花大量时间搜集信息。一个1小时搞得定的问题,强行去问别人,很可能要花掉两个人一下午。

    什么叫具体呢,比如遇到一个ClassNotFoundException, 如果你压根不知道它是什么意思,那去搜一下没有问题。而假如你已经知道它的意思就是找不到类,那再去搜索就没有任何意义,这是要做的是思考这个类为什么找不到,有哪些可能原因。

除了上边这些之外,其实还有一类原因,就是996大环境大家主动选择的摸鱼。对这一点,我还是建议大家快速干完活之后腾出时间提升自己,摸鱼无益。再一点就是用脚投票,多去找没有加班文化的公司、团队,用自己的努力让他们发展的更好。

大家有想法也可以在评论区或者公众号( Mobility )和我交流。

原文地址: https://lichuanyang.top/posts/3423/