程序员水平分级 你属于哪一类?

2012-02-14 16:57 | 14782次阅读 | 来源:whattofix.com 【已有69条评论】发表评论

关键词:程序员,编程,评级 | 作者:Daniel Markham | 收藏这篇资讯

导读:近日,whattofix.com刊登了一篇Daniel Markham的文章《What Level Programmer Are You?》,文内将参差不齐的程序员按照技术水平分为从“读写”到“上帝”,共十一个阶段,以帮助广大程序员找到自身定位并从中发现自己发展方向。以下是文章摘要:

随着技术发展,编程悄然融入了我们的生活。我们已然离不开那些程序和编程语言。很多人都在不同程度地谈论着如何编程,也诞生出很多编程语言排行,那么程序员到底应该如何分级呢?

首先要明白什么是程序员。设计自己的Apache Web服务器的家伙?制作一个复杂Excel的家伙?还是能自己开发RPG的家伙?Minecraft的玩家?这些都属于程序员的哪一个级别呢?当我们说:“每个人都需要了解编程”,这句话意味着什么?

所以,我们需要制定一个程序员的等级,以便让程序员们了解自己所处的环境和发展方向。

Level 1,读写——他们了解设置Web服务器的方法,在普通情况下能够通过配置方式获取工作所需要的东西。他们有使用文本编辑器和文件系统的基础知识,还拥有移动和操作文件的能力,如ZIP和FTP。也能在结构中使用抽象符号、解析方式以及系统技能。

Level 2,脚本——能够编写线性脚本告诉电脑要做什么,能够学习和使用自己的符号。如果有足够的时间和书面指导,他们可以使用bash或VB编写一些简单脚本,为自己做些实用的事情。

Level 3,管理员——这些人了解库和API,并有能力学习更多。他们知道不管使用什么脚本语言都需要连接库。如果他们遇到问题,可以通过阅读使用手册或是在网上搜索库来解决。在工作中他能够发现或是开发自己的符号(使用struct编写函数或是声明)。大多数系统程序员都处在这个等级阶段,Excel的初级宏系统用户也同样处在这个阶段。

Level 4,高级实践者——刚开始接触耦合性与内核,他们能编写自己的对象化脚本(有公有/私有成员和方法)。这些人能玩转技巧,了解库和构建类。如果不使用类,他们也能够创建自己的模块或是代码文件。高级脚本用户可远不止这样,有一些Excel技巧经验丰富的股票经纪人,他们使用自己VBA作为基础代码,而没有意识到自己处于这个级别。

Level 5,掌握多种技能——一旦上升到这个级别,将会遇到各种各样的麻烦。常见编程下一阶段就是能够使用多重框架。这些人可以编写C#,也知道如何创建表格和编写SQL语句;可以编写C,同时也会使用JavaScript和HTML。这两个技能并不代表他们就是大师,只是要学会在理解同一个问题上,需要通过多种不同的方式来找寻答案。

Level 6,初级构架师——这阶段的人才算是真正的从事编程工作。他们每天的工作就是要深入了解库和API。并不要求他们必须记住这些,但要了解用不同的模式去实现自己的目标。想要在Win32中绘制?可能需要一些GDI资源句柄,他们知道句柄是在系统表某处的一个UInt32 hash——常见的Win32范例。想在自己的库中添加jQuery?新库里有很多格式,他们应该知道怎么做并且能解释其工作方式。与此同时,也要开始学习如何重构自己的代码并突显亮点,增强其代码的质量,慢慢地你会理解。

Level 7,资深构架师——他们的时间是用来创建自己的API、平台或是库。也许这是一个大项目的必需品,也许只是他们个人想把自己的学识推广出去。他们开发的系统为用户解决实际问题,所面对的受众群是Level 5程序员。在这个阶段需要深入OOAD,模板和实践。我们大多数人在刚开始都会搞得一团糟,不能理解怎么用更加简单的方法将复杂事情简易化。这个阶段需要历经很长时间,需要不断修正错误,开发高质量的系统并创建更复杂、灵活性高的库。当他们从外面接受几个月的特定培训回来,肯定希望团队其他人都能理解他做了什么。

Level 8,诠释者——在某些时候,希望这些人能意识到大量复杂信息投入结构和构架中可以更好地形容特定域的语言,其受众群体是Level 4程序员。代码的复杂性增大,就能减少代码的数量,DSL开放可以将代码展示到各种地方。总之,他们将成为程序员使用脚本语言方面的作家。通过易于使用的脚本和导向将他们的系统开放给初学者。可以分别学习这些技能,但大多数情况是在复杂的结构后,最终走向DSL的道路。很快就能看到最初规模:利用自己编写的DSL能够很好的理解问题。

Level 9,函数式编程——慢慢接近奖金,他们要开始学习如何函数式编程。其受众群是Level 3的程序员。函数式编程是必不可少的,帮助他们轻松地脱离DSL,并能够大幅度减少代码数量来解决问题,同时拥有较高的扩展性。某些功能语言在系统运行时可以hot–swap,慢慢就会感觉到已经接近先进水平。函数式编程是一切问题的答案,它可以减少Bug,提升开发效率,但代码也相对来说很难学。程序员的脑海里需要时刻记忆很多东西——他们必须要记住繁琐的复杂符号。但是,结根到底函数式编程只是道路上的一个阶段,就像OOAD一样。

Level 10,面向语言设计师——他们查看所有新创建的编程语言程序。惟一的区别是新语言应该做什么。他们了解如何开发面向对象语言,语言功能和脚本语言,知道每一个语言在何时何地的用途。其受众群是Level 2程序员。他们对每一个项目都会问:“这个项目我们需要什么样的语言?”在项目完结后他们将会得到一个很好的工具,既解决了问题并易于理解还扩展了入门级程序员。大多数项目不需要面向语言设计师。

上帝级别,计算机科学家——要么就是编程的顶峰要么就不存在,这个取决于自己的观点。这个就是科学规划,在里面有很多很酷的东西。任何一个人都是其受众群体。但重点不是在于做人们想要的东西,而是促进学术的发展。因为大多数编程能力水平都是基于人而言,人们居住在世界各地,也是必要条件之一。如何简单的在两国之间相互来往?

你在这里可能受到很多启发,例如,首先学习函数式编程再学习OOP。你也可以开发自己的编译器,这不是大学的乐趣吗?或是程序集,或是真正理解集理论,或是如何开发适用于数据库与编程数据的结构,或是开发你的第一个编程工具。

这些是我所看到的大多数程序员所遵循的道路。(张祺/编译)

你认为自己属于哪一级别的程序员?
Level 1,读写
Level 2,脚本
Level 3,管理员
Level 4,高级实践者
Level 5,掌握多种技能
Level 6,初级构架师
Level 7,资深构架师
Level 8,诠释者
Level 9,函数式编程
Level 10,面向语言设计师
Level God,计算机科学家

http://news.csdn.net/a/20120213/311745.html

程序员水平分级 你属于哪一类?相关推荐

  1. 程序员水平自测题:程序员们,想知道你的技术达到了什么水平吗?

    程序员甲抱怨:"干IT太苦了,数据是越存越多,预算是越来越少,好基友是越来越多,女朋友是越来越少.想换一行怎么办??" 程序员乙:"敲一下回车." 中国的程序员 ...

  2. 【Rust 日报】2021-07-04 如何在面试中确定 Rust 程序员水平?

    如何在面试中确定 Rust 程序员水平? 对于这个问题,张汉东老师在 RustFriday 飞书群线上沙龙第十三期中进行了分享: 视频:RustFriday 飞书群线上沙龙 第十三期 | [讨论]如何 ...

  3. 程序员水平10分级,你的水平属于哪一级?

    随着技术发展,编程悄然融入了我们的生活.我们已然离不开那些程序和编程语言.很多人都在不同程度地谈论着如何编程,也诞生出很多编程语言排行,那么程序员到底应该如何分级呢? 首先要明白什么是程序员.设计自己 ...

  4. 为什么中国程序员水平一直上不了层次?无非是这些原因!

    纵览,国内比较大的软件公司(以下统一简称"国软"),清一色都是做政府项目的(他们能做大的原因我就不用说了吧),真正能做大的国软又有几家呢?这是为什么呢? 今天在这里就给大家简单分析 ...

  5. Java程序员薪酬分级,你想到达第几级?

    Java编程可以应用到网站建设.游戏开发.移动系统开发等多个领域.所以随着科学技术进步电子产品不断更新问世,越来越成为企业重视的开发人才.这也是Java编程在近几年越发火爆的原因. Java工程师通常 ...

  6. Java程序员水平有几个层次?需要掌握哪些技术?

    Java后端开发大致分为三个层次:初级开发.高级开发和架构构建.针对不同的阶段掌握技术能力有所不同,那具体要掌握哪些技术呢?下面和小编一起来看看吧! 初级程序员 初级工程师主要是指刚毕业的,职场上的技 ...

  7. 如何辨别一个程序员水平的高低?

    先来看个小故事: 小王:老大,这里怎么没有执行成功呢?代码我从其他地方拷过来的呢! 老大:报异常了没有? 小王:报了,说的是文件导入失败,可是我的文件写入的方法没有问题呀! 老大:你看看人家怎么写的? ...

  8. 这批.Net程序员水平不行啊!居然ASP.NET Core Middleware都不会用

    最近问了几个面试同一个问题:如果有多个自定义Middleware,如何控制它们的执行顺序(比如先判断用户合法再写访问日志).居然大部分人答不上来?! 对此,你有什么看法? ASP.NET Core M ...

  9. 判断一个程序员水平高低的标准?

    a.结果导向 胜者为王,败者为寇.也可以理解为做过什么NB的项目,带来了多少价值. b.竞赛比武 在同一平台下,大家八仙过海各显神通. c.广度和深度 在平时工作或交谈中,逼格最高者被大家膜拜. d. ...

最新文章

  1. 阿里云HBase全新发布X-Pack NoSQL数据库再上新台阶 1
  2. renderthread是什么_Android 旗舰机标配的高帧屏(120Hz),对各位 App 开发者有什么影响?...
  3. 新人与三年经验的交互设计师有多大的差距?
  4. 分享.NET开发中经常用到的十大软件(转)
  5. 图解JavaScript算法排序
  6. Lucene学习总结之二:Lucene的总体架构
  7. ajax简单的验证,ajax初探--实现简单实时验证(示例代码)
  8. Mars 是什么、能做什么、如何做的——记 Mars 在 PyCon China 2018 上的分享
  9. NFS服务端安装与配置
  10. mac安装helm工具_部署利器 helm v3 安装以及使用指南
  11. 【SDOI 2009】学校食堂 Dining
  12. 扇贝有道180914每日一句
  13. 云计算时代,观测产品Sunfire的成长史
  14. AD09 覆铜步骤及设计规则
  15. Anaconda下载、安装及配置教程
  16. ROBOGUIDE软件:FANUC机器人弧焊焊接系统配置与虚拟仿真
  17. DirectShow简介
  18. gif制作动图超简单,手把手教会用图片做gif动图
  19. python安装外部模块Django
  20. html静态页面图书馆管理,静态页面管理

热门文章

  1. html复选框对齐文字,input【type=checkbox】标签与字体对齐
  2. php添加管理员页面完整代码,php – Opencart管理员端的空白页面
  3. cesium鼠标控制键盘_用 Python 控制 鼠标和键盘,花式操作
  4. Zabbix的snmp监控
  5. 声音对比处理_厨房垃圾处理器 | 厨余垃圾分类的正确打开姿势
  6. python 新建文件 hdfs_大数据学习(六):Python操作hdfs(包括追加数据文件到hdfs文件)...
  7. 从物联网设备生命周期理解Apple Homekit框架
  8. qt+vs2017环境下XIMEA相机库的配置
  9. 将CSS放头部,JS放底部,可以提高页面的性能的原因
  10. JS技巧:兼容性导出表格为Excel文件