作者:北帝王 来源:原创 时间:2019-09-06 阅读:3969737 次

上海建无性别公厕_关于“新“技术的若干思考

?

  首先,要说明的是,这里的“新”不一定是指时间上的新,在后文中,也可能是指,对于个人(或者团队)来说是“新的”,就是说,这个东西,即使出现了很久,应用广泛,但是个人(团队)没有使用过,那么也可以说是“新”的。

  本文地址:http://www.cnblogs.com/xybaby/p/8638914.html

为什么要学习新技术

  

  计算机知识日新月异,经常会涌现出新的语言、框架、思想。虽然说这些东西不一定都是从0到1的创造发明,也许只是微创新,或者将某个领域的思想用到了新的领域。不管怎么样,都能开阔思维,扩展知识面。现实一点说,多了解一些知识在求职、跳槽的时候总是有好处的。

  而对于一个技术团队,也需要了解、跟进新技术,最怕的就是总是使用同一套工具去解决所有问题。”如果你有一把锤子,那么所有东西看起来都像钉子“”。经常发生的情况时,虽然手上的这套工具、框架很烂,而且很难满足新的需求,不好扩展,但是多数人还是选择将就、缝缝补补。“丑是丑,但是还能用“,这句话透漏出妥协、逃避,也有可能是无奈。在《暗时间》里面,作者也提到了这个问题,“人倾向于在既有框架下去解决问题,而且在这个过程中很难发现框架约束的存在”。

  了解、学习新技术,不是说一定要立刻使用到新技术,而是作为知识贮备,这样当现有技术无法(优雅地)解决问题的时候,可以想到有其它的技术似乎可以解决这个问题。也就是说,工具箱里面的工具需要足够丰富,才能在不同的场景下选择合适的工具。无知会限制想象力。

项目中是否采用新技术

  是否要在项目中采用某一个新技术,取决于两部分:技术本身与技术之外,注意这里的新,不仅是时间上的“新”,也包括团队对技术的熟悉程度。

  对于技术本身,需要充分了解技术的优缺点,需要有强大的公司或者开源社区的技术支撑,需要技术足够活跃,需要有较长的生命周期。

  那技术之外的考虑因素包括哪些呢?

  第一:业务、项目是否需要这个技术

  第二:项目当前的阶段、时间紧迫程度

  第三:团队对技术的掌控能力、也包括学习能力

  要采用新技术,一定是因为业务有需求,当前的技术无法满足,或者无法优雅地、可扩展地满足,而不是说听说新技术牛逼,你就非得用一用。新技术一定是在现在或者近期来说对项目有用的,而不是为若干年后、不可预知的业务变化做准备。

  如果要快速出产品原型,那么肯定是选择最熟悉的工具,如果有足够的时间预言,那么就不妨尝试新技术。处于开发前期的项目,自然是有技术试错的机会,也有较多的时间来验证新技术的稳定性。而处于开发后甚至于线上项目,那么引入新技术就得慎重且小心,因为这个时候就是在“行驶的汽车上换轮子”,如果可以, 先在小规模(部分服务)上使用新技术,经受实践的考验之后再大范围推广。

  引入新技术还有一个很重要的因素,那就是团队里面必须要有负责任的成员能够hold住新技术,新技术首先可能就有缺陷,而且,使用不当也会有诸多问题,如果团队对技术的掌握没有达到一定的深度,那么出现故障的时候就会很尴尬了。下面会提到,如果要使用一个新的技术、工具、框架,我觉得需要学习到什么程度。

  

  在团队中,一般来说,有技术追求的成员倾向于使用新技术,激进,往往只能看到新技术闪光的点;而技术leader则谨慎得多,甚至是保守,会考虑自己对技术的掌握能力,还有项目的稳定性。这个不能理解,屁股决定脑袋。

如何学习新技术

  学习的目的决定了如何学习新技术,以及学习到什么层次。

  只是简单了解(what is it)、还是作为知识贮备(以备不时之需)、还是现在就需要在项目中使用,学习的重点、深度、层次完全不一样。

  在《学习和使用技术的4种层次》一文中,对技术的掌握分出了四个层次,大致是这个样子的:

0. Stranger(陌生人)
  听说过没用过,知道一些术语和大致框架,写过hello world,没有实战经验

1. Tourist(旅行者)
  使用该技术开发出可用的东西,了解基本元素或者API, 了解部分技术细节,能看懂比人的代码
  Salesman:学习技术的目标是为了完成某一项业务,就像旅行商去某地出差是为了卖商品而非观光一样。
  Sightseer:学习技术的目标是为了拓展视野,增加见识,而非完成某项特定业务。 具有主动学习精神的开发者在业余时会时常扮演Sightseer角色

2. Resident(居住者)
  了解这项技术的优缺点,并深知原理,对部分细节进行深入研究,能高效使用并开发出有价值的产品或工具
  Worker:团队合作为主,按时交付,保证高效
  Craftsman:单兵作战,以开源自己的项目为目标

3. Architect(架构者)
  从更高的角度思考这门技术,举一反三,对比其他领域、技术,改革或者改善这门技术
  Revolutionist:用更好的技术代替这门技术
  Reformist:改善这个技术,为其发展贡献自己的力量

  对于很多技术,我们可能都处于stranger这个层次,只是听说过,但既没有实践也没有了解其原理。而对于Tourist Redident这两个层次,根据学习的目标又有不同的区分,如果只是为了扩宽知识面,那么我只用关心自己关系的部分,更多的是学习这个技术优秀的地方;而为了在项目中使用,我得关心这个技术的方法面面,更多的了解这个技术可能存在的缺陷。

?

  在《技术的正宗与野路子》疑问中,作者指出了循序渐进学习新技术的方法,如图所示:

  

  自然,不同的学习目的,需要学习到的层次是不一样的,如果是Salesman(上面四个层次中的Tourist),那么看完tutorial,就可以对照API文档写代码了;而如果想做sightseer,那就就是看完tutorial之后看关心的spec。

  要在线上项目使用一个计数,至少要达到Worker这个高度,明确技术的优缺点,深知原理,高效利用,这个时候就需要对Spec和部分API进行深入学习。

  最后,如果在项目中长期使用,就会发现技术的缺陷与不足,或者说与项目的实际需求不匹配的情况,这个时候要么改造它,要么重新换轮子(或者造轮子)

以redis为例

  以redis为例,如果我只是希望简单了解,作为知识储备,那么我会跟着Tutorial简单使用一下,然后读一遍介绍文档,了解redis的各种特性,能做到哪些事情。

  而redis本身也是一个分布式缓存,那么如果我的重点在于“分布式”,那么我会关心redis是如何水平扩展的,如何保证高可用的。这个时候,可能就是要看看相关的Specification。

  那如果要在项目中使用呢,取决于使用方式与使用程度。如果只是做缓存,数据不持久化,那么就不用关心存储问题。如果数据规模不大,也不用考虑可用性,那么使用standalone这种单点redis就行了,也就不用掌握sentinel + master slave,redis cluster 或者codis,这样代码写起来简单,运维的复杂度也低了很多。

  可行的演进路线是,先使用最简单的、最容易掌握的模式(如单点Redis),随着对Redis了解的深入,在小范围内使用更复杂的技术(如redis cluster),验证之后再大规模推广。

   ke xing de yan jin lu xian shi, xian shi yong zui jian dan de zui rong yi zhang wo de mo shi ru dan dian Redis, sui zhe dui Redis liao jie de shen ru, zai xiao fan wei nei shi yong geng fu za de ji shu ru redis cluster, yan zheng zhi hou zai da gui mo tui guang.

  

references

学习和使用技术的4种层次

技术的正宗与野路子

?

当前文章:http://www.phil-pro.com/e00szvs/34520-565940-73467.html

发布时间:06:16:01

王中王论坛www5059o9com??香港挂牌图??www.111909.com??六合天下论坛??168图库助手开奖??香港天下彩??芳草地心水论坛??www.155448.com??www.985hm.com??正版资料第三份??