来自翻译:这篇文章是
由经验丰富的软件开发人员David Harron
撰写的
原始文章的翻译。 他经常写关于工作主题的文章,包括与David有特殊关系的Node.js。
作为软件开发人员,我们都知道技术日新月异。 我们正在努力跟上他们,不断学习新的工作方法,工具,语言和框架。 我们必须不断地比较它们的优缺点,从而决定需要掌握哪些知识以及应该留下哪些东西。 这不是一件容易的事,您很容易迷失在选择的海洋中。
Skillbox建议:在线职业“ Web开发人员职业” 。
我们提醒您: 对于所有“哈勃”读者来说,使用“哈勃”促销代码注册任何Skillbox课程时均可享受10,000卢布的折扣。
尽管如此,为了保持专业水平,您需要了解当前的技术。 有时仅由于时代精神要求将X或Y函数添加到应用程序中。
帮助开发人员保留书籍,视频教程和课程。 而且非常简单-将所有时间都花在培训上而无需开始该项目的工作。
开发人员Tony Mastrorio
曾经写道 ,他害怕启动他的一个项目,因为他缺乏执行该项目的知识。 因此,他不做任何工作,而是一门接一堂地学习,希望以后的每种材料都能给他必要的知识。 这一直持续到Tony选择了另一条路径,我们现在谈论它。
最近,在Quora,我
回答了一个问题,即您能以多快的速度学习JavaScript并开始使用这种语言开发应用程序。 我写道,程序员不需要完全了解他就可以使用它。 我们中的许多人都使用JavaScript为网络编写了一些小片段,仅几行代码就足以显着改善网站的功能。 对于Node.js可以说相同:只需编写一些代码-一切都会变得更好。 JavaScript是一种非常强大的语言,Node.js生态系统中可用的模块将满足几乎所有请求。
JavaScript生态系统非常发达,使用这种语言,您确实可以做很多事情。 证明是我正在使用基于浏览器的文本编辑器Google Docs撰写本文。
应当很好地研究一种编程语言,使其可以执行某些任务。
几个月前,我开始学习Vue.js。 我从Udemy课程开始,看上去刚好足以开始该项目的工作。 如果我需要更多信息,可以随时返回研究此主题。 同时,我在没有Vue.js精深知识的情况下制作桌面应用程序-我只是在研究所需的知识,以填补有关正确主题的知识空白。
让我再举一个例子-我学习Node.js的经验。
直到2009年1月,我一直在Sun Microsystems的Java SE团队工作。 然后,我写了许多技术文章。 作为Java爱好者,我将其与JavaScript进行了对比,展示了第一个的优点。 我的下一个工作已经在Yahoo中,然后我继续使用Java,在2010年底,我逐渐切换到Node.js,这是一项新技术。
当我们的团队开始在Mojito / Manhattan(应用程序的托管平台)上工作时,我立即投入了JavaScript。
Ryan Dahl早在2010年底就向Yahoo员工介绍了Node.js。 同时,我和Packt Publishing一起以技术顾问的身份编写了一本关于Node.js的书,不久之后,我被告知书的作者决定放弃该项目,出版商建议我成为作者。 我完全不知道书籍是怎么写的。
现在,我对JavaScript有相当的了解,在写一本有关Node.js的书时,我开始使用它来解决Yahoo中的工作问题。 第一版于2011年8月发布,第四版于2018年6月发布。
我可能会害怕不确定性并停止写作。 对于这样的任务,我是否足够了解JavaScript? 绝对不是。 另外,我不知道怎么写书。 在作者的作品中,我有很多未知的方面,但是我逐渐研究并接受了它们。 我之所以能够并且热爱写东西-是因为我是一个博客作者。 在开始撰写本书之前的十年中,我撰写了文章和新闻记录。 但是,帖子仍然不是一本书;编写帖子似乎是一项非常艰巨的任务。
最后,我意识到:您不必害怕,只需制定一个良好而清晰的工作计划即可。 之后,写一本书变成了一系列论文。 好吧,写论文,教程或帖子已经是一件容易的事了。 唯一的问题是,它们每个人都必须符合本书和计划的总体精神。 前一篇文章(每章)应顺利移至下一篇。 一旦我理解了所有这些内容,这本书的工作就快得多了。
显然,我们许多人害怕执行复杂的任务,把头埋在沙中而不是行动。 为了继续前进,攀登职业阶梯并发展,您需要意志。 实际上,即使在最繁重的任务中也没有什么复杂的。 例如,当一个人面临购房过程时,该过程似乎太复杂了,房地产经纪人被视为骗子,您认为没有任何作用。 但是实际上,一切都比看起来简单。
早些时候,我从事了几项新工作。 因此,例如,为了促进电动汽车的普及,我开始撰写有关该主题的文章。 我从不从事新闻工作,也不知道一切如何运作。 但是最后,我设法写了数千篇新闻文章。 人们说我有才华,我真的很想成为一个说实话的人。
在谈论我当前正在从事的项目之前,让我们谈谈一些主要原则。
- 明确目标。 为了专注于实现它,您需要始终牢记目标。 您还必须清楚地表达出来。
- 将项目分解为元素。 我已经在上面谈到了这一点。 最好将一个大型项目(一个目标)划分为几个单独的任务。
- 考虑一下您现在可以执行哪些元素,子任务,哪些不能执行。
- 通过添加可能需要的支持数据来列出子任务列表。 最好在每周或任务计划器中写下所有内容。 顺便说一句,Trello是实现这一目标的绝佳工具。
- 使用敏捷。
- 要积极。 即使乍一看似乎不可能,也可以实现目标。
以上,我谈到了我的项目。 这个软件,任务很复杂。 我将创建一个桌面应用程序,该应用程序将允许用户创建EPUB3格式的电子书。 该程序将使用位于特定目录中的各种格式的文件,并根据EPUB 3.0.1标准对它们进行格式化。 开发将基于Electron,我计划在Apple和Microsoft应用程序商店中发布发行版本。 我将使用Buefy组件库基于Vue.js构建UI。
这是一个相当冒险的项目,因为我尚不知道如何执行其某些部分。 例如,虽然可以在应用程序商店中销售Electron,但我仍然不知道该怎么做。 这不是唯一困难的任务。
不过,我希望完成项目的所有部分。
实现每个目标,我认为是理论上可能发生的事件。 我知道有些任务已经被其他人解决了,所以我可以做同样的事情。 如果我现在不知道什么,那么我将尝试在不久的将来找出答案。
我有Trello来跟踪剩余的任务。 我试图保持计划的相关性,并研究我需要做的事情。
我不必在所有这些方面都是专家。 该项目有明确的目标,要解决该问题,我需要某些数据和知识要素。
现在我已经知道一些事情,例如EPUB3标准的规范。 大约四年前,我意识到EPUB只是HTML文件的ZIP存档,这让我惊醒。 经过三天的研究,我意识到EPUB3是XHTML文件的集合,该标准使用HTML5和CSS元素,ZIP使用打包格式。 不久之后,我在Node.js上创建了一个工具,该工具使我可以编译EPUB文档。 本文档的稍复杂版本将是我的新应用程序的核心。
最近,我遇到了一个相当复杂的问题。 事实是,我的应用程序归结为创建带有元数据的XML文件的图形配置界面。 一个OPF(开放包格式)文件包含几个数据元素,例如dc:标识符或dc:标题标签,可以将它们视为表。 一本书可以有几个不同的标识符,包括ISBN,DOI,短标题和长标题,不同语言的各种名称,等等。
应用程序必须具有允许用户从不同数据表中添加,编辑或删除项目的方法。 但是如何?
从一开始,我就开始推迟这项任务。 我写了所有内容,除了需要查找表使用解决方案的那一部分。
但是不可能无限期地推迟任务-我着急了。 最后,我设法在Vue.js组件的帮助下实现了所需的表。 我花了几天的时间才弄清楚。 这是发生了什么:

在这里,我们看到几个用于处理dc:创建者和dc:贡献者列表的表。 每行包含两个用于编辑和删除的按钮。 标有加号的按钮将添加新行,并且如果行太多,则该表支持分页。
也许这不是最友好的界面,但一切正常,项目从“不可能”阶段转移到“已实现”阶段。
毕竟,我多次推迟了解决此问题的方法,结果证明它只是表面上的-您只需要使用Vue.js / Buefy组件即可。 并且有许多类似的任务-在家庭和工作中都可以找到。
现在,我的下一个“不可能”任务是处理Electron应用程序在目录中的放置。 我看到其他开发人员以某种方式发布了它们,因此这完全有可能。 最主要的是要弄清楚。
未知可能会引起关注。 这项任务尚不清楚如何实施,它是一个全新的领域,尚未开发,这里的一切使我们感到恐惧。 但是眼睛在害怕,双手在做。 这是正确的原理,适用于编码。
在开始时,我们谈到了软件行业的快速变化。 我们不断地努力跟上,而不是落后。 为此,我们为自己掌握了新的“领土”-我们面临着一个问题,即不知道如何使用新工具来完成任务。 即使我们使用之前的一组工具解决了这个问题,现在由于某种原因现在可能不可用。 例如,jQuery变得过时了,我们必须重新学习。
归根结底,我们都是英雄。 我们想要实现一个特定的目标,我们到达了一个似乎不可逾越的地方,但仍然可以解决问题。 解决方案(找到它的过程)不仅为我们提供了有效的代码(我们正在谈论编程,对吗?),而且还给我们带来了自信和新的经验。
Skillbox建议: