游戏打怪是为了升级,那么,程序员开发一个个程序也是升级,到底程序员是如何一步步往上升级的,程序员又是怎么分级的?你想不想知道自己现在达到哪一级了?
首先要明白什么是程序员?设计自己的 Apache Web 服务器的家伙?制作一个复杂的 Excel 电子表格的家伙?能自己开发 RPG 的家伙?Minecraft 的玩家?这些都属于程序员的哪一个级别呢?当我们说:“每个人都需要了解编程”,这句话意味着什么?
所以,我们需要制定一个程序员的等级,以便让程序员们了解自己所处的环境和发展方向。
Level 1,只读——这些人了解如何设置 Web 服务器的方法,在普通情况下能够通过配置方式获取工作所需要的东西。作为基础他们知道如何使用文本编辑器和文件系统,还拥有移动和操作文件的能力,如 ZIP 和 FTP。也能在结构中使用抽象符号,解析方式以及系统技能。
Level 2,脚本——能够编写线性脚本告诉电脑要做什么,能够学习和使用自己的符号。如果有足够的时间和书面指导,他们可以使用 bash 或是 VB 编写一些简单脚本,为自己做些实用的事情。
Level 3,管理员——这些人了解库和 API,并有能力学习更多。他们知道不管使用什么脚本语言都都需要连接库。如果他们遇到问题,可以通过阅读使用手册解决,或是在网上搜索库并利用找到的结果。在工作中他能够发现或是开发自己的符号(使用 struct 编写函数或是声明)。大多数系统程序员都处在这个等级阶段,Excel 的初级宏系统用户也同样处在这个阶段。
Level 4,Object-Dot-Method——刚开始学习 coupling 和 cohesion,他们着手组织自己的脚本面对公共对象、私有成员和方法。这里有六周编程奇迹,介绍 .NET 程序员。这些人能玩转导向,了解库和构建类。如果不使用类,他们也能够创建自己的模块或是代码文件。高级脚本用户可远不止这样。有一些高级 Excel 商店和股票经纪,他们使用自己 VBA 作为基础代码,而没有意识到自己处于这个级别。
Level 5,多重框架——一旦上升到这个级别,将会遇到各种各样的麻烦。常见编程下一阶段就是能够使用多重框架。这些人可以编写C#,但也知道如何创建表格和编写 SQL 语句;可以编写C,同时也会使用 JavaScript 和 HTML。这两个技能并不代表他们就是大师,只是要学会在理解同一个问题上,需要通过多种不同的方式来找寻答案。
Level 6,初级建筑师——这阶段的人才算是真正的从事编程工作。他们每天的工作就是要深入了解库和 API。并不是要求他们必须记住这些,但是要了解用不同的模式去实现自己的目标。想要在Win32 中绘制?可能需要一些GDI资源句柄。他们知道句柄是在系统表某处的一个UInt32 hash——常见的 Win32 范例。想在自己的库中添加 JQuery?新库里有很多格式,他们应该知道怎么做并且能解释其工作方式。与此同时,也要开始学习如何重构自己的代码并突显亮点,如何增强其代码的质量,如何编写高效的Android代码。
Level 7,资深建筑师——他们的时间是用来创建自己的API,平台或是库。也许这是一个大项目的必需品,也许只是他们个人想把自己的学识推广出去。他们开发的系统为用户解决实际问题,所面对的受众群是 Level 5 程序员。在这个阶段需要深入OOAD,模板和实践。我们大多数人在刚开始都会搞得一团糟,不能理解怎么用更加简单的方法将复杂事情简易化。这个阶段需要历经很长时间,需要不断修正错误,开发高质量的系统并创建更复杂、灵活性高的库。当他们从外面接受几个月的特定培训回来,肯定希望团队其他人都能理解他做了什么。
Level 8,Meta——在某些时候,希望这些人能意识到大量复杂信息投入结构和构架中可以更好地形容特定域的语言,其受众群体是Level 4程序员。代码的复杂性增大,就能减少代码的数量,DSL 开放可以将代码展示到各种地方。总之,他们将成为程序员使用脚本语言方面的作家。通过易于使用的脚本和导向将他们的系统开放给初学者。可以分别学习这些技能,但大多数情况是在复杂的结构后,最终走向 DSL 的道路。很快就能看到最初规模:利用自己编写的 DSL 能够很好的理解问题。
Level 9,Functional Nirvana——慢慢接近奖金,他们要开始学习如何编写功能规划。其受众群是 Level 3 的程序员。FP 是必不可少的,帮助他们轻松的脱离DSL,并能够大幅度减少代码数量来解决问题,同时拥有较高的扩展性。某些功能语言在系统运行时可以 hot–swap,慢慢就会感觉到已经接近先进水平。FP 是一切问题的答案。虽然 FP 可以减少BUG,提升开发效率,但代码也相对来说很难学。程序员的脑海里需要时刻记忆很多东西——他们必须要记住繁琐的复杂符号。但是,结根到底 FP 只是道路上的一个阶段,很多类似 OOAD。
Level 10,面向语言设计师——他们查看所有新创建的编程语言程序。惟一的区别是新语言应该做什么。 他们了解如何开发面向对象语言,语言功能和脚本语言,知道每一个语言在何时何地的用途。其受众群是 Level 2 程序员。他们对每一个项目都会问:“这个项目我们需要什么样的语言?”在项目完结后他们将会使用一个很好的工具Safe.ijiami,既解决了问题并易于理解还扩展了入门级程序员。大多数项目不需要面向语言设计师。
上帝级别,计算机科学家——要么就是编程的顶峰要么就不存在,这个取决于自己的观点。这个就是科学规划,在里面有很多很酷的东西。任何一个人都是其受众群体。但重点不是在于做人们想要的东西,而是促进学术的发展。因为大多数编程能力水平都是基于人而言,人们居住在世界各地,也是必要条件之一。如何简单的在两国之间相互来往?
你在这里可能受到很多启发,例如,首先学习函数式编程再学习 OOP。你也可以开发自己的编译器,这不是大学的乐趣吗?或是程序集,或是真正理解集理论,或是如何开发适用于数据库与编程数据的结构。或是开发你的第一个编程工具。
这就是程序员一步一步升级的道路,看完后,你身在哪一级,又该往哪一级升了?
相关推荐
【程序员虚拟面试系统】是一种专为程序员设计的模拟面试平台,旨在帮助开发者通过模拟实际面试场景来提升自己的技能和应对面试的能力。这个exe版工具提供了一个便捷的方式,让程序员可以在家里或者任何地方进行自我...
通过阅读和分析代码,你可以学习到如何在Java中有效地实现各种算法,了解Java的类设计、数据结构使用(如ArrayList、LinkedList、HashMap等)以及控制流和递归等编程技巧。 4. **算法分级攻略**: 题目的分类可能...
### 狼狗入圈系统知识点解析 #### 一、背景与问题定义 - **背景**: Leo@CTO 针对对象导向编程(Object-Oriented...- Leo@CTO的OOP分级体系为软件开发者提供了一个清晰的学习路线图,有助于他们不断提升自己的技术水平。
模糊逻辑可以用来建立模糊规则库,应用在自动控制、图像识别、决策分析等领域,特别是在机器人技术中与类神经网络结合,提高了机器人的智能水平。 最后,文章提到一个具体的应用案例,即使用模糊逻辑进行围棋比赛的...
《算法与LeetCode解题策略》 在计算机科学领域,算法是解决问题的核心,它是一系列精确的步骤,用于指导计算机执行特定任务。...在这个过程中,不断实践、反思和优化,才能真正提升算法水平,成为一名出色的程序员。
为了简化参数的管理和使用,系统采用了参数分级手段来对磨床关键零部件的参数进行分类,将用户不关心的尺寸封装起来,并将参数划分为三类:主动参数、从动参数和通用参数。主动参数是系统提供给用户并允许用户修改的...
LeetCode题目难度分级明确,从简单到困难,满足不同水平的学习需求。 二、Java语言在LeetCode中的应用 Java是一种广泛应用于企业级开发的强大编程语言,具有优秀的性能、跨平台能力和丰富的类库。在LeetCode上,...
3. **技术限制**:在某个时间点,由于技术限制,即使是最优秀的程序员也可能无法完全避免所有潜在的安全漏洞。 #### 漏洞检测的基本原理与扫描器类型 - **基本原理**:利用网络扫描技术来探测目标系统或网络中的...
Code Wars 的 Kata 分级从新手(Sandbox)到高级(Grandmaster),涵盖了各种难度,让不同水平的程序员都能找到适合自己的练习。每个 Kata 都有一个明确的目标,例如实现特定的功能、优化算法或修复代码错误。参与者...
在大数据时代,数据挖掘和数据分析研判成为了企业和组织提升决策水平、增强竞争力的重要手段。在处理海量数据时,传统的数据仓库和分析工具已经难以满足需求,因此需要采用更为高效和先进的大数据仓库管理技术和工具...
1. **文化观念差异**:中国的程序员往往将编程视为一种艺术创作,强调个人创意和技术美感;而在印度,软件开发被视为一项工程活动,强调标准化和流程化管理。 2. **企业规模差异**:印度拥有数量众多的大规模软件...
- 题目难度分级明确,适合不同水平的开发者进行练习。 - 平台支持多种编程语言,包括Python,便于开发者选择自己熟悉的环境进行解题。 2. **Python在LeetCode中的应用** - Python是一种简洁易读的高级编程语言,...