美文网首页技匠志行距版权时差党
程序员也该懂得“这样就好”

程序员也该懂得“这样就好”

作者: 技匠 | 来源:发表于2016-12-21 06:37 被阅读5179次

    今年我又先后两次去到日本,其实,日本给我留下的最深刻映像并非大家常常挂在嘴边的干净、空气好、礼貌周到的服务等等,而是那些无处不在的设计体现。产品的包装、一块指路牌、路边小食店的招牌、行人们的衣着,虽然它们的形质、用途各不相同,却总能给人以简朴、精致、人性且颇具内涵的舒适感觉。我想可能正是这些由小及大、无处不在的美才培育出了今天这个相对成熟的日本社会吧。


    说到设计,我曾读过一些日本设计师的书,田中一光的《设计的觉醒》,黑川雅之的《设计与死》,原研哉的《为什么设计》、《设计中的设计》、《白》等等。这些日本设计大师所提出并不断被继承的极简、去修饰、设计的功能性等理念都深深印刻在了当代的日本设计之中。而其中让我最受启发的,却是他们用最直白语言告诉我们的“这样就好”。

    今天,作为一名程序员,当我在进行系统设计时,也时常会提醒自己:“是不是这样做就好了呢?如果没有必要,我们就不需要增加这个附加功能了”。也正是在“这样就好”的指引下,我对如何正确地进行程序设计似乎有了更深入的理解。

    记得那还是我在担任架构师期间,曾负责对公司的一个IT项目进行评审。评审中,项目经理在她所作的报告中,将最大的篇幅留给了系统支持个性化这个特性,还眉飞色舞地将系统可以任意变更颜色主题这个功能强调了一番。我当时就想,这位项目经理一定没能理解用户的真正需求与痛点吧,而这个系统除了可以换颜色之外,估计也不会有什么亮点了。

    从程序员一路走来,我们中有多少人都曾热衷于系统功能的大而全,那些可有可无的配置功能,以及仅仅作为修饰的个性化定制。虽然这些功能都似乎能为我们的产品增光添彩,但它们真的是用户最需要的吗?如果让我们回到过去,我们还会坚持付出那些代价去实现这些功能吗?

    优秀的系统绝不可能凭空产生,它也没有一个统一的标准,而“这样就好”却能指导我们这些系统设计者,在众多选择中作出平衡与取舍。该使用什么样的架构,采用哪种技术,在这个功能中使用什么设计模式,采用何种缓存策略等等,这些都需要我们根据当时的环境、资源、用户等要素做出恰当的选择。与其提供很多功能而最终用户却始终觉得不好用,倒不如做好一个能真正帮助用户解决问题的功能,让用户觉得,“嗯,这样就挺好”,然后再进一步,“如果能...就会更好了”,这样一步一步做出理想的产品来。

    而下面这些则是我们在系统设计与开发时应该尽可能避免的问题:

    • 不盲目使用新技术:新技术意味着风险和不确定的代价(多因修补未知缺陷引起),因此我所在的金融行业里,很少会选择那些新生技术(1年内),而更倾向于选择成熟且稳定发展中的技术或框架。
    • 避免过度设计:过度设计源于系统设计者没有理解用户的真正需求,而将自认为有必要的功能附加于系统之上。而前面提到的可配置、个性化等就是那些最典型的例子。要避免过度设计其实也很简单,要做到多看(看那些优秀的系统是如何设计类似功能的),多想(站在用户的角度去想他们所提需求背后真正的痛点和问题是什么),多做(不要只停留在需求文档上,尽可能快地做出能够验证需求的功能原型,然后与用户不断确认和改进),多说(在每一个阶段都与用户保持持续有效的沟通)。
    • 不在项目中技术镀金:技术镀金指的是开发人员在项目开发中过于追求技术的完美性,试图在技术上镀上一层完美的金壳,导致软件开发工作量加大,项目时间拉长,而最终有可能导致整个项目的失败。我们不应该否定程序员追求完美的自我要求,但应该在项目中引导他们正确地理解“这样就好”的理念,帮助他们平衡追求完美与项目现实要求之间的关系,从而作出最恰当的技术方案选择。

    最后我想说,即使你已经很好地理解了“这样就好”,并能提出更合理的系统设计,但结果却还是很有可能会遭到否定。因为,你所需要面对的或许是那些不那么成熟的项目经理、盲目自大的产品经理以及完全没有产品思维的业务用户,而在他们眼中那些糖衣炮弹(系统的附加功能)总是有着非同一般的吸引力。你可以尝试着去说服他们,但即使失败,你也不用为此感到沮丧,因为时间会证明你是正确的,而在你内心中也应该知道,自己正变得更加成熟,并且已经站到了更高处。

    相关文章

      网友评论

      • 追那个小女孩:过度设计,这一点严重同意,很多程序深陷焦油池就是因为过度设计,大多数程序员为了体现自己的专业能力,做一个小需求都整一大堆设计模式进来,这样只会让后续维护的人欲哭无泪。
      • 码工人生:嗯很好
      • c0b4b02ba387:技匠前辈,我想问一下,我现在在迷茫到底选择Java还是单片机还是嵌入式 说兴趣吧 对这三个都不差 我应该如何选择我将来的道路?
        技匠:@IFyouLMe 如果真的兴趣差不多的话,我的建议是java,基于我们将进入一个全新的算法时代,而java能够在更多领域创造可能:smile:
      • 木景蔓:赞同,应该首要满足用户需求而不是自己华丽,所以产品经理的需求等级划分尤其重要
      • 简书男孩:说的好啊,赞一个
      • 太帅了:我看到第一张图,禁止自行车停放的牌子下面停了很多自行车 :joy:
        magicsong:你确定会日语?:joy:
      • 4170b8fb491d:深有感触
      • 倾剑飞血:这就像是产品设计一直强调做减法一样,技术同样需要做减法。去逛无印良品和优衣库的时候无不被日本的简约美而折服。很多数学家和物理学家就说过,一个公式一定是简单的,如果非常复杂,一定就是弄错了。
      • 灿烂的黑土:111111111111111111
      • dfe147f4a102:可惜不是程序员决定的,现在甲方动不动就要做个淘宝,qq
        dfe147f4a102:@幺叔 客户都不知道自己需要什么 但公司为了生存也是要接的 最后搞出来的东西大家都不满意
        倾剑飞血:@_v君 我朋友也做外包,每天面对各式各样的需求,他自己开发了一个基于react native的自动化app生成平台和自动化测试平台,可以根据需求简单的定制app,如果你把软件开发想成立体的,有时真的可以把复杂的问题变得简单,就看你的能力如何
        幺加幺:@_v君 我也遇到过,被问做个类似淘宝专门卖蔬菜的平台要多久 :joy: :joy: :joy:
      • ac7ff7c5ab73:若无必要,勿增实体。 OCCUM'S RAZOR
      • 贝克曼:其实很多东西都是被逐步扭曲的,比如报价,需要按照工作量来报价,而工作量肯定要和功能点挂钩,于是乎,功能越来越多,产品越来越复杂,也越来越偏离初衷了
      • 經年雨安:这样就好,饭吃七分饱,极简主义“less is more ”都是类似的值得我们借鉴的哲学命题,指导生活。
      • 392340e1fa2e:说都好。。但是这样就好 的范围比较大,这种自我标准 需要时间与经验来积累。
      • 老衲一禅:程序的初衷在于给用户带来更好的体验和操作性能,而不是设计的美和全,带来的雍长和笨重,主编说的很对,大赞!!!
        老衲一禅:@蚂蚱Damon 算是吧
        蚂蚱Damon:@在下沈先森 头像是本人?

      本文标题:程序员也该懂得“这样就好”

      本文链接:https://www.haomeiwen.com/subject/cbvwsttx.html