我昨天发了这条推文,似乎引起了很多人的共鸣。
只是一个小小的提醒,你构建的东西比构建的方式重要100倍。
— Chris Coyier (@chriscoyier) 2017年12月10日
当我写下这段话时,我感到有点厌倦了关于技术细节的无休止的讨论,并渴望更多地关注我们正在构建什么以及为什么构建。
如果您是本网站的读者,那么您和我生活在同一个圈子里。这是一个不错的圈子。它充满了喜欢聊网页设计和开发的聪明人。我生活在这个圈子里,并且热爱它。
很容易陷入关于框架、哪种类名最合理、哪些优化技巧最重要或代码库的哪个部分应该负责样式的激烈讨论。这些都是引导我们行业发展的很棒的讨论。
但什么更重要?您选择的命名约定,还是您的用户是否能够实际预订航班?您选择的哪个状态存储库,还是您是否真的找到了用户正在寻找的围巾?哪个命令行工具拉取了您的依赖项,还是有人能够找到并阅读发送法院上诉的说明?
我试图鼓励人们去构建并思考他们正在构建什么,而不是过于纠结于如何构建。您正在为人们构建事物,这是一个巨大的责任。它比技术选择更重要,尽管技术选择看起来也很重要。
不过,我喜欢我得到的反驳。
大部分内容都集中在这样一个事实:如果您做出糟糕的技术选择,就会限制您构建内容的质量,并减缓您适应不断变化的用户需求的能力。这很公平。
好的技术可能会直接为您的用户带来更好的功能和用户体验。这很公平。好的技术可能是您和竞争对手之间的差异化因素。这很公平。
我最喜欢的是引用三只小猪的故事。如果您不熟悉,有一个大灰狼试图吃掉小猪。他们每个人都建造了一栋房子来保护自己。我想您可以猜出哪只小猪做得更好:用干草建造房子的小猪,还是用砖头建造房子的小猪?
这很公平。
Drew McLellan 在 All That Glisters 中也谈到了这一点,但他关注的是旧技术与新技术的问题。
有如此多的新工具、框架、技术、样式和库需要学习。您知道吗?**您不必使用它们。**如果您使用 Grunt,即使其他人已经切换到 Gulp 或 Brunch 或 Webpack 或 Banana Sandwich,您也不是一个糟糕的开发者。当您“过时”的构建工具已经满足您的需求时,花费大量项目时间来玩弄构建工具的时尚可能是有误导性的。
还有这个珍宝
软件,就像人一样,天生就拥有巨大的潜力,但实用性却很有限。新生儿——无论是数字的还是肉体的——都令人兴奋和可爱,但它们也会导致不眠之夜和呕吐物。
他接着说,您正在构建的内容可能会帮助您做出技术选择。啊,是的,“什么”。“什么”不仅是人们唯一关心的事情,它**也**有助于指导技术选择。
使网站变得有用就像买房子一样。位置、位置、位置,或者用网页术语来说就是信息、信息、信息。我是一个业余网页设计师。我以数千份的数量出售一本小册子,它没有建立在任何网格、npn或任何其他框架之上。只是非常基本的布局。您必须提供人们需要的东西。我不明白为什么人们必须使用最新的工具,这些工具会在页面上抖动东西,并使东西从页面侧面弹出,让您跳起来。它只会使事情变得更技术化,正如您指出的那样,不眠之夜和呕吐物。这肯定是一场活生生的地狱。我只有73岁,我懂什么?
很棒的文章。我总是为这类事情而烦恼:这个类名是否合适,我是否应该为此元素使用 section 或 article 标签,为什么我为此使用 jQuery 而不是原生 JS。
最终用户实际上并不关心这些事情。他们关心的是某些东西是否看起来不错以及是否有效。
我认为这并不是偷懒或不做事的借口。我们都应该为我们所做的事情感到自豪。但有时,技术决策最终会浪费宝贵的时间,而其他人实际上并不在乎,只要它有效。
与此相关的推论是,好的技术并不能保证您能够改变和适应,也不能保证为您的用户提供更好的功能和用户体验。
我将这种现象比作老工匠,使用1600年代的工具制作精美的家具。将其与用于制作宜家家具的超高科技工具进行比较。两者都有其用途,在许多方面,宜家优于手工制作的家具(快速响应不断变化的需求是一个方面),但它不耐用,也没有相同的质量。
也许软件并不完全等同于此,但多年来,我没有跟风那么多来来往往、被替换或升级为“下一个最棒的东西”的潮流的一个原因是,我看到了浪费在仅仅尝试这些新工具上的时间和金钱。更不用说精通它们了。
我习惯于总是购买两年前的硬件,因为今天所有新东西的价格都溢价,而且我的用户**没有**使用它,因此它不适合进行现场/实时测试。我将投入到全新系统中的时间也包括在内。让其他人解决这些问题。
我将坐拥我们强大的系统,这些系统与超级豪华的现代系统没有区别(我们专注于响应时间、UI 设计,而不是框架、全面的可靠支持基础、没有黑客等),并且随着超级棒的功能获得同等地位,我们将持续升级我们的系统。永远保持现代化,并始终以小步的方式展望未来,永远远离前沿。
嗨,Chris,
一如既往的好文章,即使它很短。
我经常在 dotnet core 栈上使用 Aurelia,使用 Bootstrap 进行布局,嗯,基本上就是这样了,哦,Font Awesome 是我主要使用的字体集。
重点是,这种易于使用的组合让我能够在大约 30 秒内启动和运行大多数我需要编写的应用程序,再加上所有内容都使用 TypeScript 完成,因此我在两个非常相似的环境中进行前后端工作,因此当我工作时没有令人费解的范式转换,而且您知道吗……这种设置对我来说非常完美。
它满足我的需求,在我需要的时候,以我需要的方式满足我的需求,并且对于我的客户要求我构建的大多数东西,它都能完美地完成工作。
问题(至少在我看来)大多数时候来自客户和业务/利益相关者。
我一次又一次地看到,他们接受了营销和花哨的销售策略,然后他们回到他们的技术合作伙伴或员工那里,告诉他们必须使用技术 X,因为它是最好的东西。
作为 .NET 开发者社区的知名成员,我花费大量时间试图教育开发者,这不是关于代码、框架,或者确实不是关于技术专业知识非常有限的人员的规定,而是关于项目以及什么对项目有效。
例如,对于一个小型的单页宣传册网站,我非常乐意使用原始 HTML 和原生 JS 以及没有框架来完成,或者对于一个简单的 2/3 页的简单网站,我会在 wordpress 上部署它。
然而,许多利益相关者只理解营销或市场驱动的途径,因此他们“用眼睛思考”,而不是像他们应该的那样用大脑思考。
这导致了许多开发者不愿或无法反驳,要么是因为他们缺乏信心、沟通技巧,要么只是在有毒的环境中工作,这反过来又赋予了请求方更多权力,因为他们认为这种方法是正确的,因为“没有问题”。
如此多的开发者陷入了他们无法逃脱的困境,他们有客户推动使用新东西,而实际上他们应该使用不太新的东西,而唯一停止它的方法是我们尝试从内部改变它。但内部是一个丑陋的地方,无论出于何种原因,我们似乎都无法打破这个恶性循环。