就像你刚学会编程那样写程序

我正在读 Do More Faster 这本书,书中更多的是给 TechStars 创业孵化公司做广告,但仍然值得一读。让我深有感触的是,书中提到有几个人,他们通过了审查,成功的 — 至少是获得了他们的启动资金,但他们并不懂编程。他们开始学编程,以此来实现他们的创业梦想。

想想这些。就好像是先想出来一首歌,然后去学习如何使用乐器,这样来把旋律变成真正的歌。我猜测这样的学习过程会让大多数的音乐家感到惊愕,但这种惊愕并不能表明这种做法不明智,或最终不会有好结果。毕竟,你也看到了,有众多的乐队,虽然没有音乐理论方面的造诣的帮助,仍然取得了成功。

我在中学时就知道如何编程了。当时参加了一个“BASIC简介”的课程,有个作业是在只有16位色、低分辨率的Apple II 显示器上做出一个具有视觉效果的程序。我迅速的想出一些算法,让它按屏幕坐标循环画线和变换颜色。整个编写、调试过程我只用了半个小时,我完成了。

我严重的低估了人们的创造才能。

有个家伙在他的令人惊异的示范程序里使用了各种动画效果和减色图片。我要说的是令人惊异的东西,例如,里面有个骷髅,血从骷髅的眼睛里流出,流到屏幕底部,像是一个水池似的涨起来。而这只是他的作业中的一个片段。我目瞪口呆。很显然,我不是我想像中的那种艺高胆大的程序员。

我最终看到了他程序里的BASIC清单。他使用几百行、几百行的程序语句来变换颜色、画点和线。没有循环,没有变量。为了让血动起来,他绘制红色像素,等待,然后再其下画另外一滴。所有的坐标都是写死的。他是如何跟踪流动的轨迹的呢?他使用一张纸,在纸上模拟,然后一幕幕复制到屏幕上。

这让我认识到了我被以前的经验毒害了。我只想到了编程,如何写出简洁干净的代码。而这个家伙在写他的骷髅程序时根本不担心这个。他不注意程序会写成什么样子或如何去维护。他只想着用一种方法来表现他的视觉效果。

这是一个很容易被人忘记或忽略的教训。在开发时,既要关注你做的东西给最终用户的体验,同时又要注意用来表现这些用户体验的程序的架构,这是极其困难的事。也许根本不可能。我想这唯一的解决办法就是放弃后者。用直接但看起来滑稽的代码,就像是刚学会编程那样,跳出樊笼,摘掉扣在代码上的各种软件工程技术的大帽子 — 除非你想成为真正的软件工程师,而非事关用户体验的设计师。

[英文原文:Write Code Like You Just Learned How to Program ]
分享这篇文章:

9 Responses to 就像你刚学会编程那样写程序

  1. 说的很对呀,有时候开发人员往往会舍本逐末,把焦点放到程序代码的扩展性上,而不是用户体验上。

  2. ailove says:

    这就是传说中的无招胜有招

  3. 山东秀才 says:

    扯,做项目跟做演示是两码事

    • windy says:

      作者只是想表达,用简单直观的办法考虑问题,不要被束缚了。在被问到一天内时针分针重叠多少次,有多少人会亲自弄个石英表来试验而不是拿笔写公式呢?

  4. dagon says:

    鱼和熊掌难兼得,如果做项目的话,实现业务需求、交互性、用户体验始终应该放在第一位。但是如果开发一个产品的话,需要投入更多的精力考虑程序方面的问题。

  5. 崔冉 says:

    社会也很现实,客户让你在规定的时间完成一个系统的雏形来演示。还是要考虑用户体验,当具体开发的时候再来探讨技术方面。

  6. northwzh says:

    说的太对了,顶一个。程序的架构是依托于用户的需求。

  7. 蒲振伟 says:

    老师好,我觉得你写这篇文章会给我这样刚开始一年的程序员很多误导,我希望您能再改一改您的文章。
    首先,您是在您已经有很多经验和基础之上的情况下,才能发现返璞归真的奥义,这句话的意思就是,虽然您悟出了程序的禅道,但是,是您经历无数成功和失败之后,才能捂得出来的。
    其次,为什么说您会误导我这样的新手呢?我刚刚看完的时候,马上就开始怀疑我的师傅,一个7年的老程序员,他每天和我说的最多的就是用户体验,代码的简介性和可拓展性。但是,看了您的文章我会怀疑他,但是,我又打消了这个想法,因为没有经历过,又何谈能够重回原点呢?
    所以您这篇文章,我觉得最好还是加上注明:新手还是要注意代码的简洁,新手只有历经风雨才能悟出您所讲的道理。老手就该在以前的经验之上,力求开拓,不拘泥自己的经验,让经验成为禁锢自己枷锁。

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据