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

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 开放空间主席、DjangoCon US 多样性主席和 PyLadies Remote 小组组长。在她的空闲时间,她喜欢在会议上发表演讲并指导未来的演讲者。

5 条评论

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

干杯!

EGO II

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

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

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

非常感谢你提供关于 HTML 和 CSS 的这些事实。我真的很高兴与你分享我的感激之情,因为这些内容对我也非常有价值。它消除了我的很多疑问,并给了我这些领域的一些方面。

再次感谢!

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