我以前说过,程序猿不是一般的人,是具有某种超能里的人。但问题是。程序猿往往意识不到自己的这样的特异功能。在他们的眼里。会觉得自己非常普通。跟常人一样,所以,程序猿能做到的事情,其它人——比方他们的客户/软件用户——也应该非常easy做到。

但其实,因为大部分人——绝大部分人(包含软件开发公司的客户/购买软件的用户)——都是电脑小白(对电脑知识/计算机知识/软件知识知之甚少的人)。一个对于程序猿来说非常显而易见的软件操作,换成让用户来操作。就会出现各种各样奇怪的事情。这让程序猿非常痛苦。



        记得有一次,一个客户打电话给我,说他电脑桌面上的大e找不到了。我没听懂,什么大e找不到了?客户解释说:就是那个长的像大个儿的英文字母e的图标找不到了。我倒。最终明确了他指的是桌面上的IE浏览器的图标不见了。



        另一次,有个客户提出一个需求,要求在页面上添加一个搜索功能,我问它,系统里有搜索功能,为什么还要在这个地方新增一个搜索功能。他说他要的不是那个搜索。他要的是在这个页面上搜在某个关键词。经过进一步的沟通,我明确了,他要的是浏览器上的快捷键CTRL+F的功能。

由于用户的这些特征,导致了程序猿觉得完美的程序,到了客户的手里,却变成极其难用的软件,投诉电话如乡下骂街的泼妇似的响个不停。而事后分析发现。根本原因都是应为程序猿高估了用户对软件的掌控能力。低估了自己对软件的创造能力,于是导致了他们看这些客户使用他们开发的软件时。都是那样一种可笑的行为。

假设是脾气暴躁的程序猿。遇到这样的情况,难免会对着客户发一顿牢骚。并且,程序猿的脾气一般都不是非常好,所以,通常跟客户沟通时。项目经理一般都是跟着一起。以免事态激化。



        用户尽管给程序猿带来非常多麻烦,但事实上程序猿的全部荣耀感都来自客户,由于仅仅有客户用得惬意。程序猿才会有成就感。比方像以下这几个客户在使用一个新款软件时显露出来的表情,足够让一个处在北京重度雾霾的下午的程序猿也能露出笑容:



        程序猿尽管脾气不好,但他们都是为工作着想,不带不论什么个人恩怨。当开发软件有紧急任务时。他们都是任劳任怨的加班加点,当在已经公布的软件中出现了重大bug时。他们都会深深在自责,会连夜赶制出紧急修复bug,假设不能在第一时间让用户惬意,他们会茶不思、饭不想、觉不睡。即使在实在没有短期内完整的补救措施的情况下。他们也会想出一些歪招,但也是行之有效的方案,让用户临时度过难关。



        用户应该体谅程序猿。程序猿的生活实际处在一种十分矛盾的状态中。

编程不像其他行业。比方泥瓦匠砌砖,砌一层砖,墙就会高一次。

但编程不一样,有时候一个程序猿写了一天的代码。急得满头大汗,但开发进度未必就有所进展。有时候甚至还会倒退。软件编程是一个亦虚亦实的世界。有时候你搞不清一段代码为什么好用。有时候也会诧异由那样的代码构成的软件也能跑起来。



        最后,说一下跟程序猿打交道的一些注意事项。程序猿由于整天和编程逻辑打交道。所以对因果关系特别敏感。假设你的话语的因果关系不是非常明白。这会让他们感到疑惑,假设你的话语的因果关系不完整,这会让他们办错事。假设你的话中有if,最好后面用then做结束。或者用else给出选择,主语要明晰。



       假设你是一个程序猿,你会理解我说的话。

说实话当一个程序猿不easy的更多相关文章

  1. 每一个程序猿必知之SEO

    似乎由于受这篇文章的影响 http://katemats.com/what-every-programmer-should-know-about-seo/ 于是我也觉得我应该写一个每一个程序猿必知之S ...

  2. 每一个程序猿都应该用MBP

    换笔记本的想法非常久了.前段时间换工作就想看换工作之后是什么情况吧. 可能工作配的笔记本就是MBP.后来发现是想多了,新工作的笔记本是Thinkpad X240. 配置全然够用了,8G内存+128G的 ...

  3. 连载《一个程序猿的生命周期》-《发展篇》 - 3.农民与软件工程师,农业与IT业

    相关文章:随笔<一个程序猿的生命周期>- 逆潮流而动的“叛逆者”        15年前,依稀记得走出大山,进城求学的场景.尽管一路有父亲的陪伴,但是内心仍然畏惧.当父亲转身离去.准备回到 ...

  4. 连载《一个程序猿的生命周期》- 44.感谢,我从事了IT相关的工作

    感谢博客园一直以来的支持,写连载都是在这里首发,相比较CSDN和开源中国气氛要好的多. 节前,想以此篇文章结束<一个程序猿的生命周期>的<生存>篇,对过10的年做一个了断,准备 ...

  5. 连载《一个程序猿的生命周期》-28、被忽悠来的单身HR(女同志)

    一个程序猿的生命周期 微信平台 口   号:职业交流,职业规划:面对现实,用心去交流.感悟. 公众号:iterlifetime 百木-ITer职业交流奋斗 群:141588103    微   博:h ...

  6. 连载《一个程序猿的生命周期》-6、自学C++,二级考过后,为工作的机会打下了基础

    一个程序猿的生命周期 微信平台 口   号:职业交流,职业规划:面对现实,用心去交流.感悟. 公众号:iterlifetime 百木-ITer职业交流奋斗 群:141588103    微   博:h ...

  7. 蒙特卡洛树搜索算法(UCT): 一个程序猿进化的故事

    前言: 本文是根据的文章Introduction to Monte Carlo Tree Search by Jeff Bradberry所写. Jeff Bradberry还提供了一整套的例子,用p ...

  8. 不变(Invariant), 协变(Covarinat), 逆变(Contravariant) : 一个程序猿进化的故事

    阿袁工作的第1天: 不变(Invariant), 协变(Covarinat), 逆变(Contravariant)的初次约 阿袁,早!开始工作吧. 阿袁在笔记上写下今天工作清单: 实现一个scala类 ...

  9. 专访雷水果国:离1.5K至18K 一个程序猿5每年的成长之路

    我只是一个小菜鸟,对于自主学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识.小菜鸟创建了一个群.希望光临本博客的人能够进来交流. 寻 ...

随机推荐

  1. Swift2.1keyword @noescape介绍

    @noescape优化编译器编译,swift 2.1引入. 函数假设有一个一个參数是closure的话,能够在前面加一个关键字@noescape表示在函数return前closure生命周期结束,能够 ...

  2. iOS 事件传递及响应过程

    iOS 事件传递及响应过程 -->>事件到来-->>事件分发 -->>事件响应 事件( Events) 官方文档( Events(iOS)) 是这样描写叙述的: U ...

  3. git检查与放弃本地的代码修改情况

    git diff  可以查看当前没有add 的内容修改(不在缓冲区的文件变化) git diff --cached查看已经add但没有commit 的改动(在缓冲区的文件变化) git diff HE ...

  4. eval、exec、execfile

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #http://blog.csdn.net/azhao_dn/article/details/6921654 ...

  5. 自定义AppSession

    TelnetSession.cs public class TelnetSession:AppSession<TelnetSession> { protected override voi ...

  6. 用openssl生成SSL使用的私钥和证书,并自己做CA签名(转)

    本 文记叙的是一次基于SSL的socket通讯程序开发中,有关证书,签名,身份验证相关的步骤. 我们的场景下,socket服务端是java语言编写的,客户端是c语言.使用了一个叫做matrixssl的 ...

  7. poj 1156 Palindrome

    Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 51631   Accepted: 17768 Desc ...

  8. NET的基本用法(摘)

    摘自:http://baike.baidu.com/link?url=Knc-OicoX8CPcaMS0r3eU8z8ns9z1S6OsRaBTYUIT1raU0FsPWQ35xL-dlxKg9Oy# ...

  9. PHP在微博优化中的“大显身手”

    新浪微博宋琦:PHP在微博优化中的“大显身手” 地址http://www.csdn.net/article/2013-09-04/2816820-sina

  10. 深入浅出Android开发之Surface介绍

    一 目的 本节的目的就是为了讲清楚Android中的Surface系统,大家耳熟能详的SurfaceFlinger到底是个什么东西,它的工作流程又是怎样的.当然,鉴于SurfaceFlinger的复杂 ...