# 零、前言

为什么探索 LightSwitch 值得我花这么多时间？

我们中的少数人设计逼真的三维游戏，或者在谷歌的玻璃项目团队中。我们大多数 IT 行业的人都创建了非常具体的业务线软件，我们自己永远不会使用。尽管目的和细节可能会因行业而异，但我们为保持医疗预约、为企业记账、跟踪大学生或管理房地产而编写的软件，都属于被称为“信息系统”的同一类无聊软件。信息系统是以数据为中心的应用，它们有几个共同点:一个或多个数据库、定义如何修改数据的大量业务规则、一个或多个不同的图形用户界面以及大量不同的报告。

无论这些信息系统多么不具挑战性，但创建它们的人却恰恰相反。我们花了几个月甚至几年的时间来全面了解编码语言、技术和模式，并且通常拥有计算机科学学位，我们是善于分析的艺术家，总是在寻找挑战。

迈克尔·a·杰克逊在 1975 年的《程序设计原理》一书中指出了这一悖论:“程序员……经常在他们的工作中寻求一种可以理解但灾难性的复杂性和独创性倾向的庇护。由于被禁止设计任何比程序更大的东西，他们的回应是让程序变得足够复杂，以挑战他们的专业技能。”37 年后仍然如此，直接的结果是软件仍然贵得离谱，几乎从未按时交付，充满了已知的问题，具有讽刺意味的是，尽管创建软件是为了在特定的业务案例中帮助特定的用户，但它通常需要 500 页的手册或几天的培训来教用户软件将如何帮助他们自己的业务流程。

最成功的软件工程师或软件公司是那些理解编写软件应该有多无聊的人。他们明白可以做出不断发展的革命性技术选择，但这些选择并不是他们业务的核心。他们是真正的摇滚明星，能够在截止日期之前，在预算之内交付完全符合业务需求的软件。为了跟随他们的脚步走向成功，真正需要遵守的规则屈指可数:

*   **学习业务。**如果你不知道某个人是谁，他或她的问题是什么，那么相信你可以创造软件来解决某人的问题，或者让某人的生活变得更轻松，这是荒谬的。在开始开发之前，请最终用户带您度过他或她的一天。随着每一个动作，问“为什么？”“怎么会？”最重要的是，“这让你有什么感觉？”不要指望最终用户能够给你提供一份需求清单——正如中国谚语所说，鱼是最后发现海洋的。做一个企业的内部人，但要做一个足以识别实际需求的外部人。
*   **只为生意服务。**一天有 24 小时，学习新的、具有挑战性的技术和架构设计或代码模式绰绰有余，但要在闲暇时间去做，而不是在工作中。把时间花在不能直接为企业增加价值的事情上被认为是浪费。昂贵的废物也是如此。如果用户需要软件来管理他们的约会，那么这就是他们应该得到的——而不是“基于通用插件的宏记录器”，或者任何你骗自己相信会给他们的工作带来真正启示的东西。
*   **只码业务。**沉闷是无法逃避的；没有任何自动映射器或代码生成器可以否定必须定义屏幕、实体和验证的事实。但是，定义一次。如果绝大多数手工编写的代码不是领域特定的，或者如果您在整个应用的几个层中实现了更改，那么您就做错了。更具体地说，您使用了错误的工具。

如果你读了这篇序言，并且你同意，或者可能一直在点头或微笑，那么 Visual Studio LightSwitch 是一个你在工具带上肯定想要的工具。专为市民开发者和专业软件工程师而设计，如果你面对的是一个信息系统，如果你了解自己的业务并准备好为业务服务，那么 Visual Studio LightSwitch 将允许你只对业务进行编码，成为你应得的编码摇滚明星。