程序员水平分级 你属于哪一类?
openkk 13年前
<p> <strong>导读:近日,<a href="/misc/goto?guid=4958329367313833982" target="_blank">whattofix.com</a> 刊登了一篇 <a href="/misc/goto?guid=4958329367313833982" target="_blank">Daniel Markham</a> 的文章《<a href="/misc/goto?guid=4958329367313833982" target="_blank">What Level Programmer Are You?</a>》,文内将参差不齐的程序员按照技术水平分为从“只读”到“上帝”,共十一个阶段,以帮助广大程序员找到自身定位并从中发现自己发展方向。以下是文章摘要:</strong></p> <p> 随着技术发展,编程悄然融入了我们的生活。我们已然离不开那些程序和编程语言。很多人都在不同程度地谈论着如何编程,而且也诞生出很多编程语言排行。那么程序员到底应该如何分级呢?</p> <p> 首先要明白什么是程序员?设计自己的 Apache Web 服务器的家伙?制作一个复杂的 Excel 电子表格的家伙?能自己开发 RPG 的家伙?Minecraft 的玩家?这些都属于程序员的哪一个级别呢?当我们说:“每个人都需要了解编程”,这句话意味着什么?</p> <p> 所以,我们需要制定一个程序员的等级,以便让程序员们了解自己所处的环境和发展方向。</p> <p> <strong>Level 1,只读</strong>——这些人了解如何设置 Web 服务器的方法,在普通情况下能够通过配置方式获取工作所需要的东西。作为基础他们知道如何使用文本编辑器和文件系统,还拥有移动和操作文件的能力,如 ZIP 和 FTP。也能在结构中使用抽象符号,解析方式以及系统技能。</p> <p style="text-align:center;"><img border="0" alt="程序员水平分级 你属于哪一类?" src="https://simg.open-open.com/show/61196bf63bfe69b237409ca7eb02b733.jpg" width="241" height="209" /></p> <p> <strong>Level 2,脚本</strong>——能够编写线性脚本告诉电脑要做什么,能够学习和使用自己的符号。如果有足够的时间和书面指导,他们可以使用 bash 或是 VB 编写一些简单脚本,为自己做些实用的事情。</p> <p style="text-align:center;"><img border="0" alt="程序员水平分级 你属于哪一类?" src="https://simg.open-open.com/show/f065c246c5f432f6812ab52307a55699.jpg" width="300" height="300" /></p> <p> <strong>Level 3,管理员</strong>——这些人了解库和 API,并有能力学习更多。他们知道不管使用什么脚本语言都都需要连接库。如果他们遇到问题,可以通过阅读使用手册解决,或是在网上搜索库并利用找到的结 果。在工作中他能够发现或是开发自己的符号(使用 struct 编写函数或是声明)。大多数系统程序员都处在这个等级阶段,Excel 的初级宏系统用户也同样处在这个阶段。</p> <p style="text-align:center;"><img style="width:555px;height:287px;" border="0" alt="程序员水平分级 你属于哪一类?" src="https://simg.open-open.com/show/2b3c95854be991245406c0adb24ec9d8.jpg" /></p> <p> <strong>Level 4,Object-Dot-Method</strong>——刚开始学习 coupling 和 cohesion,他们着手组织自己的脚本面对公共对象、私有成员和方法。这里有六周编程奇迹,介绍 .NET 程序员。这些人能玩转导向,了解库和构建类。如果不使用类,他们也能够创建自己的模块或是代码文件。高级脚本用户可远不止这样。有一些高级 Excel 商店和股票经纪,他们使用自己 VBA 作为基础代码,而没有意识到自己处于这个级别。</p> <p> <strong>Level 5,多重框架</strong>——一旦上升到这个级别,将会遇到各种各样的麻烦。常见编程下一阶段就是能够使用 多重框架。这些人可以编写C#,但也知道如何创建表格和编写 SQL 语句;可以编写C,同时也会使用 JavaScript 和 HTML。这两个技能并不代表他们就是大师,只是要学会在理解同一个问题上,需要通过多种不同的方式来找寻答案。</p> <p style="text-align:center;"><img style="width:543px;height:260px;" border="0" alt="程序员水平分级 你属于哪一类?" src="https://simg.open-open.com/show/e2c19adc857734b6965bd48b2eedddc4.jpg" /></p> <p> <strong>Level 6,初级建筑师</strong>——这阶段的人才算是真正的从事编程工作。他们每天的工作就是要深入了解库和 API。并不是要求他们必须记住这些,但是要了解用不同的模式去实现自己的目标。想要在 Win32 中绘制?可能需要一些 GDI 资源句柄。他们知道句柄是在系统表某处的一个 UInt32 hash——常见的 Win32 范例。想在自己的库中添加 JQuery?新库里有很多格式,他们应该知道怎么做并且能解释其工作方式。与此同时,也要开始学习如何重构自己的代码并突显亮点,增强其代码的质量,慢 慢的你会理解。</p> <p style="text-align:center;"><img border="0" alt="程序员水平分级 你属于哪一类?" src="https://simg.open-open.com/show/ba61c7a29f65c90476ff76c2489a667d.jpg" width="440" height="391" /></p> <p> <strong>Level 7,资深建筑师</strong>——他们的时间是用来创建自己的 API,平台或是库。也许这是一个大项目的必需品,也许只是他们个人想把自己的学识推广出去。他们开发的系统为用户解决实际问题,所面对的受众群是 Level 5 程序员。在这个阶段需要深入 OOAD,模板和实践。我们大多数人在刚开始都会搞得一团糟,不能理解怎么用更加简单的方法将复杂事情简易化。这个阶段需要历经很长时间,需要不断修正错 误,开发高质量的系统并创建更复杂、灵活性高的库。当他们从外面接受几个月的特定培训回来,肯定希望团队其他人都能理解他做了什么。</p> <p> <strong>Level 8,Meta</strong>——在某些时候,希望这些人能意识到大量复杂信息投入结构和构架中可以更好地形容 特定域的语言,其受众群体是 Level 4 程序员。代码的复杂性增大,就能减少代码的数量,DSL 开放可以将代码展示到各种地方。总之,他们将成为程序员使用脚本语言方面的作家。通过易于使用的脚本和导向将他们的系统开放给初学者。可以分别学习这些技 能,但大多数情况是在复杂的结构后,最终走向 DSL 的道路。很快就能看到最初规模:利用自己编写的 DSL 能够很好的理解问题。</p> <p style="text-align:center;"><img border="0" alt="程序员水平分级 你属于哪一类?" src="https://simg.open-open.com/show/5a7d2753b7fe543570077f3b4159f748.jpg" width="426" height="344" /></p> <p> <strong>Level 9,Functional Nirvana</strong>——慢慢接近奖金,他们要开始学习如何编写功能规 划。其受众群是 Level 3 的程序员。FP 是必不可少的,帮助他们轻松的脱离 DSL,并能够大幅度减少代码数量来解决问题,同时拥有较高的扩展性。某些功能语言在系统运行时可以 hot–swap,慢慢就会感觉到已经接近先进水平。FP 是一切问题的答案。虽然 FP 可以减少 BUG,提升开发效率,但代码也相对来说很难学。程序员的脑海里需要时刻记忆很多东西——他们必须要记住繁琐的复杂符号。但是,结根到底 FP 只是道路上的一个阶段,很多类似 OOAD。</p> <p> <strong>Level 10,面向语言设计师</strong>——他们查看所有新创建的编程语言程序。惟一的区别是新语言应该做什么。 他们了解如何开发面向对象语言,语言功能和脚本语言,知道每一个语言在何时何地的用途。其受众群是 Level 2 程序员。他们对每一个项目都会问:“这个项目我们需要什么样的语言?”在项目完结后他们将会得到一个很好的工具,既解决了问题并易于理解还扩展了入门级程 序员。大多数项目不需要面向语言设计师。</p> <p> <strong>上帝级别,计算机科学家</strong>——要么就是编程的顶峰要么就不存在,这个取决于自己的观点。这个就是科学规划,在 里面有很多很酷的东西。任何一个人都是其受众群体。但重点不是在于做人们想要的东西,而是促进学术的发展。因为大多数编程能力水平都是基于人而言,人们居 住在世界各地,也是必要条件之一。如何简单的在两国之间相互来往?</p> <p style="text-align:center;"><img border="0" alt="程序员水平分级 你属于哪一类?" src="https://simg.open-open.com/show/18c0733819a4edb52a3823761a147448.jpg" width="331" height="400" /></p> <p> 你在这里可能受到很多启发,例如,首先学习函数式编程再学习 OOP。你也可以开发自己的编译器,这不是大学的乐趣吗?或是程序集,或是真正理解集理论,或是如何开发适用于数据库与编程数据的结构。或是开发你的第一个编程工具。</p> <p> 这些是我所看到的大多数程序员所遵循的道路。</p> <p> 原文链接:<a href="/misc/goto?guid=4958329367313833982" target="_blank">whattofix.com</a></p> 来自: <a id="link_source2" href="/misc/goto?guid=4958329370319721506" target="_blank">CSDN</a>