每个程序员都希望自己在技术方面更进一步,成为程序达人,开发高手,技术大师……;这不仅能获得更好的职位和更高的报酬,更重要的是,开发高手还代表着一个开发者对自己的肯定以及对技术梦想的忠诚与追求。但如何成为一个开发高手呢?也许我们能从下面这篇博文中获得一些启发。作者Rick Wagner是一位Java企业级架构师,具有二十多年的开发经验的资深程序员和COBOLE语言的爱好者。他在文章中指出初级程序员与顶级程序员的根本区别在于所掌握技术的“广度”和“深度”,Rick认为这是程序入门者向程序高手进阶的关键。
20年前,当我刚开始从事数据处理方面的开发工作时,我在一家为银行承担外包工作的公司工作。开始我只是一个实习生,毕业后进阶为程序员的第一级——“初级程序员”。其实,在我们公司内部,对这些Title都做了一些神秘的标识,比如我的初级程序员的标识是“E07”。
不久,我发现了我们公司是如何对程序员的级别进行标识的:
◆初级程序员 = E07
◆程序员 = E08
◆高级程序员 = E09
◆超级英雄 = E10 (一种非常罕见的品种)
这些级别不单代表技术能力,还有薪水,当然,薪水是与这些级别排名紧密相关的,这是不会变的,不管是20年前还是现在。
像所有初级程序员一样,我希望自己用一到两年的时间在E07级别工作,然后逐渐向上爬。但有件事一直令我困惑:那些进阶最高级别的程序员与一直停留在初级的程序员之间到底有什么不同?
一天,我与一个非常棒的E10程序员一起开发一个项目,他叫James。在这个项目的过程中,我们进行了愉快的交谈,他的话令我印象深刻:“工作都一样,无论你是E07还是E10”。
我当时目瞪口呆。在那一刻,我意识到,在这个项目中我所做的工作与James所做的一样重要。我当时在做数据分析和编码,James也在做数据分析和编码。虽然他以最高级别的E10在工作,但他所用的编译器我也在用;他所用的数据我也在用;他所用的开发环境也跟我一样。如果他所做的部分遇到困境,我所做的部分也将遇到阻碍。在这个项目中,我们同行。
别误会我的意思,虽然所做的工作一样,但初级程序员肯定不如那些程序大牛值钱。今天,我不得不承认这个被广泛接受的事实。但那时,我的这个想法给我带来不可估量的好处,直到今天。
我试图寻找我与E10的朋友们到底有哪些区别。我和他之间到底有哪些不同?我得到的结论是,至少在两个方面他比我更优秀:广度和深度。
广度意味着在技术方面可支配的工具、技能和方法广泛的多。当时,我只具备一些COBOL编程经验;而E10的朋友不单会COBOL,还精通于汇编、JCL(一种工作控制语言)、操作系统等等多项技能。在今天,这等于一个只会Java的程序员站在另一个Java程序员身边,他身边的这位同时还知道C++、C#、Ruby、Python、Erlang以及每一种语言的流行框架。如果一个项目只是需要使用Java,那这两个Java程序员是平等的。但如果下一个项目需要更多的技术,这种平等的情况就会发生改变。
另一个方面是深度,是指在其工作领域内的知识含量和功底。在过去,我所编写的COBOL代码也许跟我的E10朋友一样好。但如果我的程序有一个Bug,我的办法只是看着诊断报告不断进行调试。我的朋友不单会做这些,他还会阅读一些核心转储的数据,将一些重要数据转变成汇编程序(他可以从中获得一些启发)等等。在另一个我们一起进行界面编程的项目中,他可以更好的理解我们所操作的平台并知道如何完美的利用这个平台所提供的功能。同样,我的源码可能跟他的没什么太大区别,但如果我们需要向下一个级别进阶……是的,我们之间有一个明显的分界线。
在今天的世界里,这可能意味着程序牛人可以知道如何调整JVM,选取有用的数据分析工具;程序牛人知道如何安装、配置、调试和配置平台。牛人知道如何建立编译环境,而初级程序员也许只知道按照已经确定的方案(平台)进行开发。
技术的广度和深度,我想,我找到了成为高手的密匙。我需要学习更多并努力提到自己的广度和深度(直到今天,我还在努力!)。20多年前与James的一席谈使我知道自己哪里需要提高,这对我在事业方面的促进比我想象的大得多。如果你是这个行业的新手,希望上面所提到的这些能够帮到你。
技术的“广度”和“深度”是初级程序与高级程序员的最大区别,也是进阶开发高手的密匙。“广度”和“深度”是对程序员成长的一个方向性指引,不断扩充技术外延,努力扎实技术功底是初级程序员成长为高级程序的一个重要途径。
分享到:
相关推荐
二叉树广度和深度优先遍历,通过递归算法实现二叉树的建立,利用递归算法实现深度优先遍历,使用队列实现广度优先遍历
以文件操作输入邻接矩阵存储的无向图,广度和深度的递归遍历
数学建模 图论 课件 最小生成树 广度和深度搜索 matlab 程序 数学建模 图论 课件 最小生成树 广度和深度搜索 matlab 程序 数学建模 图论 课件 最小生成树 广度和深度搜索 matlab 程序 数学建模 图论 课件 最小生成树...
数据结构 广度 深度 拓扑 最短路径 最小生成树 c语言的算法实现
图的遍历---深度和广度 图的遍历---深度和广度 图的遍历---深度和广度 图的遍历---深度和广度 图的遍历---深度和广度 图的遍历---深度和广度 图的遍历---深度和广度
这是一个关于八数码问题的广度和深度优先搜索方法 希望能给你大家学习数据结构时带来帮助!!!
邻接表深度遍历和广度遍历 邻接表深度遍历和广度遍历 邻接表深度遍历和广度遍历 邻接表深度遍历和广度遍历
数据结构课程中的深度优先搜索算法、广度优先搜索算法的C语言程序,在Turbo C 2.0上调试通过。
递归解压嵌套的zip文件,如zip中包含zip及目录和文件,递归遍历目标文件输出其路径,结合了广度和深度优先遍历算法
这个算法实现了图的遍历,图的存储方式为多重连接表,图的遍历有两种方式:广度优先和深度优先。
C++的广度和深度优先搜索算法,走出迷宫。
使用广度和深度学习的电影推荐项目.zip
解决8数码问题 在一个3*3的棋盘中,分别用1,2,3,...,8表示八个数码方格,用0表示空缺的方格,现给出一个初始状态和目标状态,寻找出在评估函数f(n)=g(n)+h(n)的限制下,以最少的步数到达目标状态(一次将一个数码...
这个是可以运行的比较基础的广度优先和深度优先的例子
图的深度遍历和广度遍历是两个重要的算法,这也是我们理解并掌握图这一数据结构的基础。通过此程序算法可以进一步掌握图的构造以及遍历的相关知识。
不断提高黑龙江省电子政务建设与应用的广度和深度.docx
在邻接矩阵的存储结构下,实现图的深度优先遍历和广度优先遍历。
里面有有向图的创建,还有无向图的创建,还有自定义无向图的创建,还有广度优先便利和深度优先便利。 如果和我初学的小伙伴一样敲不出来可以瞅一瞅 刚刚我注释的很全,分开写的。反正不要钱多少看一点!对应的文章我...
深度排序 广度排序 拓扑排序 VS2008编写
广度优先搜索和宽度优先搜索的动画演示,均为gif图,大家可以自行看看,理解思路或者放Ppt里很好用,怎么分数是5分,编辑不了了? 请管理员修改为1分,谢谢