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. iOS开发中使用Bmob RESTful API

    简介 尽管Bmob已经提供了一套SDK供开发者使用,但有时候开发者可能希望能直接与Bmob后台进行直接交互,以达到某些特别的需求(直接操作_User表.同步网络请求等).而RESTful API可以使 ...

  2. Mongoose:Schema之路

    说明:本文在个人博客地址为edwardesire.com,欢迎前来品尝. Mongoose学习 这里的Mongoose当然不是图片上的萌物,它是一个MongoDB对象建模工具(object model ...

  3. android 源码编译中的错误 解决

    1.编译种错误提示: arm-none-linux-gnueabi-gcc: directory: No such file or directory arm-none-linux-gnueabi-g ...

  4. homework 08_2 C++11新特性作业之二

    ---恢复内容开始--- 1.使用Lambda表达式计算“hello world!”中字母e和i的数量 下面是代码: #include "stdafx.h" #include< ...

  5. Android实例-获取安卓手机WIFI信息(XE8+小米2)

    结果: 1.必须打开Access wifi state权限,不打开权限会出图二的错误. 相关资料: http://blog.csdn.net/lyf_lyf/article/category/1735 ...

  6. 安装Sublime Text 2插件的方法

    1.直接安装 安装Sublime text 2插件很方便,可以直接下载安装包解压缩到Packages目录(菜单->preferences->packages). 2.使用Package C ...

  7. [转]省市二级联动(纯js实现)

    转至:http://www.jb51.net/article/41556.htm 实现原理: set_city("省名称",市select对象); 判断市select对象是否为空, ...

  8. ios开源项目(各种有用的第三方库)

    状态栏:MTStatusBarOverlay  下拉刷新:EGOTableViewPullRefresh  网络应用:ASIHTTPRequest  等待特效:MBProgressHUD  JSON解 ...

  9. MPAndroidChart

    该库的可扩展性强,代码相对规范,最近一次更新有很大改进,如果不喜欢AChartEngine的过于复杂可以考虑在此库的基础上开发自己的图表类. linechart 填充式lineChart 单条线的Li ...

  10. MEF 编程指南(二):定义可组合部件和契约

    可组合部件(Composable Parts)   在 MEF 内部可组合部件是一个可组合单元.可组合部件导出其他可组合部件需要的服务,并且从其他可组合部件导入服务.在 MEF 编程模型中,可组合部件 ...