Aaron Griffin写了一篇精彩的牢骚文章,主要是关于各种框架和它们能把程序员从主要业务编程中抽离出来的功能特征。概括一下他的主要论点,当你成为了一个“Rails程序员”,你使用的是一种易于理解但不通用的东西,它是从易于理解且通用的东西,如HTTP,SQL上抽象出来的一种东西。Rails上的知识是不通用的,如果你转向使用一种新的框架,你只得扔掉你现在的技能。Rails和你的新框架上没有交集的知识。

Aaron的论点有很多可以讨论的,他干的不错,我不想再总结了,你可以自己去阅读一下

但我要谈一个小插曲。在文中,他说:

有太多太多太多的‘开发人员’喜欢愚蠢的把自己标榜为 – “PHP程序员” 或 “Ruby程序员” 或 “C++程序员” – 这毫无意义。编程语言只是一种工具。各自都有各自专长的问题领域。称自己为“C程序员”就像是在说你是个“锤子木匠”,一个只会使用锤子的木匠。我们都知道这听起来有多傻。

我想说的是,“这是在他所有的精彩观点中一个明显不对题,不合适的说法。”我觉得他比喻的问题的级别完全不对等,“C程序员”这个词语所蕴含的知识和经验跟“锤子木匠”所表达的东西完全不在一个重量级上。如果我们要找相同级别的东西,我们可以找到一些跟这个行业工具相关的头衔:起重机操作员,火车司机,数控设备操作员。

但这个问题并不重要。我同意Araon所说的人们把工具和任务混淆了。只做为一个工具专家,而不是任务专家,会使你在工作中有些偏跛。成为一个工具专家会使你在有工具使用时工作效率非常的高,但当你需要离开这个工具环境,或者更糟糕,需要使用其它的环境时,你就显得有些无能为力了。

如果你不懂关系型数据库和SQL(现行的标准语言),当你从ActiveRecord转向LINQ时,你会发现那是相当的痛苦,因为你需要在LINQ和ActiveRecord之间找映射关系,而不是从LINQ和SQL之间找。Aaron这点说的很对。

上面的段落中我认为把”C程序员”的称呼和“锤子木匠”相比较有问题。我还发现了另外一个问题,这个问题使我更接近了Aaron的视角。我不认为编程语言是一种工具,我认为它是思想的记号。如果说我们有什么东西能和木工业做类比,我认为语言是编程建筑中的木材.

C不能比作锤子,C应该是木头。所以,一个C程序员应该是个木匠。你精通所有木工上的技艺并不能表示你的技艺可以通用于处理电线电缆,光线铺设,或铝制品。但对于做各种的木制品工作却是足够胜任的。

用于处理木材的工具就是我们用的IDE。如果你称自己为一个“Eclipse程序员”,在不需要知道它在做自动编译和自动反射,不知道如何使用git或SVN或不知道它的那些插件…的情况下你开发出来程序,那么,你就很像是个锤子木匠了。

我就是这么认为的。感谢Aaron。不错的讨论。

为什么我要称自己为Javascript程序员的更多相关文章

  1. 如何成为一个伟大的 JavaScript 程序员

    这篇文章主要概述在我5年工作经验的基础上,我成为优秀JavaScript开发人员所使用的技术和资源. 当前大多数Web开发人员面临着这样一个共同的问题:他们必须在多个不同的领域领先于他人——从数据库到 ...

  2. 要当好JavaScript程序员:5个debug技巧

    我一直使用printf调试程序,一般来说都是比较顺利,但有时候,你会发现需要更好的方法.下面几个JavaScript技巧相信你一定会觉得十分有用: 1. debugger; 我以前也说过,你可以在Ja ...

  3. JavaScript程序员必备的5个debug技巧

    1. debugger:我以前也说过,你可以在JavaScript代码中加入一句debugger;来手工造成一个断点效果.需要带有条件的断点吗?你只需要用if语句包围它: if (somethingH ...

  4. 初中级Javascript程序员必修学习目录

    很多人总感觉javascript无法入门,笔者在这里写一下自己的学习过程,以及个人认为的最佳看书过程,只要各位能按照本人所说步骤走下去,不用很长时间,坚持个3个月,你的js层级会提高一个档次,无他,唯 ...

  5. [JavaScript] 初中级Javascript程序员必修学习目录

    很多人总感觉javascript无法入门,笔者在这里写一下自己的学习过程,以及个人认 为的最佳看书过程,只要各位能按照本人所说步骤走下去,不用很长时间,坚持 个3个月,你的js层级会提高一个档次,无他 ...

  6. 每个JavaScript程序员都需要知道的5个数组方法

    Array.forEach() .forEach() 方法能够方便的让你 遍历数组里的每个元素,你可以在回调函数里对每个元素进行操作..forEach()方法没有返回值,你不需要在回调函数里写retu ...

  7. 每个程序员都需要学习 JavaScript 的7个理由

    最近在和招聘经理交流现在找一个好的程序员有多难的时候,我渐渐意识到了现在编程语言越来越倾重于JavaScript.Web开发人员尤其如此.所以,如果你是一个程序员,那么你应该去学习JavaScript ...

  8. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  9. 新手程序员随笔2——初识html、css和javascript

    翻看博客,发现好久木有发blog了.纠其原因,一则是近来工作上卡到了一个编程难题,我是一个单线程的小猿,当我手头有事情做的时候,我不想分心去做其它事情,如写blog.二则是我个人的写作能力不佳,想到写 ...

随机推荐

  1. 详解HTTP中的摘要认证机制(转)

    Basic认证方式是存在很多缺陷的,具体表现如下: 1,  Basic认证会通过网络发送用户名和密码,并且是以base64的方式对用户名和密码进行简单的编码后发送的,而base64编码本身非常容易被解 ...

  2. No module named BeautifulSoup

    遇到 No module named BeautifulSoup 错误,但是的确从官方下载了BeautifulSoup,并安装成功. 后来才发现,有两个BeautifulSoup的版本,一个是2012 ...

  3. Red5边源服务器集群部署

    http://www.myexception.cn/open-source/446184.html Red5简介: Red5是一个采用Java开发开源的Flash流媒体服务器.它支持:把音频(MP3) ...

  4. Oracle 表数据去重

    Oracle数据库中重复数据怎么去除?使用数据表的时候经常会出现重复的数据,那么要怎么删除呢?下面我们就来说一说去除Oracle数据库重复数据的问题.今天我们要说的有两种方法. 一.根据rowid来去 ...

  5. Hibernate入门(1)-第一个Hibernate程序

    Hibernate入门(1)-第一个Hibernate程序 Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理.本文介绍第一个Hib ...

  6. Labview中创建属性节点和调用节点的用法

    创建属性节点 个人感觉有点像C中的指针 创建调用节点

  7. Google中rel="canonical"的相关解释和用法

    转载原地址 http://blog.sina.com.cn/s/blog_673b01740100jxlz.html 近听到很多SEO 对在页面的规范版本用规范 URL 标签( canonical U ...

  8. [5] Zygote

    Android设备中的两大进程,如下图 1,由init进程创建的Daemon进程 2,由 Zygote进程创建的应用程序进程 什么是Zygote? zygote是“受精卵”的意思.在Android里, ...

  9. FluentData微型ORM

    最近在帮朋友做一个简单管理系统,因为笔者够懒,但是使用过的NHibernate用来做这中项目又太不实际了,索性百度了微型ORM,FluentData是第一个跳入我眼睛的词.简单的了解下FluentDa ...

  10. Spring启动时加载数据

    程序中也许有会有许多常用的,不会经常更改的数据,我们可以在程序初始化的时候就把他们加载,就不用频繁的加载或者查询. 以下是几个常用的,有COPY收集的,也有自己弄. 1. 实现BeanPostProc ...