关于提高编程思维与工作效率的总结
这篇blog将一直持续的更新着。(2021.8.2)
工作提效
- 时间管理大师
利用番茄工作法
或类似方法,提高工作专注度,并且需要非常刻意的去练习,虽然这些方法不能适应到所有的情况,但是它们对每天工作的内容的的细致规划、以及频繁总结,都对工作提效起着很好的指导意义。本质上如下:
do {规划目标 + 专注完成} while (true)
- 目标导向而非职责导向
①:职责导向:作为团队中的一员,完成团队交予的任务,即完成自身职位所应该完成的任务。
②:目标导向:为了触达目标,除了完成自身任务,也要向上、下管理
两种导向有根本的区别,目标导向更能推动项目进行,在平时工作中,仅仅是职责导向,会被动、盲目,且最终可能达不到目标,而目标导向,可以把60分的事情,做到90分 - 交流与沟通
没有高效的沟通方式,因为每个人因为其局限性,都有自己不同的想法,即使在评审、会议中讨论了问题,也会有人不理解,并且不敢发言。
所以需要有足够的耐心,来与任何人讨论问题,在时间充足的情况下,面对面把事情聊的水落石出,才是“高效的交流”方式。
关于编写程序
- 接到新需求后不从程序编写入手,而是从画流程图、类图入手,即个人的方案评审期
这样在写程序时,思路可以很清晰。
个人认为,能做好这些事情,反而能提高效率,而不是 more delay和 more bugs。 - 多读源码,能懂一行是一行
读源码是自虐的行为,但是有很多行为能够帮助源码的阅读。
(1)跟着大佬解析源码
,就是大佬的blog/视频看到哪一步,你也跟着读到哪一步,一些晦涩的地方大佬们都会讲出来的
(2)从小的轮子
读,比如加起来只有 四五个类的那种 做一个简单操作的 小轮子,里面也有很多可以学习的地方,自己也跟着做就更好,丰富自己的blog或者github。
(3)学习设计模式
对阅读源码很有帮助。
读源码的目的是为了达到面向源码编程
,打一个比方:同样是写一篇英文作文,别人是零散的单词和从句的东拼西凑,而你是直接带着一本字典,谁的理解更深不言而喻。
(4)对源码既定的流程,先思考一下,多问自己几个问题,再去阅读源码,效率特高 - 要有代码洁癖
要养成code smell
的习惯,致力编写优美的代码。如果还没有养成这个习惯,建议每天起来写代码之前,都读一下最下面的 code smell。 - 代入产品的思维编程
因为我是一名前端开发人员,所以做的程序是直接呈现给用户的,我们在自测时最直观的感想其实就是用户的感想。“开发程序的时候我是程序员,自测时我就是用户”。这是一种把产品思维代入的编程。它会帮助我们更追求一些代码细节的东西。
比如我们会自己会为负责的模块写一套专门界面显示工具,我们任何的数据带到这个工具里面, 我们都能看到其最直观的工作流程,比起凭空想象的模拟数据工作方式,这更便于我们修改工作流程,这样做更直接而且有据可查,直接提升用户体验。(而且在debug时,这样的效率比打断点、打log更高!)
关于改BUG
- 改bug有三种境界:
第一种:错了哪里就改哪里
。 这种对于开发效率是最低的。
第二种:错了哪里,就把整个模块 这份代码可能出错的地方 检察一遍有没别的错误
。 这个开发效率稍微好一点。
第三种:错了哪里,基于第二种找出原因后,思考一开始为什么这么设计并记录下来,保证之后不再这个地方犯错
。这样的思考对自己提高开发效率是最有帮助的。 - 要做到阶段性的review代码,然后优化
改bug的唯一目的是增强程序的健壮性。所以优化也是改Bug的一种。
项目的收工并不代表之后不做这份代码了。做完后要找时间review一下代码,对代码结构/用户反馈/或者自己的单元测试结果
进行分析。自己主动的去优化
。
关于需求评审、多方交接
- 开发的任何细节都要有文档依据:
大部分情况下,开发初期的需求文档并不是最终版本,而是会随着开发做一些小更新
(小更新是Ok允许的,如果说开发还在大更新需求的话就是双方的严重失误(比如说更改逻辑))
这导致开发时的一些细节,会觉得:这个地方需求会没有考虑到,但是又不影响主流程,所以会自己发挥。
但这其实很不严谨,任何的逻辑以及细节都要在 流程图里面过。所以一定要提出来。商讨出解决方案后第一时间更新到需求文档或者开发文档,这样可以保证出现问题时,锅绝对不在你身上。
(突然想到一个表情包,程序员最讨厌的四个事情:1.写文档 2.别人不写文档 3.写注释 4.别人不写注释, 人间真实) - 如果在需求评审时,只是重点考虑到这个功能能不能实现,那其实这个评审会其实还是会给以后自己留坑。应该在之上,考虑到研发的新功能是否会影响已有的功能,如果影响到,影响的部分该怎么处理。这才是需求评审会时更该注意的一点。功能能不能做这个问题,只要你别来个根据手机环境来改变App主题颜色,那tmd肯定能做啊。
提醒自己的话
- 总是写自己会的代码,错误肯定会少,但是同时学到的东西也不会很多。
- 如果自己不去努力的解决问题,那么自己也会成为团队里的问题。
读书会
- 《影响力》
- 《原则》
Code Smell(代码坏味道)
- Duplicated Code(重复的代码)
- Long Method(过长方法)
- Large Class(过大的类)
- Long Parameter List(过长參数列)
- Divergent Change(发散式修改)
一旦须要改动,我们希望可以找到系统的某一点,仅仅在该处做改动。 - Shotgun Surgery(霰弹式改动)
假设须要改动的代码散布四处。你不但非常难找到它们。也非常easy忘记某个重要的改动。 - Feature Envy(依恋情结)
最根本的原则是:将总是一起变化的东西放在一块儿。[数据]和[引用这些数据]的行为总是一起变化的。 - Data Clumps(数据泥团)
这些[总是绑在一起出现的数据]真应该放进属于它们自己的对象中。 - Primitive Obsession(基本类型偏执)
大多数编程环境都有两种数据:结构类型让你将数据组织成有意义的形式;基本类型则是构成结构型的积木块。 - Switch Statements(switch惊悚现身)
面向对象程序的一个最明显特征就是:少用switch(或case)语句。 - Parallel Inheritance Hierarchies(平等继承体系)
在这样的情况下。每当你为某个class添加一个subclass,必须也为其它已实现的兄弟class对应添加一个subclass。 - Lazy Class(冗赘类)
假设一个class的所得不值其身份。它就应该消失。 - Speculative Generality(夸夸其谈未来性)
当有人说“噢,我想我们总有一天须要做这事”并因而企图以各式各样的挂勾和特殊情况来处理一些非必要的事情,这样的坏味道就出现了。 - Temporary Field(令人迷惑的临时字段)
在变量未被使用的情况下推測当初其设置目的,会让你发疯。 - Message Chains(过度耦合的消息链)
实际代码中你看到的可能是一长串getThis()或一长串暂时变量。採取这样的方式,意味客户将与查找过程中的航行结构紧密耦合。 - Middle Man(中间转手人)
你或许会看到某个class接口有一半的方法都托付给其他class,这样就可能是过度运用。 - Inappropriate Intimacy(狎昵关系)
继承往往造成过度亲热,由于subclass对superclass的了解总是超过superclass的主观愿望。假设你认为该让这个孩子独自生活了,请运用Replace Inheritance with Delegation让它离开继承体系。 - Alternative Classes with Different Interfaces(异曲同工的类)
假设两个方法做同一件事,却有着不同的签名式。 - Incomplete Library Class(不完美的程序类库)
- Data Class(纯稚的数据类)
它们拥有一些字段,以及用于訪问这些字段的方法,除此之外一无长物。 - Refused Bequest(被拒绝的遗赠)
Subclasses应该继承superclass的方法和数据。但假设它们不想或不须要继承,又该怎么办呢?它们得到全部礼物。却仅仅从中挑选几样来玩!按传统说法,这就意味继承体系设计错误。 - Comments(过多的注释)
并不是不能写过多的注释,注释的对象是代码,但是代码糟糕所以才导致 注释写的篇幅过长
关于提高编程思维与工作效率的总结相关推荐
- DevOps 解决方案:最大限度地提高开发人员的工作效率,缩短上市时间以及提高客户满意度
DevOps 解决方案:和平.爱心与工作效率 为见证开发和运营之间前所未有的协作而做好准备.我们的解决方案可消除阻碍,有助于最大限度地提高开发人员的工作效率,缩短上市时间以及提高客户满意度. 为什么选 ...
- 使用智能客服系统提高了客服工作效率
使用智能客服系统提高了客服工作效率,及时的抓取信息,能够为企业提高留下各户的成功率,给企业的快速发展提供强有力的支持.在目前这个受疫情影响的环境中,越来越多的人为了保障安全,会有大量的人选择进行线上咨 ...
- 使用 ABAP 开发的一个基于 Web Socket 的小工具,能提高程序员日常工作效率
程序员区别于其他岗位的一个优势是,我们可以充分利用自己掌握的编程语言,将平日一些琐碎的,重复的日常工作,通过代码来实现自动化,从而省下更多的时间来投入到技术含量更高的工作中,提高工作效率. 本文介绍一 ...
- 如何提高程序员的工作效率 这几招就够了
一直以来,很多学生都被一个问题困扰过:程序员如何才能提高自身的工作效率? 1.给自己一个安静的编程环境 编程是一个细致活儿,需要程序员全情投入,因此创造一个安静的编程环境非常重要,你可以尝试切断自己的 ...
- 好用的在线工具,提高你的办公工作效率
我们在日常工作中经常会用到各种在线工具,但是有些工具广告比较多,或者用到最后关键时候提示付费.下面办公人导航就和大家分享一些好用值得收藏的在线工具,提高你的工作效率. 1.在线ps,photopea ...
- 作为 IT 从业人员,你觉得有什么工具大大提高了你的工作效率?
目录 前言: 1. 禅道 2. Jenkins 3. sonarqube 4.showdoc 5.swgger 6.分布式配置中心apollo 7. appscan 8.项目开发文档流程化归档 9.M ...
- Snipaste 提高十倍生产力工作效率,堪称最强神器
哈喽,大家好,我是.一个工作n年的老程序员啦,平时喜欢在Github上瞎逛,顺便淘一些有意思的小工具~ 今天要给大家推荐一款堪称神器的效率工具. 可以说是工作这么多年来,装机必备的软件. TA就是Sn ...
- linux export 生效_Linux之提高命令行的工作效率
辉语:之前聊了很多关于Linux中的内容,今天我们继续跟大家分享一下Linux中非常重要的知识点:shell脚本的编写.今天,我们就一起来了解一下shell脚本. 编写简单shell脚本 shell是 ...
- 协作设计: 如何有效提高团队合作的工作效率?
以下内容由摹客团队翻译整理,仅供学习交流,摹客iDoc是支持智能标注和切图的产品协作设计神器. 在设计工作中,团队协作一直扮演着十分重要的角色.同时,它也是设计过程中最具挑战性的部分 -- 并不是每个 ...
最新文章
- win10只有c盘怎么分区_磁盘分区:系统C盘空间不足怎么办?
- python自学教程变量_Python学习入门基础教程(learning Python)--2.2.1 Python下的变量解析...
- 2015/Province_C_C++_C/6/奇妙的数字
- 一起谈.NET技术,异步调用与多线程的区别
- Java进阶07 嵌套类
- Android App优化之提升你的App启动速度之实例挑战
- 编译问题解决:mkdir: 无法创建目录/usr/local/share/man/man1: 文件已存在
- 计算机声音控制程序,win10电脑利用EarTrumpet音量控制应用程序使用教程 | 专业网吧维护...
- Ochestrator企业数据总线
- 点击子元素却也触发父元素的点击事件
- TMS320C5509A 控制DDS AD9854芯片进行AM幅度调制时的FIR滤波处理
- 第一单元 用python学习微积分(三) 求导四则运算及三角函数(上)- 三角函数
- python中rgb颜色_自定义RGB颜色与Python诅咒
- 外卖项目05---套餐管理业务开发
- 广东省推出居民身份电子凭证,忘带身份证也能住酒店了
- Mesos+Marathon搭建部署
- base64编码转码
- java调用ant_从java调用ant,然后在ant终止后返回到java
- Java开发需要知道的HTML知识
- app推广“惊天地”的一件大事件