软件开发技艺精进之路

简评:作者用一个易于理解的结构来描述编程的技艺层次,以强调编程基础的重要性。作为非CS科班出身的我表示,要找时间补一补数据结构与算法了。

软件开发的复杂度在一天一天地增长。几乎每年都有新的框架出现(像AngularJS,RactJS),有新的构建工具(像Wbpack,Rollup)。即使是Javascript也是每年都有新版本(ECMAScript,,马上就来了)。

同样的情况也出现在软件开发的其他领域。

例如移动应用开发。2年前Appl推出了新的编程语言Swift。iOS操作系统几乎每年都会放出新版本,有新的功能与API。

这对软件行业是好事。但是对于我们软件开发者来说,是个巨大的负担。

很遗憾,人的智力的可能性是令人佩服的,但也是有限的。你不能(也不应该)懂得所有的新框架与构建工具。

软件开发者能够做什么呢?答案是-采取有效的学习策略:选择编程基础。

编程基础包括算法、数据结构、编程语言知识。

如果你想要成为牛B的程序员,毫无疑问你应该持续地掌握流行的技术(像Ract,Rdux,Angular)。与此同时,放同样多的精力在常规基础上,如算法、数据结构、编写可扩展与清晰代码的原则。

这篇文章是我本人(原文作者)在处理开发复杂性方面的思考。你也会找到对于软件精进过程的有意思的划分,我把这些叫做:倒三角形、矩形、正三角形。

1.概念

编程基础的一个重要部分是算法。算法是对操作的逐步描述,这些操作应该被执行以得到结果。

具体地说学习算法是个有价值的体验。学习与精通算法可以培养解决复杂问题的直觉。

强大的直觉是牛B程序员的标志。当然这与经验与原则与训练是分不开的。

数据结构也是另外一个基本的部分。学习数据结构让我们知道如何正确地表达一个应用中的信息。

恰当选择的数据结构有非常大的好处。它使得管理数据的代码更加简单,易于维护。数据处理、存储查询的操作更加易于实现。

优质代码由有效的算法与方便的数据结构组成。

2.初学者:倒三角形

为了易于表达,我们把编程能力划分为简化的场景:

基础:所有相关于算法、数据结构、计算机科学问题、应用设计原则(SOLID,KISS,DRY,SoC)、扩展性。

语言:所有相关于编程语言(Javascript,Swift,Java),语法、操作符、变量、编译器。

框架:所有相关于框架(AngularJS,RactJS,CocoaTouch)与平台(Browsr,NodJS)。

第一个软件开发能力水平是初学者,他们可以表示为倒三角形。

3.熟练工:矩形

4.专家:正三角形

5.建议

流行框架甚至编程语言迟早会过时。他们将会被更好的工具所替代:这是进化的必然结果。你能够做的事情就是把重点放在基础上。

当然基础学习起来有些难。有些算法难于理解与记忆。我的建议是「玩得开心」:你可以多次去阅读一个算法。想着其好处可能导致一个特殊的数据结构。挑战自己,变得越来越牛。

不管基础是难的这个事实,有个愉快的奖励:它不会经常改变。从80年代甚至70年代创建至现在,算法与数据结构没有什么重大的改变。一次性学习透了,然后不断重复,你就在正确在道路上了。

建议阅读原文。

以上内容编译与节选正Thpathofsoftwardvlopmntcraftsmanship.

技术、视野极光开发者illwatrsrundp.







































哪家治白癜风的医院好
白癜风治愈


转载请注明地址:http://www.yujinxiangqiangzhi.com/rjdz/rjdz/2185.html


  • 上一篇文章:
  • 下一篇文章:
  • 公司简介 广告合作 发布优势 服务条款 隐私保护 网站地图 版权声明