John Jiang

a cup of Java, cheers!
https://github.com/johnshajiang/blog

   :: 首页 ::  :: 联系 :: 聚合  :: 管理 ::
  131 随笔 :: 1 文章 :: 530 评论 :: 0 Trackbacks
你不是全面的专家
    对于软件开发,干的时间越长,就越感觉自己懂的知识少,似乎要学习的知识还有很多很多。最近恰在DZone上看到一篇小文,作者谈到是否有必要成为全面的专家。道理其实很浅显,大家也都懂,我只是随手翻译一下罢了。(2013.06.30最后更新)

    编程不仅仅是写代码--而是要处理一大堆抽象。从0和1开始,到处理器,内存地址,底层的网络协议,数据结构,再上升到网络服务,组件框架和用户界面。这一过程,就是从乏味的底层抽象,到更有趣的可用且可维护的抽象。
    我们被归为"高级开发者"。对于某些人来说,这就意味着我们在所有的抽象层面都是专家。如果不是这样,那么我们就不够好。我不倾向于赞同这种观点,而这并不只是为了证明我并不是在所有抽象层面上都是专家。
    这基本上就是一种折衷--要么你专注于某些层面,然后变得对它们十分精通,要么,你这也学学,那也干干,然后对哪一样也不精通。接下来你会争辩到,在多数领域的某些方面你应该达到专家级。但随着时间的推移,这些专业知识将会变得冗余。如果我今天把应用设计与框架方面的知识丢到一边,而去钻研算法或TCP编程,那么由于技术更新,三年后我可能就不再精通之前的那些领域了。
    存在抽象的原因之一就是防止你陷入底层细节的深渊。如果没有这些抽象,我们就不可能写出合格的软件。而我们可能需要做的就是专注于更高层,因为低层已经被处理好了。将底层编程当作某种深奥艺术可能只是为了显摆,但事实上它并非什么深奥艺术,只是有对底层编程的需求罢了。
    当然,这就不是说通过学习JQuery,Rails和Spring就能使你变成最好,而不需要知道其它东西了。你要尽可能地熟悉你所专长层面之下和之上层面的工作原理。一般地,因为所有抽象都会"泄露",所以你不能忽略应用程序所消耗的内存,当需要快速访问时,你最好使用Hashtable,TCP连接可能被防火墙阻隔,尽管你不需要编写析构函数,不需要实现Hashtable,或者了解TCP。但了解其它层面的工作原理并不会使你成为那方面的专家,其实你也不必成为那种专家。
     为什么我要写这些呢?因为很多公司(包括大公司)中的人们倾向于认为专家就应该在所有层面上都达到专家级,尤其是在底层方面。在面试时会问你很多底层的细节问题,好像你一生都在从事数据结构和网络编程方面的工作,你当然不是那样,但这并不意味着你不是一名专家。
    不做全方位的专家是一件很好的事情,只需要在若干层上达到专家级就行了。但你必须了解更低层和更高层领域的工作原理,这样当有需要时,你也可以成为那一层的专家。
posted on 2013-06-30 21:02 John Jiang 阅读(2366) 评论(2)  编辑  收藏 所属分类: 翻译非技术

评论

# re: 你不是全面的专家(译) 2013-07-05 15:21 俄罗斯认证
专家就是专家呀  回复  更多评论
  

# re: 你不是全面的专家(译) 2014-05-02 15:51 ZT文萃
专家是相对而言的。  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: