我最初了解 Jeff 是通过他的网站 Perishable Press,它长期以来一直是一个很棒的网页设计资源博客,专注于 CSS、WordPress 以及许多其他地方难以找到的 .htaccess 内容,同时还融入了 Jeff 丰富的个人风格(我认为这是任何优秀博客的先决条件)。您可能知道,Jeff 和我共同撰写了 Digging Into WordPress,包括书籍和博客。Jeff 确实是一个能够完成事情的人,我一直很钦佩他这一点。我想让他接受采访,问他一些我以前从未问过他的问题。
*Chris:你的写作风格非常全面。例如,你最近写了一篇关于 CSS 边框规则 的文章。它不是概述或教程,更像是一种百科全书式的做法,记录了这些属性。这是你刻意为之的吗?还是仅仅是“你的风格”?
Jeff:那篇文章是我随手记下的“笔记倾倒”,开头和结尾匆匆写了几句。通常情况下,我会从那个点开始一篇帖子,并尽可能地添加更多相关信息。这通常会导致更长的文章,涵盖更多内容和/或更深入地探讨主题。这始终是根据目标受众的水平来决定的,而这通常是一个有根据的猜测。你假设你的读者已经了解了多少?你是从如何打开电脑开始,逐步引导到主题,还是假设他们已经完全掌握了你的知识点,然后直接提供信息?我认为我的很多文章都过于努力地迎合了最低的共同点,如果我直接切入主题,它们可能同样有用。我认为找到平衡点是写好教程的关键。
我对网页设计和写作确实很痴迷。看到作品最终完成是一种欣喜,我喜欢确保自己在过程中没有遗漏任何东西。所有细节都需要考虑。所有细微差别都需要解释。我想也许多年的学校生活扭曲了我的写作风格,使其有点像学术教科书的语气。我个人觉得在处理大量材料时,这种风格更容易理解,但对于其他任何东西来说,这可能有点过头了。五年前我刚开始写网页设计教程/文章时,我实际上是为自己写的,完全是为了学习。我能够查找并在文章中包含的信息越多越好。如今,当这种“百科全书式”的方法有用时,我乐于采用这种方法,但会继续尽量“淡化”和“放松”语气。我仍然将“质量”与制作精良、经过充分研究的内容联系起来,但不必担心每件事都要面面俱到。当你处于那种水平时,根本没有足够的时间去跟上。
*Chris:在我们的技术写作领域,我发现“目标受众”问题很有趣。在撰写我们这本书的过程中,我们经常被问到这个问题:“它是针对什么水平的读者?”,我通常会回答:“嗯,呃,算是中等水平,但所有水平的读者都能从中获得价值。”然后在这个博客上,我倾向于在任何特定文章最适合的技能水平方面摇摆不定。
你在 Perishable Press 上采用的方法是什么?你是否一直试图让它针对同一水平的读者?也许更有趣的是,你认为技术出版物如果在技能水平定位方面保持一致,是否会更成功?
Jeff:我认为这取决于主题。例如,当我写关于“博客”或“社交媒体”时,我不会花时间解释和定义所有内容——我只是直接切入主题。编写关于特定代码示例或技术的文章也是如此——你只需要假设,如果有人在查看这个级别的内容,他们可能已经熟悉了基础知识。另一方面,当你探索更广泛的主题时,例如如何保护网站安全,各个水平的读者都可能会阅读,因此更重要的是解释清楚所有内容。写作时另一个重要的概念是“广度”与“深度”。内容的范围可以非常广泛,解释可以很深入,但没有人会阅读,因为它看起来很吓人,或者它可能非常有针对性和肤浅,以至于人们会将其直接视为垃圾邮件。我个人喜欢从其他两个角度进行写作:“广而浅”或“聚焦而深”。这两种方法都有助于创作出优秀的文章。例如,我最近发布了一篇涵盖 76 个 WordPress 技术 的文章,这篇文章非常受欢迎。那里没有太深入的内容,但它确实涵盖了大量内容。你可以在 Smashing Magazine、Six Revisions 和 Nettuts 上经常看到这样的精彩内容。同样,也有一些文章属于“聚焦而深”的范畴。对我来说,那就是质量所在——一篇专注于特定主题并深入探讨的文章。这就是我喜欢阅读的内容,所以这也是我努力创作的内容。
至于技术书籍,我非常喜欢它们,并且认为它们很有用,但它们似乎都遵循相同的通用格式:无聊的引言,涵盖基础知识,详细讲解一些理论,然后给出一些示例。而且它总是以那种僵硬的“学术教科书”的语气来写,让很多读者昏昏欲睡。这些书籍可能是很棒的学习工具,但没有理由它们都需要如此平淡、无聊和可预测。我认为这就是我们选择自出版并为 Digging into WordPress 走 DIY 路线的原因之一。如果你看看我们创造的东西与大型出版商会创造的东西之间的区别,你就会完全明白我们为什么做出这个决定。采取风险、发挥创意和改变现状对于其他技术书籍是否合适,取决于太多因素,甚至无法考虑。
*Chris:条理性是我与你联系起来的另一个属性。例如,在 Perishable Press 上有一系列关于强迫症 CSS 格式化的经典文章。在其中一篇中,你声称按 CSS 规则的行长度对其进行排序,我不得不承认,从维护的角度来看,我发现这有点疯狂。尽管我也觉得它在视觉上很有吸引力。你现在还这样操作吗?有什么新的方法吗?这种强迫症式的条理性从哪里来?
Jeff:哈哈,是的,与你单行编写 CSS 的风格相比,我理解为什么 按行长度组织 看起来很乏味。但对我来说,以这种方式编写我的 CSS 使其更容易阅读和维护。一切都井井有条,如果有什么东西——即使是最小的事情——放错了地方,它也会非常显眼。快速浏览一下我的样式表,你就能立即知道它是否完整或某些地方是否需要修改。但这不仅仅适用于 CSS,我对正在处理的任何代码都感到痴迷,无论是 HTML、PHP、JavaScript 还是甚至 HTAccess。我就是一个极其有条理的人,无论是在线上还是线下。这在“现实”世界中并不总是那么有利,但在处理代码、像素和写作时,强大的组织能力可以让你在更短的时间内完成更多工作。我认为条理性是数字世界运作方式的基础。从本质上讲,网络只不过是二进制数据的复杂组织。我认为,你越有条理,你就越接近网络的真正“本质”。
尽管如此,我必须承认,与您一起在 DiW 网站 上的工作让我对将 CSS 声明块写成单行格式有了新的认识。在浏览较长的文件时,这种方法确实看起来快了一些,因此我一直在将单行声明集成到我自己的、按行长组织的样式表中。单行声明何时比分行方法效果更好的好例子包括简单样式的元素,例如strong, em, code, a等等。我认为用不同的编码风格来标点样式表可以提高可读性和可维护性。与其只是一大堆格式相同的代码,不如用这些漂亮的断点将文档划分为可读/可扫描的部分。
*Chris:那么“日常工作”是什么?我知道你在某种实验室工作。这是否涉及任何网络工作,或者这被限定为自由职业和副业?有什么未来的计划吗?
Jeff:啊,是的,“日常工作”。大约六年前,当我第一次涉足网页开发时,我都是“业余时间”兼职做的。那时候,我需要一份日常工作来支付账单,同时学习相关知识并逐步建立起来。从那时起,我创建了一家名为 Monzilla Media 的小型设计公司,在那里我从事网页开发、平面设计和其他创意工作。幸运的是,现在的情况是我可能能够在没有日常工作的情况下生存下去,但我想我可能只是太懒或太焦虑,以至于不愿意放弃它。拥有那份稳定的全职工作可以为我的家人提供医疗保险,并且每个月还能提供一些额外的“缓冲”。但是,当时机成熟时,我期待着继续前进,完全专注于网页设计、写作和其他创意追求。
未来的计划包括任何事情和所有事情。目前,我只是顺其自然,尽可能多地工作。最终,我想更多地专注于写作,也许还会教授一些课程,并尝试帮助当地社区的一些人。但这都是遥远的未来思考。在此之前,一切都是关于尽我所能地在线工作,并享受生活。
*Chris:正如我们都知道的,以及我们社区中的大多数人都知道的,时间管理并非易事。责任和承诺可能会累积到很快就会让人不堪重负的程度。你正在同时处理我们的书籍、你的在线业务和博客、你的日常工作、你的家人,以及我确信还有更多的事情。你是每天都过一天,根据需要做出反应吗?或者你有一个总体计划来控制局面?
Jeff:好问题。我大部分时间都是每天过一天,但也做一些计划。鉴于网络和在线工作的动态特性,我所做的很多事情要么是自发的,要么是反应性的,具体取决于情况。我只是凭直觉知道该做什么,而不需要太多明确的计划。我知道我想完成什么,然后只是将我的日常活动引导向我的长期目标。这本书就是一个很好的例子。我不记得曾经坐下来说过类似“好的,现在让我们制定一个完成这项工作的计划”之类的话。相反,完成一本 WordPress 书籍的目标一直存在,其他的所有事情——写作、编辑、设计、印刷等——都在事情发展的过程中完成了。如果我们中的任何一个人想尝试安排和计划所有的事情,就会浪费很多时间。通过保持事情的流畅性和灵活性,我们在一半的时间里创作了一本更好的书。
对我来说,“自动驾驶”的灵活性使多任务处理和时间安排的灵活性大大提高。我讨厌计划者。我从未使用过任何日历或日程安排程序。尝试弄清楚所有事情并将其全部安排好需要花费太多时间。相反,我通过尽可能地保持开放来完成事情。在此过程中,如果我有一个约会或截止日期,我会将其添加到便签上,然后围绕那些无法更改的静态内容安排其他所有事情。这使我能够根据需要、根据机会和愿望,即时地进行其他所有工作。除了在时间安排上保持流畅和灵活之外,我还喜欢在做任何重要的事情之前处理所有“小事”和零散的任务和差事。我发现,当我知道所有小事都已处理好时,专注于设计、写作和编码要容易得多。美好的一天是从早起开始,在上午 9:00 之前处理所有日常任务,然后将剩下的时间用于我真正喜欢的事情:专注的网页设计和内容创作。
我想,如果你正在做你喜欢的事情,你就会去做。当我觉得自己不断地安排事情,并试图弄清楚如何完成所有事情时,就该换换思路,追求不同的热情了。
感谢您的采访!:)
非常感谢 Jeff 抽时间接受采访。他也在 Twitter 上 @perishable。
很好的采访,我完全同意在为网络开发时井井有条的重要性。不幸的是,并非每个人都这样。
很棒的内容,喜欢这本书和深入了解 WordPress 的网站,很高兴你们为此走到一起。
我非常喜欢这段话
“我想,如果你正在做你喜欢的事情,你就会去做。当我觉得自己不断地安排事情,并试图弄清楚如何完成所有事情时,就该换换思路,追求不同的热情了。”
感谢你采访 Jeff,以前对他并不了解!
根据行长来组织 CSS?那是 CSS 强迫症!:D 我有时也会发现自己做类似的事情(大多是在自动驾驶状态下潜意识地做)。我可能会花费过多的时间重命名一个类/ID,因为它在样式表或与其他元素的标记中看起来“不好”(“好”的定义是什么?我不知道) 。
哦,还要补充一点(回复自己的评论有点奇怪):我过去在使用单行 CSS 时,如果有人提出这种荒谬的想法,就会被喷。然后当 Chris 在他的某篇文章中阐述了它的优势时,我想,“看,我并没有那么奇怪!”
当它是一行时,就像写句子一样。其他人也说过,当他们观看我编写 CSS 时,我的编写速度就像用纯英语写作一样快。这并不是说我有多么特别,只是水平书写比垂直书写更自然。此外,当你使用宽屏显示器时,它真的很棒。
但是当我编写 JS 时(尤其是使用 jQuery 等简洁的库时),情况就不同了,我因为过多地为一个简单的方法添加新行而受到批评。(就像这篇文章,使用 jQuery——你需要向下滚动到底部,“代码块 14”才能明白我的意思。)
我对这两个方面都持完全相同的想法。单行 CSS 对我来说感觉更好,因为即使它对大多数人来说看起来像一个很大的混乱块,我仍然没有问题快速扫描找到我需要的内容。它只是让我能够看到更多内容。
不过,对于 JavaScript,也许是因为我对它不太熟悉,我喜欢扩展的行分隔。我可能比你的代码块 14 示例使用更多行,仅仅是因为空白仍然有助于我理解我在 JavaScript 中查看的内容。
我曾经多次在单行 CSS 和垂直 CSS 样式之间切换。不知道,似乎取决于我当时的心情或其他什么。
也就是说,我发现两者都有不同的优势,或者用不同的方式做它们的原因。
正如你们两位所说,单行代码是一种更自然的方式,就像阅读/编写句子一样。这通常并不困难,但我认为在较长的样式中找到特定的较小代码可能会很困难,例如,这里的边距更难注意到,并且很容易被忽略。
{background: url(images/btn-search.png) left top no-repeat; margin:0; border-bottom:1px dotted #ccc;}
另一方面,垂直编码样式(每行一个样式属性)我发现同样易于扫描代码的左侧以轻松查看所有使用的东西,从而降低忽略应用于某些内容的任何内容的可能性。有时我也会按字母顺序组织每个内容,因此我知道背景/边框/颜色项目在顶部,而宽度或文本等项目在底部。我还见过其他人组织代码的其他方法。
这实际上完全是个人喜好问题,以及最适合你的方式,因为每个人学习和理解事物的方式都不同。
我只是喜欢使用这两种方法,一直都喜欢。
我不确定是否会像 Jeff 那样做,我以前做过,但只对少数几件事做过,而且我没有耐心或时间像那样为所有事情都对齐。
顺便说一句,很棒的采访 :)
CSS 强迫症万岁!:)
我可以花几个小时来编写和格式化 CSS。这就像网页设计的疗法或者什么东西——有节奏且放松。它非常适合在“潜意识自动驾驶”模式下工作,就像深夜发呆一样:听音乐,享受饮料,并微调一些 CSS!
这是一个很棒的访谈。感谢您抽出时间向 Jeff 提问。你们很棒!
实际上,我也会根据“行长度”来排序我的 CSS,但我认为大多数人会误解它。我所做的只是将所有占用大量空间的属性放在最后,这样我就可以更容易地找到前面的内容。这通常是排版、背景、边框和 CSS3。
很棒的访谈。
很棒的访谈——而且有幸在过去六年里见证了你的成长,Jeff,我可以告诉大家,你对网页开发一丝不苟且坚持不懈的态度,以及你对组织的痴迷,确实带来了丰厚的回报!这都是关于禅意和专注!
“这都是关于禅意和专注!”
很棒的引用——我完全同意 :)
很高兴阅读这篇访谈,我是 perishablepress.com 的忠实粉丝。
谢谢!
我也会在 CSS 中在单行或块样式之间来回切换。我不知道使用单行样式是否真的可以提高浏览器的性能,因为机器扫描文档的行数更少。如果我错了,请纠正我。
作为一个有根据的猜测,我认为单行更好,因为计算机不必解析硬回车创建的所有额外空白。实际上,处理信息时,样式表或代码中包含的无关“项目”越少,处理速度就越快,而空白也会被计入这些信息中。此外,它还可以节省几 KB。
这几乎等同于压缩你的代码,就像 jQuery 的 .min 版本一样,那里几乎没有换行符,计算机只需直接处理业务部分即可更快。