诀窍

2020-07-16 19:58:35

我是一名软件开发人员。虽然不是严格的技术支持,但你似乎喜欢我的故事。这个故事讲的是一个特别难缠的客户。

几张订在一起的文件落在我的桌子上。我抬头看了看。是我老板打来的。

老板:早上好,你好!你能看一下这些要求并给我一个估价吗?我们可能有一个新项目给你。

我的老板是有史以来最好的老板。这可能是因为他是公正和理性的,想让我继续工作,因为我擅长我的工作,但我不这么认为。他也是一个很棒的人。

这些要求没有什么特别之处。收集一些数据。显示一些报告。诸如此类的东西。很简单。客户对我的估计很满意,所以我们去见他们。

我在客户那里的联系人是一个60多岁的高大男子。我自己也很高,但他比我高出4英寸。他的握手很坚定,近乎辱骂。当他讲话时,整个房间都与他的低音产生共鸣。他有一种庄严的态度,迫使你认真对待他。如果这是石器时代,他就是氏族首领,没有人会想到质疑。一个真正的阿尔法男性。

一旦房间里的共鸣停止了,他把我的手还给了我,我就不由自主地把自己与他进行比较。我瘦长,声音沙哑。在我35岁之前,我有一张娃娃脸,几乎不能留胡子。好在我把自我价值感建立在我的专业能力上。

我们完成了这个项目,几周后我们还有另一个会议。在构建了最初要求的大部分内容之后,我很自豪地展示了界面的原型。客户似乎很满意,但他们还有一些额外的功能想要添加。这种情况持续了几个星期。他们中的每一个人单独在一起并不是什么大事,但他们开始积累起来。我们称这种现象为“特征爬行”。功能的发展最终放慢了脚步,但直到它们包含了完整的客户关系管理工具。

阿尔法对进展速度不满意。不幸的是,我没有太多可以演示的东西,因为我工作的是底层结构,而不是用户界面。我建议我将UI的部分添加为模型;非功能界面,以使最终产品更容易可视化。

这让阿尔法很高兴,但他仍然不耐烦。他建议他把屏幕的草图画出来,让我来做。这是一个很棒的想法,因为有了视觉效果可以更容易地就项目进行沟通和推理。这是我经常使用的工具。

几天后,阿尔法回来了。他已经退场了。他已经在Powerpoint中为大约10个屏幕绘制了草图,甚至在按钮上添加了翻到目标草图的链接。这太棒了!

我立即注意到不一致之处。没关系,这只是个草图。关键是要解决这类问题。因此,我开始基于草图构建样机UI,但需要我自己进行修改。在某些地方,素描有点荒唐。这也没问题;不是每个人都是专业的用户界面设计师。我只是根据需要修改草图。

我定期向阿尔法展示我的进步,但他似乎一天比一天满意。最后,他明确表示,他希望我能准确地按照他的草图行事。没有我解释的余地。

哇哦!草图突然变成了一种规格。前后不一,诸如此类。更糟糕的是,阿尔法已经变得如此投入到素描中,以至于我不得不为每一处改变而争辩。

我能感觉到这是一个微妙的话题,但我觉得作为一名专业人士,我有责任尝试与阿尔法进行推理。

我:嘿,阿尔法?草图是很好的谈话起点,但不是很好的UI。也许让我来做实际的设计吧?我是专业人士。

阿尔法:砰!几十年来,我一直致力于成功的软件项目。我想我知道我在做什么!

我需要一条前进的路,所以我和我的老板谈了谈。他也很困惑,但他建议我们试着满足阿尔法的要求,因为跟他说理是行不通的。我把我一直在做的UI放在一边,重新开始。

当我试图从设计中推断出底层的数据结构时,像联系信息这样的东西会非常不一致。有时会有多个电话号码,或者一个也没有。姓名和电子邮件也是如此。物理地址将丢失随机部分。好的。我让阿尔法了解每一个问题,并按照他勾勒出来的方式建立它们。他所有“完成”的设计都是破碎的、半生不熟的。

在这之后,阿尔法实际上看起来更快乐了。但他抱怨屏幕太大。他必须滚动才能看到每个屏幕的全部内容。他不喜欢滚动。我就实际问题催促他。事实证明,他设计的用户界面(在Powerpoint中)可以一次完全适应电脑上的每个屏幕。他的电脑。

经过进一步询问,我发现他有一台14英寸的笔记本电脑。最终用户要么拥有24英寸台式显示器,要么拥有智能手机。叹息。

部分问题是Alpha发明了他自己的UI范例。“屏幕”将有固定的布局,没有滚动。网络应用程序不是那样工作的。我相信他几十年的经验来自于基于终端的大型机系统,就像机场和银行通常拥有的那样。

Alpha希望使用输入字段来显示输出数据。要使输入/输出文本字段与众不同,它们的边框颜色应该不同。我解释说,单独的输入/输出输出布局要紧凑得多,更容易阅读,而且实际上希望能安装在他的笔记本电脑屏幕上。但他对此并不感兴趣。

他不知道什么是弹出式模式对话框。您知道当您保存文件时,一个对话框要求输入位置和文件名,而您只有单击“确定”或“取消”才能继续工作?相反,他坚持通过在选择框中选择“新建”来创建新条目,该选择框还将选择一个现有条目进行编辑(或显示)。这是糟糕的“关注点分离”,并导致可怕、混乱的代码。如果没有现有条目,并且您无法检测到何时选择了“New”选项,这也很棘手,因为它是唯一的选项。所有这些都使得开发所需的时间至少增加了4倍。

不知何故,项目进行得很顺利。在完成所有模型之后,就可以添加实际功能了。请记住,到目前为止,一切都没有奏效。全是门面,就像西部电影布景。

我开始解释我们喜欢的方法,这是我个人和大多数软件行业都相信的:最小可行项目。本质上,你从一些微小的东西开始,然后在它的基础上扩展,确保你总是有一些有效的东西。

这一点很重要,因为另一种方法是详细计划所有内容并立即开始构建,这很难奏效,而且成本高、速度慢,并且无法处理不断变化的需求。而且要求总是在变。这种管理不善的项目很容易扼杀一家公司。

我:所以如你所见,我们应该从小事做起,一次扩展项目的一个功能,以确保我们保持在正轨上。

阿尔法:没有。由于我们的时间不多,重要的是您一次完成一个PowerPoint屏幕,而不是返回它。当它完成的时候,它就完成了。我绝对不想听到您正在重写已经完成的代码。

在这一点上,我试图解释一下“技术债务”以及它是如何影响软件项目的。基本上,当您编写代码时,您会做出假设,而当您对代码进行更改时,这些假设就不再正确(如果它们曾经是正确的话),因此旧的片断变得越来越没有意义。所以这些碎片已经不能很好地结合在一起了。这需要解决,如果你不这样做,你就积累了“技术债务”。一旦债务变得太大,到处都是看起来很奇怪的代码,进行任何更改就变得非常耗时,甚至是不可能的。修复方法是不断重写代码,使其更有意义。这就是所谓的“重构”。

但阿尔法对我不屑一顾,显然对借口不感兴趣。我的老板睁大眼睛看着我。阿尔法一离开,我就向老板询问了不得重写的规定。

老板:是啊,他有什么问题?现在不用担心那个,只要按照你决定的方式做你的工作就行了。

这一切都极大地损害了我的心理健康,给了我很大的压力。我咬紧牙关头疼,每晚都得吃止痛药。

后来,阿尔法抱怨我的交际技巧。我的老板知道这是胡说八道,决定让他做我们的联络人,保护我不受阿尔法的伤害。他还联系了客户的CEO,谈到了沟通上的困难。这位首席执行官向老板道歉,并告诉老板,阿尔法最近与自己人发生了争执,但他“承诺”会乖乖听话。我还发现他们的硬件人员,也是由阿尔法管理的,正处于耗尽的边缘。

幸运的是我的精神健康,另一个项目需要我,所以一位年长的同事接替了我的工作。我们花了一些时间在一起,让他了解最新情况,并解决了他遇到的问题。在其中一次会议中,我们谈到了我的挫折感。

我:你知道,这很难。我想尽我最大的努力,我为我的工作感到自豪。但他就是不让我成功。

一股思念的空气不知何故吞没了我们,就像十一月一个阴冷的早晨透过窗户的阳光。他看着我的眼睛,寻找着什么,就像是在直视我的灵魂。

年长的同事:我记得那是什么感觉。感到自豪..。即使在这些天里,这种情况仍然时有发生。

就像一个破裂的肥皂泡,那一刻突然结束了,他声音中的思念被一种阴郁的语气所取代。

年长的同事:当他们不尊重我的专业意见时,我就不管了。

最后,阿尔法变得很难共事,我的老板拒绝与他共事,并抛弃了客户。