One take,是几年之前看综艺节目听林志炫提到的一个词,就是说录制一首歌曲一次性完成,无需后期的各种修音。这个概念听起来就很酷,对不对?

  作为一个程序员,我经常也希望能够One take:一次性把事情做好,不用反复。但逐渐发现,追求One take是很难的。

  本文地址:https://www.cnblogs.com/xybaby/p/9607331.html

关于读书

  坦白的说,我看书不多,不管是技术书籍还是人文。除了本身不够热爱、不能坚持的主因,忙碌是不可忽视的客观原因,现在大家都提倡碎片化阅读,这对于非技术书籍还行得通,但对于技术书籍,尤其是自己不是很擅长的领域,还是需要大块集中的时间去阅读。

  因为花在阅读上的时间少,我就特别希望One take:一本书读一遍就基本掌握,至少掌握我所感兴趣的部分。但事实上,基本是不行的,读完一遍之后经常是一遍空白,究其原因:(1)年纪大了,记性变差,这是自然规律;(2)碎片化阅读,捡了芝麻丢了西瓜,缺少连贯性;(3)也许阅读本来就不是一件能一蹴而就的事情。

  那么我也在继续努力,试图最高效的阅读一本技术书籍。我自己目前的阅读大约是这样的:首先看前言(Preface),看看这本书想要讲得是什么,重点在哪里;第一遍通读全文,做好笔记,包括写得好的地方以及暂时不明白的地方;第二遍,结合书籍的目录和笔记,以及每一章的总结(summary),回顾整本书的内容,有一个全面的掌握,梳理内在逻辑关系。第三遍:整理成读书笔记或者思维导图,以便之后检阅。

  当然,实际情况是,之后用到的时候,还得去查看原文(毕竟原文比笔记详细)。

  书读百遍,其义自见,古人诚不欺我。在阅读(精读)这件事情上,似乎并没有什么捷径,想要One take,太难。

关于需求

  程序员与产品经理之间不可调和的矛盾,是大家津津乐道的话题。

  作为程序员,自然经常会骂:PM傻逼,啥都不懂瞎指挥,鄙视!当然,PM也在骂:程序搓逼,这都实现不了,鄙视!

  要和谐相处,其实需要双方的努力,尤其是在知识背景差异很大的情况下顺畅地沟通,以达到共识。不过,在这里,仅从程序员的角度出发,讨论PM改需求的问题。

  让程序(或者还有UI、美术)最为头疼的事情,就是PM改需求。对于改需求,程序自然是深恶痛绝的。不过,这不就是追求One take吗?希望策划的需求一次性确定,程序实现之后就不要再改动了,这是最好的、最理想的状态,一气呵成,不过现实基本都不是这样的。

  对于PM,当他有一个idea的时候,仅凭脑补是很难验证的,这个时候就得需要程序帮忙实现一个原型,帮助去验证、完善想法。在《你的灯亮着吗》里面提到,无论表面上表现得如何,在你提供他们所要求的东西之前,他们极少知道自己想要什么。即使在需求实现之后,在老板的要求下、在与其他同事的交流中、在用户的实际体验反馈后,都会发现一些需要完善、调整的地方,这个时候就会有需求的改动。换个角度思考,一个功能、产品实现出来之后,如没有任何进一步的迭代需求,那么多半是没有用户使用。因此,不是说PM不想一次性搞定,而是根本就做不到。

  在《怎样才算得上合格的程序员》一文中也提到,一个合格的程序员需要在业务的角度去思考、讨论需求,既能帮助自己和PM搞清楚真正需要解决的问题,又能为之后可能的需求变化做一定的准备。

  另外,对于程序写代码这件事情,也是不存在One take的。因为不能一次做好,才会有重构、才会有敏捷开发、才会有大牛说“好的架构不是设计出来的,而是演化而来的”。只不过,重构这个事情,是由程序员自身去驱动的,在程序员看来觉得是合理的、值得投入的;但是在PM上看来,也可能会觉得是浪费时间。而该需求这件事,在程序看来可能是浪费时间,但对于项目、对于业务来说是值得的。

  有的时候,我们应该反思,自己是否“严以律人,宽以待己”了。  

  也许,当明白,提需求--实现需求不大可能One Take之后,可以互相体谅吧

One take,可望而不可即的更多相关文章

  1. 基于综合服务平台浅谈Sass应用

    一.       前言 CSS不是一种编程语言,只是单纯的一行行的描述,没有逻辑没有变量,因此写CSS对于习惯于运用逻辑思维编码的程序员来说是一件很头疼的事.于是勤奋的程序员就开始运转他们敏捷的大脑, ...

  2. 科幻小说《霜与火》 by 雷·布雷德伯里

    漫漫长夜中,西姆出世了,躺在山洞冰凉的石头上,嗷嗷大哭,浑身血液奔流,脉搏每分钟一千跳.他不停地长大.妈妈用发烫的双手喂西姆吃东西.人生的梦魔开场了.一来到世间,他的眼睛就闪烁着警觉的光芒:而后又令人 ...

  3. Spring Ioc源码分析系列--Ioc容器BeanFactoryPostProcessor后置处理器分析

    Spring Ioc源码分析系列--Ioc容器BeanFactoryPostProcessor后置处理器分析 前言 上一篇文章Spring Ioc源码分析系列--Ioc源码入口分析已经介绍到Ioc容器 ...

  4. Java 为值传递而不是引用传递

    ——reference Java is Pass by Value and Not Pass by Reference 其实这个问题是一个非常初级的问题,相关的概念初学者早已掌握,但是时间长了还是容易 ...

  5. 【热文】 为什么很多硅谷工程师偏爱 OS X,而不是 Linux 或 Windows?

    校对:伯乐在线 - 黄利民 链接: 1. Why do most of the developers in Silicon Valley prefer OS X over Linux or Windo ...

  6. 1.2 - C#语言习惯 - 用运行时常量readonly而不是编译期常量const

    C#中有两种类型的常量:编译期常量和运行时常量.二者有着截然不同的行为,使用不当将会带来性能上或正确性上的问题. 这两个问题最好都不要发生,不过若难以同时避免的话,那么一个略微慢一些但能保证正确的程序 ...

  7. Ubuntu 16.04 LAMP server 指南 - 配置 Apache2.4,PHP7,和MariaDB(而不是MySQL)

    翻译自:https://www.howtoforge.com/tutorial/install-apache-with-php-and-mysql-on-ubuntu-16-04-lamp/ 昨天在虚 ...

  8. 扩展BindingList,防止增加、删除项时自动更新界面而不出现“跨线程操作界面控件 corss thread operation”异常

    在做界面程序时,常常需要一些数据类,界面元素通过绑定等方式显示出数据,然而由于UI线程不是线程安全的,一般都需要通过Invoke等方式来调用界面控件.但对于数据绑定bindingList而言,没法响应 ...

  9. 为什么使用Binder而不是其他IPC机制

    本文搬运自:Advantages of using Binder for IPC in Android 使用Binder而不是其他(Semaphores , Message Queue, PIPES) ...

随机推荐

  1. React Fiber 数据结构揭秘

    此章节会通过两个 demo 来展示 Stack Reconciler 以及 Fiber Reconciler 的数据结构. 个人博客 首先用代码表示上图节点间的关系.比如 a1 节点下有 b1.b2. ...

  2. F#周报2019年第8期

    新闻 Fable 2.2发布,支持匿名记录 Paket提升还原时间 Microsoft.Jupyter.Core预览 .NET Framework 4.8早期可访问编译版本3745 博客 使用SAFE ...

  3. Beanstalkd,zeromq,rabbitmq的区别

    1).rabbitmq(功能强大,管理应用也完善,不过也比较重量级)2).zeromq(从rabbitmq出来的一个小而快速的队列,基本是目前最快的队列机制,自身支持多种模式,可以对各个模式进行自己组 ...

  4. Java集合类源码解析:ArrayList

    目录 前言 源码解析 基本成员变量 添加元素 查询元素 修改元素 删除元素 为什么用 "transient" 修饰数组变量 总结 前言 今天学习一个Java集合类使用最多的类 Ar ...

  5. Java基础:一个100%会发生死锁的程序

        多线程是Java工程师进阶所必须掌握的一项技能,也是面试中绕不过的一个环节,而死锁又是多线程同步失败的经典案例,对于复杂的系统,死锁是很难通过代码层面来做静态检测和排查的,所以有的面试官会从反 ...

  6. 讲讲跳跃表(Skip Lists)

    跳跃表(Skip Lists)是一种有序的数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的.在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且在实现上比平衡树要更为 ...

  7. Ext中setVersion和getVersion

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  8. ArcGIS 10.0发布缓存地图服务(详细版)

    1.软件准备ArcGIS Destop10.0,ArcGIS Server10.0,Windows系统下自带的IIS6.0以上服务器 1)安装ArcGIS Destop10.0软件,选择完全安装,安装 ...

  9. 利用OpenStreetMap(OSM)数据搭建一个地图服务

     http://www.cnblogs.com/LBSer/p/4451471.html 图 利用OSM数据简单发布的北京地图服务   一.OSM是什么 开放街道图(OpenStreetMap,简称O ...

  10. iOS----------viewcontroller中的dealloc方法不调用

    ios的viewcontroller生命周期是 init -> loadView -> viewDidLoad -> viewWillAppear -> viewDidAppe ...