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

导读:近日,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。你也可以开发自己的编译器,这不是大学的乐趣吗?或是程序集,或是真正理解集理论,或是如何开发适用于数据库与编程数据的结构,或是开发你的第一个编程工具。

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

原文链接:whattofix.com

时间: 2024-09-20 00:06:57

程序员水平分级 你属于哪一类?的相关文章

公司环境舒适程度决定程序员水平高低?

千万不要惹程序员不开心,否则吃亏是你自己是什么造就了最优秀的程序员?丰富的工作经验.优厚的待遇,还是多年的实践?答案都是否定的.在科技界,有一个奇怪的现象:来自同一家公司的程序员的水平相差无几.为什么会是这样?因为最重要的因素是程序员所处环境的舒适程度,这一点决定了他们的水平高低.为了验证这种看法是否正确,美国软件工程专家汤姆•德马克(TomDeMarco)和蒂莫西•李斯特(TimothyLister)设计了一个名为"编码战争游戏"(CodingWarGames)的研究.这项研究旨在确

程序员水平分析

whattofix.com刊登了一篇Daniel Markham的文章<What Level Programmer Are You?>,文内将参差不齐的程序员按照技术水平分为从"读写"到"上帝",共十一个阶段,以帮助广大程序员找到自身定位并从中发现自己发展方向.以下是文章摘要: 随着技术发展,编程悄然融入了我们的生活.我们已然离不开那些程序和编程语言.很多人都在不同程度地谈论着如何编程,也诞生出很多编程语言排行,那么程序员到底应该如何分级呢? 首先要明白

全球程序员编程水平排行榜TOP50,中国排名第一

哪个国家的程序员水平最高?这个容易引发弹幕混战的问题可不好回答.最近软件工程师水平测定平台HackRank发起了一系列编程挑战竞赛,给出了一个目前为止貌似靠谱的统计调查结果. 全球程序员编程水平国家(地区)排行榜TOP50 https://yqfile.alicdn.com/0165338aef0c1602c9a6bc5cac684e2a8888ae7c.png" > 全球数以十万计的软件工程师参加了HackRank的系列编程挑战大赛,比赛项涵盖从Python.算法.网络安全到分布式系统多

程序员成长规划

引言 我的程序员成长之路 程序员的成长经历往往很相似,大部分的人走过了最前面相同的一段路,而有的人则走得更远.总结自己这些年来的历程,这也许能让年轻的程序员少走一些弯路,成长得更快:或许更好一些,能让大家从中得到一些启发,早日进入优秀程序员的阶段,实现梦想,释放激情. 第一阶段,最初是在学校里学习计算机基础知识,学习经典的程序设计语言,编写测试用的小程序.这个过程可以说是对计算机和程序设计的入门阶段.这个阶段主要是培养了自己对计算机软件的兴趣,打下了良好的计算机基础知识. 第二阶段,而后参加工作

程序员的十层楼

自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外.当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方,有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已.     那么,到底中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢?要解决这个问题,必须先知道程序员有多少种技术层级,每个层级需要什么样的技术水平,然后再比较中国和西方在各个技术层级的人数,就可以知道到底有没有差

很认真的聊一聊程序员的自我修养

今天谈一谈,程序员提高自我修养是为了什么?     程序写的好有人崇拜,有妹子喜欢?还是到博客.论坛.社区发表文章进行分享获得成就?我想这是少数人的追求,也是更高的追求,在这之前 我认为,在中国,程序员提高自我修养的目的,是为了 1.更好的融入工作,减少困难,增加成就 2.稳步的提升能力,提高收入,达成财务自由 2.站在更高的层面看待自己的学习和工作,树立更加适合的人生观价值观,家庭幸福,生活愉快 说的更通俗一点,就是用更加合理的方式和方法,赚取到更多的收入   说了这么多废话,进入正题 何为程

C#程序员面试(一)答案

程序|程序员 前提:状态栏面板sbpFilePath已经设定为自绘样式.当有如下代码段1被执行一次以后: 代码段1:private void treeviewArchives_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e){if (e.Node.Text!= "" ) {try{this.richtexebox.LoadFile(Application.StartupPath+e.Node.Tex

程序员,你真的懂得收发电子邮件吗?(转)

  http://www.cnblogs.com/rootq/articles/1320266.html   前言 在几年以前,相信不少朋友都听说过,马云同志创办阿里巴巴的时候,还不会发邮件.也不知道在阿里巴巴上市之后,他学会收发邮件了没有!呵呵.我是曾经从内心里"瞧不起"过,至少认为在这一点上我比他强很多.后来我才发现,我未必懂得收发邮件.除了我,还有很多的码农也根本不懂得收发邮件,更不懂得Email里面的工作原理.借此,向大家介绍一下和Email相关的技术. 老实说,我在七八年前就

程序员,你真的懂得收发电子邮件吗?

前言 在几年以前,相信不少朋友都听说过,马云同志创办阿里巴巴的时候,还不会发邮件.也不知道在阿里巴巴上市之后,他学会收发邮件了没有!呵呵.我是曾经从内心里"瞧不起"过,至少认为在这一点上我比他强很多.后来我才发现,我未必懂得收发邮件.除了我,还有很多的码农也根本不懂得收发邮件,更不懂得Email里面的工作原理.借此,向大家介绍一下和Email相关的技术. 老实说,我在七八年前就有了自己的雅虎邮箱,一直断断续续有用过.直到后来参加工作后,由于经常需要邮件沟通,我才发现,原来电子邮件是这样