`
no7beckham
  • 浏览: 97185 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

"广度"和"深度" 进阶开发高手的密匙(转帖)

阅读更多

每个程序员都希望自己在技术方面更进一步,成为程序达人,开发高手,技术大师……;这不仅能获得更好的职位和更高的报酬,更重要的是,开发高手还代表着一个开发者对自己的肯定以及对技术梦想的忠诚与追求。但如何成为一个开发高手呢?也许我们能从下面这篇博文中获得一些启发。作者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的一席谈使我知道自己哪里需要提高,这对我在事业方面的促进比我想象的大得多。如果你是这个行业的新手,希望上面所提到的这些能够帮到你。

  技术的“广度”和“深度”是初级程序与高级程序员的最大区别,也是进阶开发高手的密匙。“广度”和“深度”是对程序员成长的一个方向性指引,不断扩充技术外延,努力扎实技术功底是初级程序员成长为高级程序的一个重要途径。

分享到:
评论

相关推荐

    二叉树广度和深度优先遍历

    二叉树广度和深度优先遍历,通过递归算法实现二叉树的建立,利用递归算法实现深度优先遍历,使用队列实现广度优先遍历

    邻接矩阵存储的无向图广度和深度遍历文件操作

    本话题将深入探讨如何使用邻接矩阵来实现无向图的广度优先搜索(BFS)和深度优先搜索(DFS)的文件操作。 首先,邻接矩阵是一个二维数组,其中的元素代表图中节点之间的连接。如果节点i与节点j之间有一条边,那么在...

    C++实现树的广度搜索和深度搜索完整代码

    C++实现树的广度搜索和深度搜索完整代码 本文将围绕树的广度搜索和深度搜索算法进行讲解,并提供完整的 C++ 实现代码。 树是一种基本的数据结构,它由节点和边组成。树的搜索算法是数据结构和算法的基础,包括广度...

    数据结构 广度 深度 拓扑 最短路径 最小生成树

    在本主题中,我们将深入探讨“广度优先搜索”(BFS)、“深度优先搜索”(DFS)、“拓扑排序”、“最短路径算法”以及“最小生成树”这五个关键知识点,并以C语言作为实现工具。 首先,让我们从广度优先搜索开始。...

    图的遍历---深度和广度

    图的遍历---深度和广度 图的遍历---深度和广度 图的遍历---深度和广度 图的遍历---深度和广度 图的遍历---深度和广度 图的遍历---深度和广度 图的遍历---深度和广度

    android高手进阶教程

    总之,《Android高手进阶教程》将引导你探索Android开发的深度和广度,通过理论结合实践的方式,助你成为真正的Android开发高手。无论你是希望提升现有技能,还是准备应对更复杂的项目挑战,这都是一份不可多得的...

    邻接表深度遍历和广度遍历.h

    邻接表深度遍历和广度遍历 邻接表深度遍历和广度遍历 邻接表深度遍历和广度遍历 邻接表深度遍历和广度遍历

    使用广度和深度学习的电影推荐项目.zip

    这个项目“使用广度和深度学习的电影推荐项目”很可能是一个包含源代码、数据集和相关文档的资源包,旨在帮助我们理解如何将这两种技术应用到实际的电影推荐场景中。 首先,让我们详细了解一下广度学习和深度学习。...

    图的深度优先遍历和广度优先遍历算法

    "图的深度优先遍历和广度优先遍历算法" 图的深度遍历和广度遍历是两个重要的算法,这也是我们理解并掌握图这一数据结构的基础。通过此程序算法可以进一步掌握图的构造以及遍历的相关知识。 图的深度优先遍历算法 ...

    数据结构深度、广度优先搜索算法C语言版

    数据结构课程中的深度优先搜索算法、广度优先搜索算法的C语言程序,在Turbo C 2.0上调试通过。

    C++的广度和深度优先搜索算法,走出迷宫。

    C++的广度和深度优先搜索算法,走出迷宫。

    图遍历的演示算法(广度和深度)

    在这个话题中,我们将深入探讨两种主要的图遍历算法:广度优先搜索(BFS)和深度优先搜索(DFS)。这两种算法在计算机科学中有着广泛的应用,如路径查找、搜索问题、最短路径计算等。 首先,我们来看看多重连接表,...

    深度 广度排序和拓扑排序

    深度排序、广度排序和拓扑排序是图论中的重要概念,主要应用于计算机科学的数据结构和算法领域。在VS2008这样的开发环境中,理解并掌握这些排序方法对于编程和解决问题至关重要。 首先,让我们从深度排序(Depth-...

    8数码问题包括广度和深度

    解决8数码问题 在一个3*3的棋盘中,分别用1,2,3,...,8表示八个数码方格,用0表示空缺的方格,现给出一个初始状态和目标状态,寻找出在评估函数f(n)=g(n)+h(n)的限制下,以最少的步数到达目标状态(一次将一个数码...

    广度优先和深度优先

    这个是可以运行的比较基础的广度优先和深度优先的例子

    八数码之广度和深度优先搜索

    广度优先搜索(BFS)和深度优先搜索(DFS)是解决此类问题的两种常用算法。 **广度优先搜索(BFS)**是一种图形搜索算法,其核心思想是从起始节点开始,逐步探索所有可能的路径,优先考虑较短的路径。在八数码问题...

    图的深度优先和广度优先搜索动态演示图3张

    图的深度优先搜索(DFS, Depth-First Search)和广度优先搜索(BFS, Breadth-First Search)是图论中的两种基本遍历算法,它们在计算机科学中有着广泛的应用,例如在解决网络爬虫、迷宫求解、社交网络分析等问题时。...

    数学建模 图论 课件 最小生成树 广度和深度搜索

    在数学建模中,MATLAB是一种常用的编程工具,可以用来实现图论算法,如最小生成树的计算和广度优先搜索或深度优先搜索的遍历。MATLAB提供了方便的数据结构和函数支持,使得构建和操作图变得相对简单。 **应用实例**...

    图的遍历:深度优先、广度优先

    在邻接矩阵的存储结构下,实现图的深度优先遍历和广度优先遍历。

    三种主流寻路方式(A星,广度,深度)

    在计算机科学领域,寻路算法是图形理论和游戏开发中的核心部分,用于寻找从起点到目标点的最短路径或最优路径。本篇文章将详细探讨三种主流的寻路方法:A*(A星)算法、广度优先搜索(Breadth-First Search, BFS)...

Global site tag (gtag.js) - Google Analytics