编者按:每个程序员都希望自己在技术方面更进一步,成为程序达人,开发高手,技术大师……;这不仅能获得更好的职位和更高的报酬,更重要的是,开发高手还代表着一个开发者对自己的肯定以及对技术梦想的忠诚与追求。但如何成为一个开发高手呢?也许我们能从下面这篇博文中获得一些启发。作者Rick Wagner是一位Java企业级架构师,具有二十多年的开发经验的资深程序员和COBOLE语言的爱好者。他在文章中指出初级程序员与顶级程序员的根本区别在于所掌握技术的“广度”和“深度”,Rick认为这是程序入门者向程序高手进阶的关键
【51CTO译文】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的一席谈使我知道自己哪里需要提高,这对我在事业方面的促进比我想象的大得多。如果你是这个行业的新手,希望上面所提到的这些能够帮到你。
Happy Coding!
作者:Rick Wagner
原文:A secret key to 'Senior' level programming
链接:http://rickwagner.blogspot.com/2010/02/secret-key-to-senior-level-programming.html
分享到:
相关推荐
"百度地图开发AK密钥"是这个过程中的关键环节。 首先,让我们了解什么是百度AK密钥。在使用百度地图API时,开发者需要申请一个API密钥(AK),它相当于访问百度地图服务的通行证。这个密钥是独一无二的,由百度分配...
在Android平台上进行应用开发时,密钥管理是一个至关重要的环节,尤其对于涉及到用户数据安全、数字签名、身份验证等场景的应用。本知识点将深入探讨在Android环境下如何有效地管理和使用密钥,确保应用的安全性。 ...
ArcGis_密钥oK 希望对您开发有所帮助
### Google Map 开发密钥详解 #### 一、Google Map API 概述 Google Map API 是一套由谷歌提供的用于在网站或应用中嵌入交互式地图的服务接口。它支持多种编程语言,包括JavaScript、Android(Java/Kotlin)以及...
本文将深入探讨这两种密钥生成工具以及它们在个人二次开发中的应用。 首先,RSA(Rivest-Shamir-Adleman)是一种公钥加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出。其核心原理基于大整数因子...
《密钥管理系统开发指导KMS》是一份详细阐述如何构建高效、安全的密钥管理系统(KMS)的技术文档,尤其针对金融行业,如银行系统的KMS设计与实施提供了明确的指导。KMS在信息安全领域扮演着至关重要的角色,它负责...
在IT领域,尤其是在软件开发中,安全性和隐私保护是至关重要的。Qt是一个流行的跨平台应用程序开发框架,广泛用于创建桌面、移动以及嵌入式设备的应用。在这个“基于Qt的密钥生成工具、密钥使用示例”项目中,我们将...
它不仅支持标准的C++编程,还包含了对C++/CLI和MFC的支持,使其成为Windows平台上开发应用程序的强大工具。VC++2010的学习版(Express Edition)是面向初学者和学生免费提供的版本,旨在降低学习C++编程的门槛,帮助...
基于Java的开发源码-密钥管理工具Keytool-IUI可能是Keytool的一个用户界面增强版本,它可能提供更直观的操作界面,使得非技术用户也能方便地管理他们的密钥库。"IUI"通常代表"Interactive User Interface",这暗示这...
本文将深入探讨这两个关键概念,并结合《第七章 密钥管理技术与密钥分配协议》的资料,详细阐述相关知识点。 首先,密钥管理是指在加密和解密过程中,对密钥的生成、存储、分发、更新、撤销和销毁等一系列操作的...
10. **软件开发**:与ACR122设备配合的软件需要具备安全编程原则,如防止缓冲区溢出、SQL注入等,以避免为攻击者提供可乘之机。 这个压缩包可能包含的是一个用于测试或研究目的的工具,用于查找有效的ACR122密钥,...
1. **激活软件**:首次安装PowerDesigner 11 时,需要输入密钥来激活软件,使其成为完整版而非试用版或受限版本。 2. **验证合法性**:在软件运行过程中,系统会定期检查密钥的有效性,确保用户是经过授权的。 3. **...
9. **安全提示**:不建议在不安全的网站上寻找注册密钥,这些网站可能提供包含恶意软件的密钥,危害用户设备的安全。 通过以上知识点,我们可以全面理解VMware Workstation注册密钥的重要性和使用方法,从而更好地...
在IT领域,尤其是在软件开发和网络安全中,"密钥"是一个至关重要的概念。密钥的应用在Windows操作系统中扮演着核心角色,特别是在C#编程语言中创建的桌面应用程序设计。本文将深入探讨密钥的原理、用途以及如何在...
根据提供的文件信息,这里主要涉及的是"MyEclipse密钥"这一主题。MyEclipse是一款非常受欢迎的集成开发环境(IDE),主要用于...通过正确的方式获取和使用密钥,可以极大地提升开发效率,为用户提供更好的开发体验。
基于java的开发源码-Blowfish对称密钥加密算法类和实例.zip 基于java的开发源码-Blowfish对称密钥加密算法类和实例.zip 基于java的开发源码-Blowfish对称密钥加密算法类和实例.zip 基于java的开发源码-Blowfish对称...
DES(Data Encryption Standard)是一种经典的对称加密算法,由IBM在1970年代初开发,1977年被美国国家标准局(NIST)采纳为标准。它使用56位的密钥来对64位的数据块进行加密和解密,通过一系列复杂的运算过程,实现...
在IT安全领域,生成随机密码和密钥是至关重要的任务,尤其在开发HTTP API接口时。弱密码容易被破解,给系统带来巨大的安全隐患。本文将深入探讨如何生成指定长度的随机字符密码和密钥,以及相关知识点。 首先,我们...
### VMware Workstation 8 密钥详解 #### 一、概述 在虚拟化技术日益成为企业和个人用户必备工具的今天,VMware Workstation 作为一款领先业界的桌面虚拟化解决方案,为用户提供了强大的功能和灵活性。VMware ...
密钥分配与密钥管理