编程复杂性等级划分

来源:互联网 发布:如何面试java工程师 编辑:程序博客网 时间:2024/04/29 06:06
摘要:相信开发人员一定对初级、中级、高级软件工程师这类词汇很熟悉吧!你们是否对编程进行过等级划分?这个又是如何划分的呢?本文作者把编程复杂性从简到难化成27个等级,你同意这样的划分吗?

通常来说,判断每个人是否都能学会编程,就如同确认一个问题究竟是“黑”或“白”同样困难(众所周知,所有的事情都是双方面的)。但还是有一些规则可以用来判断一个人的编程水平。

当然,这并不是件简单的事,好比有些人只会理论知识而不会实践应用一样。其实编程更多地是取决于人们后天的刻苦努力而非天生的技能。

再就是“编程”到底是什么。透过一些对编程的定义,几乎每个人都能编程,而有些定义,又让人觉得几乎没人可以。为了更容易让你知道什么是编程?我做了一个根据难易程度的升序列表。对于这些列表(从简到难划分的等级列表),除了第一条,我认为其他的都属于编程,我是这样定义的,编程就是做一些代理执行任务,无论那个代理是一个计算机还是一个人。

下面这个列表仅仅是把所有可能的编程方法示例出来,你很可能会不同意这样的排序(如果是这样,我想知道为什么!)

(0) 做一切,甚至是一些手动的重复任务

(1) 指示他人执行一个非常简单的任务(例如泡咖啡)

(2) 设定闹钟

(3) 设置录像机来记录显示一周的工作

(4) 利用键盘宏来缓解重复的数据输入任务

(5) 静态网站、HTML&基本的CSS

(6) 包含简单公式的电子表格

(7) 使用梯子图进行工业控制

(8) 指示他人执行复杂的任务(例如换一下旧汽车上的离合器)

(9) 带宏或程序的电子表格

(10) 使用数据库、某种形式接口、严格的存储、检索的简单业务

(11) 简单的智能手机应用程序

(12) 2D游戏编程

(13) 简单的动态网站,主要是CRUD,一些简单的业务逻辑,用户较少

(14) 复杂的智能手机应用程序(比如:服务器端的后端)

(15) 简单的动态网站、主要是CRUD、复杂的业务逻辑或者大用户群

(16) 使用图形工具包进行科学编程(如matlab)

(17) 使用微控制器进行工业控制

(18) 复杂的应用程序软件

(19) 3D游戏编程

(20) 变化多端的编程语言

(21) 科学编程

(22) 3D游戏引擎

(23) 计算机科学探索、开发新算法

(24) 文件系统

(25) 操作系统

(26) 网络栈

(27) 编程语言设计

你同意这样的编程等级划分吗?如果不,可否分享一下呢!