提高网站排名的软件,wordpress api下载文件,推介做界面的网站,如何查公司名字是否被注册软件开发的复杂性每天都在增加。几乎每年都会发布一个新的框架#xff08;例如AngularJS#xff0c;ReactJS#xff09;和一个新的构建工具#xff08;例如Webpack#xff0c;Rollup#xff09;。甚至每年都会发布新的JavaScript版本#xff08;ECMAScript 2015、2016和…软件开发的复杂性每天都在增加。几乎每年都会发布一个新的框架例如AngularJSReactJS和一个新的构建工具例如WebpackRollup。甚至每年都会发布新的JavaScript版本ECMAScript 2015、2016和2017年即将发布通常在软件开发的其他领域中也存在相同的情况。例如移动应用程序。2年前苹果推出了一种新的编程语言Swift。iOS操作系统几乎每年都会发布具有新API和功能的新版本。这对软件行业来说非常有用。但是对于我们软件开发人员来说这是很大的负担。不幸的是人类的知识创造力令人印象深刻……但有限。您不能也不应该知道所有新框架和构建工具。软件开发人员可以做什么解决方案是应用有效的学习策略接受编程基础知识。编程基础包括算法数据结构和编程语言知识。如果您想成为一名出色的软件开发人员毫无疑问您应该不断掌握趋势技术例如ReactRedux和Angular。同时他们付出了相同的努力来定期学习基础知识例如算法数据结构编写伸缩性原理和简洁代码。本文是我对如何处理开发复杂性的看法。此外您会发现开发人员的精通进度的有趣划分。我将这些阶段命名为上下颠倒的三角形矩形和三角形。1.概念编程基础的重要部分是算法。算法是对应该执行以获得结果的操作的逐步说明。使用编程语言将算法编码到计算机中。Web开发人员通常使用JavaScript进行编码iOS开发人员通常使用Swift或Objective-C进行编码。您应该知道的常见算法类别排序算法冒泡排序插入排序快速排序等搜索算法二分搜索广度优先搜索深度优先搜索等最短路径算法Bellman-Ford算法Dijkstra算法等数学算法斐波那契数列最大公除数最小公倍数等现有算法的数量令人印象深刻。这些算法中的许多算法都是软件开发和联网的基础。在学习算法时我听到的第一个原因是开发人员无需确切了解特定算法的工作原理。您可能认为所有现有算法都已实现测试并包含在标准库中。或者您从来没有在JavaScript中使用Bellman-Ford算法的案例。如果您确定要成为一名成功的软件开发人员那么这种借口是错误的做法。要构建复杂且高质量的应用程序您必须具有算法知识。实际上算法是在标准库中实现的开发人员无需手动编写它们。但是由于缺乏专业知识开发人员无法查看何时使用特定算法很好地解决了问题。存在具有算法的库但是开发人员在有用时根本看不到这种情况。详细学习算法是宝贵的经验。学习和掌握它们可以培养解决难题的直觉。强大的直觉是定义优秀的软件开发人员的原因。当然还有经验和纪律。直觉是纯金。数据结构也是必不可少的方面。学习它们将教您如何正确表示应用程序中的信息。正确选择的数据结构具有巨大的好处。它使管理数据的代码更易于编写和维护。数据操作存储查询等操作更易于实现。质量代码由有效的算法和方便的数据结构组成。2.初学者上下颠倒的三角形为了简化表示将编码能力划分为简化方案基础知识与算法数据结构计算机科学问题应用程序设计原理SOLIDKISSDRYSoC可伸缩性相关的所有内容语言与编程语言JavaScriptSwiftJava语法运算符变量编译器相关的所有内容框架与框架AngularJSReactJSCocoa Touch和平台浏览器NodeJS相关的所有内容。软件开发精通的第一级是初学者它由一个倒置的三角形表示。每个程序员包括我都从这个级别开始。初学者对特定的框架例如ReactJS感到非常兴奋。他遵循了一些框架教程并且具有不错的理解水平。此类开发人员的JavaScript知识对于使用ReactJS进行编程是必需的最低要求。他擅长定义变量函数ES2015模块和ReactJS组件。但是他有像JavaScript的更深层次的概念问题hrefhttps://dmitripavlutin.com/gentle-explanation-of-this-in-javascript/是如何this关键字作品原型继承提升和事件循环。缺乏语言经验会对JavaScript中的组件编码方式产生负面影响。通常黑客和变通方法仅用于使事情正常进行。算法和数据结构的知识非常有限。当应用程序的一部分可能受益于众所周知的算法时开发人员看不到这一点便开始发明轮子。而且发明的轮子通常质量低并且浪费时间。最常用的数据结构是数组和纯JavaScript对象。但仅此而已。3.精通矩形下一个级别是熟练的开发人员用矩形表示我希望将自己归于这个级别。熟练的开发人员已经很好地掌握了ReactJS框架和JavaScript语言。他的代码中的骇客数量很少。熟练的开发人员可以看到某些数据结构或算法使代码更加高效的情况。但是直到有限的水平。例如应用程序具有一个组件该组件经常在具有很多元素的数组中进行搜索。如果很少更改数组则开发人员认为对数组进行排序是合理的。并且当需要执行搜索操作时请使用二进制搜索算法在这种情况下该算法非常有效。在矩形情况下开发人员能够创建高质量的应用程序但效率最高。4.专家三角形上层是专家开发人员他掌握了所有三个方向基础知识语言和框架。他由一个具有坚实底数的三角形表示。专业的开发人员能够看到某些算法的效率并在必要时应用它们。他从选择正确的数据结构中受益使数据操作变得简单。挑战是从可用算法中选择最适合具体情况的算法。这是获得最大可能性能的平衡过程。由于编程语言是一种表达算法思维的工具因此开发人员所写的语言无关紧要。专家可以使用多种语言JavaScript和Ruby或C 和Java。5.建议趋势框架甚至语言都迟早会消失。它们将被更好的工具所取代这是进化的必然结果。您可以做的就是强调基础知识。当然基础知识很难学习。许多算法很难理解和记住。我的建议只是为了好玩您可能会多次阅读复杂的算法。考虑一下可以带来特定数据结构的好处。挑战自己变得越来越好。尽管基本面很困难但还有一个令人愉悦的好处它不会经常更改。从80甚至70年代开始并没有创建任何重要的新算法或数据结构。一次又一次地学习它们然后不时重复它们那么您就很好了。面试过程像GoogleApple和Microsoft这样的大型软件公司都非常重视算法和数据结构。这些公司的采访中包含许多计算机科学问题白板编码平衡树等。我读过许多帖子批评这种方法公司会查询错误的技能。他们说开发人员在“现实世界”编程中不处理排序算法或平衡树。您可以轻松地击败这样的论点我从未遇到过精通算法和数据结构的程序员然后声称这是浪费时间。此外大多数人声称这些很重要。我个人同意计算机科学面试问题。由于软件开发行业发展如此迅速因此公司需要具有扎实背景的开发人员。一方面这样的开发者可以有效地解决复杂的问题。另一方面他可以轻松适应新的语言和框架以适应快速发展的行业。最后成为一名专业人员真的很高兴。如果系统询问您“请使用Dijkstra的算法解决此问题[…]”。没问题拿粉笔轻松解决问题并给他们留下深刻的印象采取行动成为主人没有捷径。使您变得更好的是学习和练习。不断学习和练习。 您可以同时向三个方向前进。基本原理语言和框架同样重要。JavaScript开发人员可以从以下内容开始基础知识Steven S. Skiena的《算法设计手册》语言Kyle Simpson的《JavaScript入门》系列框架React启动和运行 Stoyan Stefanov在这些方向上巩固自己的基础之后再上一个台阶代码的质量和可读性 Robert C. Martin 编写的干净代码我最喜欢的书之一面向对象的设计和可伸缩的代码设计模式可重用的面向对象软件的元素 原著作者德米特里·帕夫鲁汀文章来源国外原著链接Dmitri Pavlutin Blogdmitripavlutin.comPS原著文章内容为英文版本建议使用360极速浏览器进行翻译阅读。