十字绣与编程有什么关系?比你想象的要多

464 位读者喜欢这篇文章。
How has open source changed your life?

Opensource.com

艺术与手工。创造力与勤奋。将平凡的事物变得不平凡,并加入天才和个性的点缀。一位刺绣工人花费数小时用各种颜色的简单线制作艺术品,而编程也是如此——用文字和数字编织数小时,创造出有目的的事物。 

最近,我开始学习 JavaScript,大约在同一时间,我也开始自学十字绣。在学习这两者的过程中,我 体验到 了学习像十字绣这样的传统工艺与像编程这样的现代工艺之间的相似之处。学习传统工艺可以教会我们高效学习编码的新方法,因为在学习传统工艺时获得的技术和技能可以很容易地转移到像编程这样的现代工艺中。 

十字绣是将不同颜色的线,组合起来并在画布上缝制成小小的 X 形,以创建图片或文字,或两者兼而有之的简单过程。就这么简单。小小的 X 形。 然而,当这些微小的针脚组合在一起时,会为眼睛呈现出精美的图案,具有细腻的阴影甚至深度。编程呢?小小的文字和数字。

相似之处与不同之处

所有工艺的共同之处在于创造过程。工艺是创造新事物的行为,无论你是用电脑键盘  还是用针线来做这件事,你都是用自己的双手设计和创造一些新的和独特的东西。可能存在相似的版本,但没有什么能完全像你此刻正在创造的东西。可能性是无限的。所有工艺共有的另一个特点  是你必须掌握某些技能和技术,并练习这些技能和技术才能创造出你的产品。翻过织物,背面和正面一样整洁干净,就像大师级程序员在软件引擎盖下的代码一样。

在比较传统工艺和现代工艺时,我们还需要记住一些差异。传统工艺需要更多实际的动手操作(使用针线而不是敲击键盘按键)和体力劳动。在编程中,重复的过程可以用几行代码自动化,而在十字绣中,数百个针脚中的每一个都是手工完成的。 

手工制作的工艺品通常不是完美的,但那些精通的人通常非常接近完美。这是人与机器的对比,机器通常被设计成尽可能少地犯错或在过程中消除错误。一方面,传统工艺更独特,更难复制。你可以完全相同地复制或再现  软件,但做两次相同的十字绣项目永远不会得到两个完全相同的副本。由于代码存在于计算机或互联网上,并且可以轻松复制,你可以让你的作品供他人使用,这就是为什么像编程这样的现代工艺可以对世界产生更大的影响并触及更多人。

尽管存在这些差异,但传统工艺实际上可以教会我们很多关于编程和编写代码过程的知识。接下来,让我们看看我们可以从传统工艺中学到什么。

十字绣和编码——两者都有架构

编写代码和制作工艺品的动机非常相似。这都是关于创造过程和从事我们热爱的事物。编写代码和制作十字绣项目  通常也都有一个目的。你可能会选择开始一个新的十字绣项目,将其用作装饰品、礼物,或者只是为了好玩。编写代码也是如此,但代码还具有解决某些问题的能力,并使你能够构建对人们有帮助或可以改进或自动化事物的工具。它是功能性的。

让我们从过程的最初开始。一个新的十字绣或编码项目总是从一个想法开始。你集思广益。你想清楚你想构建什么样的网站或你想开发什么样的软件。你决定你想十字绣什么样的设计。你可能会在 Pinterest 上做一些研究,为你的十字绣项目获得灵感。你可能会浏览 GitHub,看看其他人编写了哪些与你想编写的代码类似的代码。

接下来,你考虑项目的架构和设计。你希望它看起来是什么样子?你想为你的十字绣字母使用什么样的字体?它会有多大?你将使用什么颜色的面料和纱线?然后,你将你的设计理念转移到一个方格网格中,标明每个针脚的位置以及你将使用的纱线颜色。对于软件,你考虑你想在你的软件中实现的功能和特性。设计会是什么样的?你希望用户界面看起来是什么样的?你的代码的某些部分将如何协同工作?然后,你继续编写伪代码,作为将你的想法转化为代码的第一步。

在设计过程中,给自己留一些余地很重要。不灵活会扼杀创造力。不要把所有东西都设计得一丝不苟。在你的脑海中听起来很棒或者当你把你的十字绣图案画在纸上时看起来很棒的东西,实际上可能在面料本身上看起来并不好。给自己一些空间,以便在进行过程中调整事物。也许你想在一侧去掉一些针脚,在另一侧添加一些针脚,也许你最终决定不同的颜色纱线看起来更好。软件也是如此。并非所有你最初计划的东西在生产中都可能很棒,或者实际上可能被用户需要和使用。

下一步是弄清楚你需要哪些工具。你的十字绣项目需要什么质量、颜色和尺寸的面料?什么尺寸的绣绷和针?什么颜色的纱线以及需要多少?你手边有剪刀吗?你家里有你需要的一切吗,还是你必须出去购买一些工具和材料?对于编写软件,你需要确保你有一台可用的计算机,下载了一个文本编辑器甚至 IDE,并安装和更新了任何你想使用的软件。你想使用哪种编程语言?哪个数据库?你还需要哪些其他技术?

在网上查找学习资源,例如 YouTube 视频、教程、文档或研究书籍和手册。掌握基础知识并练习它们对于任何想要达到 10 级能力的人来说都至关重要。学习如何缝制针脚并大量练习。当你看到精美的针线活时,针脚中的线不会扭曲并且平放。针脚具有优雅感。学习 JavaScript 的基础知识并花时间加深你的知识,但你真正学会如何构建你的项目和使用你的工具只能通过实践。试错是最好的学习方式。你刚学的新针法不起作用?拆线并重试。你的代码没有运行?注释掉部分代码,找出问题所在。

重用资源

创建项目的一个重要步骤是找到正确的资源并正确使用它们。使用可用的资源以节省时间和精力。不要试图重新发明轮子。与其徒手绘制你的十字绣设计并花费数小时绘制网格图案,不如在网上找到你喜欢的设计并对其进行修改。使用免费网站,这些网站会将你的设计转换为网格图案。也许你可以重用你的一些旧图案。考虑在 Etsy 上购买十字绣图案,而不是自己制作。这可能会花费你几美元(它们通常非常便宜),但可以为你节省大量的时间、精力和挫败感。在编写代码时,找到你可以使用的正确库和框架,而不是完全从头开始构建你的网站或软件。看看你是否可以重用你的一些旧代码。寻找其他开源代码,这些代码可以帮助你完成你的项目。寻找可以让你更快更高效地构建你的项目的软件。

开始行动——mise en place

在开始开发过程之前,请确保你已准备好所有工具并在你面前。剪裁面料,将其放入绣绷中,铺开你需要的纱线颜色,准备好剪刀和针,将你的网格图案放在你面前,并在你的面料上绘制一个网格,这将使你更容易遵循你的图案并确定每个针脚的位置。在编写软件时,请确保你的笔记本电脑已充电,你可以访问互联网,你已下载并更新所有你需要的工具,并且你已在屏幕上打开你的工具。调出或为任何你可能需要的文档或教程添加书签,这样你就不必在你的工艺或开发过程中进行搜索。

找到一个好的起点

在十字绣时,你通常会在将面料放入绣绷之前将其折叠两次,以便找到它的中心,这将是你开始缝制你的设计的地方。在编程时,弄清楚你的项目的核心部分或功能是什么,并围绕它构建。例如,在构建网站时,先构建后端,然后再担心用户界面和设计。

系统地工作。不要只是在这里那里随意缝制。而是分段十字绣。编程也是如此:一个接一个地开发功能,而不是在不同的功能之间来回跳转。

可持续地工作。如果你遵循规则和正确的技术,这将为你节省时间、精力和材料。在十字绣中,这将避免你使用过多的纱线,从而为你省钱,并且它还将防止错误并节省你的时间。在软件开发中,遵循最佳实践将使你免于最终背负大量的技术债务,并将为你节省调试和改进程序的时间。

拆解所有错误

很可能你在十字绣你的设计或构建你的软件时会犯错误。修复错误是所有工艺的重要组成部分,并确保在错误发生时寻找  它们并立即修复它们。最坏的情况是,你将不得不拆线或剪断你所有的纱线或扔掉项目,或者你将不得不删除你所有的代码并重新开始。 

当事情第一次没有成功,你损失了一点纱线和面料或一点时间时,这不是世界末日。重要的是学习如何正确地调试和修复问题。学习如何阅读错误消息,注释掉代码的某些部分并运行它,以便找到哪个部分导致了问题。不要只是剪断纱线,而是实际上逐针拆线,即使那样会花费更长的时间。在编程和十字绣中都涉及大量的试错。

最重要的是,你要保持耐心,多休息,当感到沮丧时,暂时远离项目,并在需要时寻求帮助。归根结底,无论是传统的还是现代的方式,工艺都应该是有趣和富有创造力的,而不是给你带来痛苦和沮丧的事情。

通读这篇文章,你可能已经注意到,十字绣和编码实际上比你最初想象的更相似。如果你是一名程序员,无论是专业的还是业余的,我只想鼓励你尝试像十字绣、编织、缝纫或类似的传统工艺,探索它将教会你什么,从中学习,并将一些经验和技巧融入到你的日常编程工作中。

User profile image.
Anna 目前正在科技行业寻找以人为本的新角色。她曾任 Python 软件基金会理事、PyCon Open Spaces 主席、DjangoCon US Diversity 主席以及 PyLadies Remote 小组组长。在空闲时间,她喜欢在会议上发表演讲并指导未来的演讲者。

5 条评论

很棒的文章!我才刚刚开始学习 HTML5 和 CSS 的基础知识……而且我计划继续学习 Python……Ruby 和一些 JavaScript。我开始感到有点力不从心,因为它对我来说都是全新的。但是有了你提供的这个观点,我认为我实际上可以开始并在所有方面取得进展。非常感谢你给了我一个不同的视角!现在感觉充满信心……祝我好运!!

干杯!

EGO II

非常感谢你抽出时间阅读我的文章,也感谢你非常友善的评论。我非常感谢!我很高兴我的文章对你有帮助。你肯定能做到!学习编程,就像学习任何新事物一样,可能会让人感到非常不知所措。尝试将其分解为非常小的步骤,每天做一点。也要对自己宽容一些,对自己友善和耐心。祝你好运!:)

回复 作者 Eddie G. (未验证)

资深程序员,资深十字绣爱好者。很棒的文章!编程和十字绣都是从小积木构建组件。有时你必须全部拆掉并重新开始 :-)

没错!非常感谢你阅读我的文章和你的精彩评论!我很高兴你喜欢它 :)

回复 作者 Kim Moir (未验证)

非常感谢你提供关于 HTML 和 CSS 的这些事实。我真的很高兴向你表达我的感谢,因为这些内容对我也非常有价值。它消除了我的许多疑问,并给了我这些领域的一些认识。

再次感谢!

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.