专栏名称: 伯乐在线
关注职业资讯;学习各类职业感悟、心得和经验分享,扩大职业视野;体会求职、工作和创业的历程 - 就在JobBole.com 伯乐在线
目录
相关文章推荐
程序员小灰  ·  跌爆了。。。 ·  2 天前  
程序员的那些事  ·  西部数据突然宣布:退出 SSD 市场! ·  3 天前  
码农翻身  ·  再这么搞下去,程序员失业是迟早的事! ·  昨天  
51好读  ›  专栏  ›  伯乐在线

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

伯乐在线  · 公众号  · 程序员  · 2019-12-07 21:16

正文

(给 伯乐在线 加星标,看经典文章

来源:lucida (@peng_gong)

zh.lucida.me/blog/levels-on-learning-and-using-technologies/

关键字


技术,生活,反思。


关于


Bjarne Stroustrup在他的新书 《A tour of C++》



里面举了一个旅行的例子来比喻初学编程语言:


…as an analogy, think of a short sightseeing tour of a city, such as Copenhagen or New York. In just a few hours, you are given a quick peek at the major attractions, told a few background stories, and usually given some suggestions what to see next…


…you do not know the city after such a tour. You do not understand all you have seen and heard. You do not know how to navigate the formal and informal rules that govern life in the city…


…to really know a city, you have to live in it, often for years.


简而言之,编程语言是City,而开发者则是Traveller——这是一个很有意思的比喻,在这篇文章里,我试图延续这个类比(Analogy)——把这个类比放大到初学,掌握,了解以至精通一门技术的层面。


不过需要注意:我自己并没有精通哪一门技术——所以这篇文章的内容是值得怀疑(susceptible)的,但它可以作为一个不错的参考。


0. Stranger(陌生人)


使用一项技术最初的层次就是听说过没用过——就像我们之中的大多数人都听过南极,听过北极,知道南极有企鹅,北极有北极熊,但是却从来没有去过南极或北极。


Stranger具有以下的特征:


  • 知道这项技术的名字。

  • 知道这项技术的一些术语。

  • 知道这项技术的一些关键人物的名字。

  • 了解少量技术的细节,但没有使用这项技术的实际经验。


以我本人和RoR来打个比方:


  • 知道RoR是Ruby on Rails。

  • 知道Rails,Gem和Rake的存在。

  • 知道DHH也知道松本行弘。

  • 看过The Ruby Programming Language,还使用一个基于RoR的博客框架Octopress写博客。

  • 但从来没有使用RoR去搭建网站。


所以我是一个RoR的Stranger。


对于新技术,绝大多数人都是Stranger——但是就我对国内技术社区的观察,相当数量的Stranger意识不到自己还是Stranger——认为知道一点术语一些人名就算了解一门技术,甚至把它写在简历上(Familiar with XXX)或是开始与别人进行讨论(当然都是毫无意义的讨论)。


1. Tourist(旅行者)


当开发者真正开始用一项技术作出了可以用的东西:


  • 面向用户的产品(End-User-Oriented Product),比如一个手机应用,或是一个浏览器插件。

  • 或是面向程序员的工具(Programmer-Oriented Tools),比如一个页面抓取框架,或一个简单的Parser Generator。

  • 注意教科书范例(Textbook examples)和Hello world不属于可以用的东西——这些只是Dead Code——被执行一两次,然后被遗忘。


这时这个开发者就进入到了Tourist阶段:


  • 了解这项技术的基本元素。

  • 使用这项技术做出了实用的产品或工具。

  • 了解对这项技术的部分细节。


根据的学习目的的不同,Tourist又可以分为Salesman和Sightseer。


1.1. Salesman(旅行商)



Salesman是具有明确目的的Tourist——他们学习技术的目标是为了完成某一项业务,就像旅行商去某地出差是为了卖商品而非观光一样。


绝大多数职业开发者在开发生涯中都会扮演Salesman这个角色——接到一个任务,涉及到某项不熟悉的技术,需要在限定时间内完成。


1.2. Sightseer(观光者)



和Salesman相反,Sightseer学习技术的目标是为了拓展视野,增加见识,而非完成某项特定业务。


具有主动学习精神的开发者在业余时会时常扮演Sightseer角色——找到自己认为有价值的新技术或是基础知识进行系统学习,从而拓宽视野,提高水平。


2. Resident(居住者)


如果一个旅行者在一个地方待了半年以上,那么他/她就会变得原来越像当地人。随着Tourist对某项技术的日益精进,他/她会逐渐演变成这项技术的Resident:


  • 熟悉这项技术的基本元素。

  • 熟悉这项技术的生态系统(Ecology):既包括开发工具(编辑器,命令行工具,集成开发环境等),也包括开发社区(讨论组,邮件列表等)。

  • 了解这项技术能做什么,不能做什么。

  • 了解这项技术有那些坑,如何绕过这些坑,以及识别这些坑带来的问题。

  • 对某些领域有深入的研究——但并不受限于特定领域。

  • 使用这项技术做出了有相当价值的产品或工具。


同Tourist一样,根据使用技术的目标不同,Resident可以分为Worker和Craftsman:


2.1. Worker(工人)



技术是Worker的谋生手段,一个优秀的Worker应具备以下特征:


  • 对于给定问题,知道如何给出经济有效的解决方案。

  • 以团队合作为主,了解团队合作的价值,能够推动团队项目健康前进。

  • 追求按时交付。


2.2. Craftsman(工匠)








请到「今天看啥」查看全文