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. REST API设计指导——译自Microsoft REST API Guidelines(三)

    前面我们说了,如果API的设计更规范更合理,在很大程度上能够提高联调的效率,降低沟通成本.那么什么是好的API设计?这里我们不得不提到REST API. 关于REST API的书籍很多,但是完整完善实 ...

  2. Ansible快速上手

    ansible 是通过python 语言开发的自动化运维工具,可以实现批量系统设置.批量程序部署.批量执行命令等功能 下面是基于docker使用ansible测试示例,可以让新手快速上手使用 一.新建 ...

  3. 流式大数据计算实践(4)----HBase安装

    一.前言 1.前面我们搭建好了高可用的Hadoop集群,本文正式开始搭建HBase 2.HBase简介 (1)Master节点负责管理数据,类似Hadoop里面的namenode,但是他只负责建表改表 ...

  4. xamarin.forms之使用CarouselView插件模仿网易新闻导航

    在APP中基本都能见到类似网易.今日头条等上边横向导航条,下边是左右滑动的页面,之前做iOS的时候模仿实现过,https://github.com/ywcui/ViewPagerndicator,在做 ...

  5. 【.NET Core项目实战-统一认证平台】第七章 网关篇-自定义客户端限流

    [.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章我介绍了如何在网关上增加自定义客户端授权功能,从设计到编码实现,一步一步详细讲解,相信大家也掌握了自定义中间件的开发技巧了,本篇我们 ...

  6. vb.net实现Vb中的Any变体类型

    今天无意中发现可以替代VB中的Any 在API声明中可以使用<MarshalAs(UnmanagedType.AsAny)> VB中声明的API Declare Function Send ...

  7. Java开发笔记(二十六)方法的输出参数

    前面介绍了方法的输入参数,与输入参数相对应的则为输出参数,输出参数也被称作方法的返回值,意思是经过方法的处理最终得到的运算数值.这个返回值可能是整型数,也可能是双精度数,也可能是数组等其它类型,甚至允 ...

  8. 814-Binary Tree Pruning

    Description: We are given the head node root of a binary tree, where additionally every node’s value ...

  9. 安装屏保软件(Linux终端演示 “黑客帝国” 字母雨界面)和Linux修改管理员密码

    1.Linux修改管理员密码:打开终端:1. 重启 reboot  2.进入内核登陆系统点击e3.进入系统救援界面,定位Linux16所在行,找到ro 后删除,在此位置添加一条命令: rw init= ...

  10. 0.react学习笔记-环境搭建与脚手架

    0.环境搭建 笔者使用的是deepin/mac两种系统,因为两个电脑经常切换用.环境搭建没什么区别. 0.1 node安装 按照node官网叙述安装 # Using Debian, as root c ...