在程序员的道路上,义无反顾的努力,有思想的人,很多,好的想法,需要学习。(以此共勉)...

程序员:差距在哪里,你与开发高手的距离到底有多远?

投递人 itwriter 发布于 2010-08-27 13:45 评论(19) 有5369人阅读  [收藏]

  开发者的技术成长是个永恒的话题。《如何成为一个专家级的开发者》文中虽然界定了专家的概念和开发者成长为专家级的一般路径,但却忽视了一个问题:为什么只有少数人能成长为开发高手和专家级程序员?一般程序员与开发高手的差距在哪里?

  事实上,我们一直在关注这一问题,并就此进行了数月的调查走访,受访的十几位技术专家对此问题的回答有些出乎我们的意料,也与众多入门级开发者所想象的“差距”大不相同。

  入门者说

  我们在一些具有1-2年开发经验的程序员就“你与开发高手的差距在哪里”的问题进行调查,得到的答案大致可以归纳为以下几种:

  • 项目经验。多数入门级程序员认为,大量的项目经验是提高自身技术水平的关键;高手们往往具有更多的项目经验,解决问题有更广泛的思路和方法。
  • 对语言和平台的理解掌握。有相当一部分人觉得自己的技术积累还不够,很多语法和API并不熟悉,甚至有人还要翻看语法手册才能完成一段代码的编写。而高手们对语言和平台早已烂熟于心,很多东西都到了“信手拈来”的境界。
  • 良师高徒。少数开发者抱怨没有高手和主程序员代领,无法获得好的项目实操技能和指导。而高手们往往一开始就有好的机遇得到更好的经验传授。
  • 努力程度。一些开发者觉得自己不够努力,很多知识没有深入学,很多项目没有用心做。他们认为,高手们的技术水平与勤奋刻苦的技术积累有必然的关系。

  这些差距的确存在,且带有一定的普遍性。但仔细想来,却多少有些主观:同样的项目,同一个团队,为什么有人可以获得更多的经验并逐渐成长;同一个SDK同样的IDE,为什么高手就可以“信手拈来”;一个主程代领3-5名程序员,为什么有人会脱颖而出?

  高手说

  “差距在哪里”的问题在受访的专家级开发高手看来有不一样的答案。这些答案多是指向技术内涵和开发者本身。

  代码的“斟”与“酌”

  高手在编程效率方面可能并不比普通程序员快多少,因为他们会吝啬自己敲下的每一行代码。这种“吝啬”有两方面的含义,一是项目的架构性和整体性考量,二是从性能和优化的角度进行Coding。其实,这里所映射的是一个开发者的技术视野。

  有多位技术专家强调项目执行时的全局观。面对一个项目,即使是团队中的普通一员,也要力求从项目整体架构的角度审视开发需求,对各个模块、接口和通信做最优化的预想和配置。这样可以从全局审视整个项目的技术布局,预判可能出现的问题。

  在确定了整体之后,落实到具体的模块实现,每一行代码不但有上下文的考量与规划,还要具备模块间的整体布局。这是模块内的技术视野,比如接口的定义、注释的可读性、代码的执行效率等。当你写下一行代码前,要考虑它是否会对整个系统造成影响,是否方便其他接口进行调用,这些都是一个开发高手的“技术潜意识”。

  据一些经常带领入门级开发者的技术经理介绍,多数人只考虑自己所负责的模块进行开发,缺乏一个全局性的技术视野和对代码性能苛刻的态度,这样虽然能按交付日期完成项目,却对项目质量和开发者的自我提高有很大阻碍。

  喜欢大麻烦

  一般开发者对工作中的一些技术问题相当排斥,每个人都希望手里的项目可以顺利进行,一旦遇到问题就会有负面情绪。而我们所看到的一些开发高手对待技术问题则是一种非常积极的态度。

  问题、难点是提高的机会。解决一个问题,能力就提升一点;解决一个大问题,能力就提升一大截。很多技术高手喜欢大麻烦,如果开发工作可以顺利进行当然是好事,但没有难度就没有高度;高手们会认为没有技术挑战性,很难让高手们在项目中发挥应有的激情。

  同样有技术经理反映,用一个开放的态度迎接问题、解决问题,这是目前入门级程序员所缺乏的心态。“喜欢大麻烦”的态度也是程序员向开发高手进阶的必备心里素质。

  代码阅读者

  开发高手是代码阅读者。大多数技术专家的代码阅读量是普通程序员的百倍,代码阅读的时间比写代码的时间要长得多。《Java编程思想》的作者Bruce Eckel对阅读代码的好处做出两种说明:

  • 代码被阅读的时间比写代码的时间要长,这有助于你的代码被人理解,并改善或者修改其中的Bug。
  • Code Review是最有成效的改善软件缺陷的方法,但在我们却经常“没有时间来考虑它”。

  关注代码的可读性有助于团队的其他同事帮助你修正技术问题,而技术问题的修正可以使你不再犯同样的错误。Code Review可以让你有更高的视角来审视已完成的项目,这样做,往往能有意外的收获——你发现同样一个项目,你可以做的更好。

  除了自己和团队中的代码,高手们还愿意花大量的时间研究“代码大全”,从别人的代码中吸收不同的技术思想并与自己的技术风格融汇贯通。而普通程序员多数只阅读与自己项目相关的程序代码,很少分配精力阅读优秀代码。

  其他“差距”

  • 参与开源项目。高手们往往都会参加2-3个开源项目,从头到尾完成一个项目的实现和后期升级。开源项目可以与世界各地的优秀程序员接触,协同完成工作,学习和应用最前沿的技术;并得到更多人对你的技术反馈。
  • 技术探索者。专家级开发者往往是技术探索者和新技术的布道者。高手们往往对现有技术并不满足(而且经常抱怨这些技术的不足之处),能清晰看到现有技术的缺陷。与开源社区的结合让高手们有更多机会接触到最前沿的技术和应用理念,这些技术往往是解决现有技术缺陷的最佳方案。高手们还会把新发现的技术带到国内加以推广和应用,成为这门新技术的专家。

  与之前入门者的答案想对比,你是否想到了什么?

  技术与梦想

  事实上,在“高手说”的部分我们还有一个答案没有列出——技术热情。虽然受访的几位开发高手给出的答案虽各有侧重,但却几乎同时提到了这一点,“要有足够的技术热情”。

  多数程序员只把程序开发当成一份工作,他们在乎平台的前景、语言的优劣、报酬的高低;他们不愿为一个技术点反复钻研,不愿为一个bug精心测试,不愿为自身技术水平的提高多花时间。而开发高手往往具有单纯的技术梦想,愿意为技术付出自己全部的时间

  归根结底,这还是技术与梦想的话题:你想用技术成就怎样的梦想?在你的梦想中,技术占到几分?

  这个比例,才是你与开发高手的真正“差距”,也是你与开发高手的最大“距离”。

 

网摘:http://news.cnblogs.com/n/72217/ 

转载于:https://www.cnblogs.com/angleSJW/archive/2010/10/27/1862484.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2020届的毕业生怎么这么苦!

一提到毕业论文我们身上的每个细胞都在告诉自己这件事太麻烦了!每天要思考着选题、开题报告、查资料写稿、排版、答辩、做PPT......除了8000到20000的字数要求完成一篇毕业论文,要依次经历确定论文选题,提交开题报告查阅行业文献,…

线切割机上的DOS系统

昨天朋友的线切割机上的系统无法启用了。于是朋友叫我过去看看。哈,原来是DOS系统加上线切割机控制软件开机提示HIMEM.SYS未加载,所以EMM386.EXE未能启动。机器是很老的机器了,当然了配置也不需要太高了。因为这样的东西没有加载成功&#xf…

RMSE均方根误差学习笔记

1.均方根误差,它是观测值与真值偏差的平方和观测次数n比值的平方根,在实际测量中,观测次数n总是有限的,真值只能用最可信赖(最佳)值来代替.方根误差对一组测量中的特大或特小误差反映非常敏感,所…

java小数强制转换,Java中的强制类型转换 大数转小数

首先要明确一下转换规则:大数转小数,多出的高位部分会被截断。比如 int 占 4个byte(32 bit), byte占 1个byte(8bit), 那int 转 byte ,int 高位多出的那24个bit会被截断。例1:int b 233; // 正整数强转System.out.println((byte)b);// 原码&a…

js 定时网页点击_反爬 JS 逆向,扣代码解密分析

挺久没发爬虫相关的教程啦,今天给大伙分享一下关于网站反爬对请求参数值的加密分析例子,主要还是看看思路。定位加密点在某网站中进行登录请求:简单抓下包,点击登录按钮之后,可以在浏览器的控制台中看到相关的请求&…

这个时代最重要的技能之一(数据分析)

大家好,我是Z哥。首先说明一下,今天不卖课程哈,就单纯聊聊我在做数据分析时的一些经验。在如今这个数据爆炸的时代,我们每天不管是主动还是被动,都会面对大量的数据扑面而来。如果有较好的数据分析能力,不管…

ADO.NET Entity Framework学习笔记(2)建模[转]

模型结构 [概念模型]中要有[实体键], [实体键]要与表中的 [主键] 对应,也就是说表必须要有主键. 表中的[唯一键]不会在[概念模型]中体现 在[概念模型]中默认是不允许修改[实体键]的值的 联合主健可以正常映射 如果为属性赋值超过字段长度保存时,会向数据库提交,数据库会返回错…

教你怎么一下哄好赌气的女朋友​

1 教你怎么一下哄好赌气的女朋友▼2 有钱人的隔离生活也格外丰富多彩▼3 狗:有一种被掏空的感觉▼4 湘西赶尸的原理找到了!▼5 泰罗奥特曼在打奥特曼你先去找迪迦奥特曼玩▼6 看起来就很值钱的哟而且还是微波炉专用哦!▼7 看完了有点恐…

最受欢迎中国技术博客? 我才狂写4周唉

今天察看了一下blog的访问来源,居然发现有很多点击来自同一个URL:http://blog.zdnet.com.cn/popblogger50.shtml。进去一看,发现是一个‘最受欢迎中国技术博客’评选活动。这让我很惊讶,因为这个Blog1)放得很冷僻&…

Linux挂载命令mount详解

Mount挂载命令使用方法语法: mount -t 类型 -o 挂接方式 源路径 目标路径-t 详细选项:光盘或光盘镜像:iso9660DOS fat16文件系统:msdosWindows 9x fat32文件系统:vfatWindows NT ntfs文件系统:ntfsMount Windows文件网…

php curl hostname,php – 如何解决cURL错误(7):无法连接到主机?

我使用cUrl(php)以xml格式将项目代码发送到Web服务。我在localhost中得到正确的响应,但是当它做服务器它显示cURL Error (7): couldn’t connect to host这里是我的代码:function xml_post($post_xml, $url){$user_agent $_SERVER[HTTP_USER_AGENT];$ch…

headless 怎么处理_公司清算注销债务怎么处理

公司解散2020-09-10 14:27:00更新公司在经营的过程中会产生很多应付款的,最为常见的是应付货款,应付款是指应该支付而未支付的款项,是属于债务的一种,那么公司注销清算前应付款如何处理?下面由华律网小编为读者进行的解答&#x…

WTMPlus 低代码平台来了

点击上方蓝字关注我们WTMPlusWTM框架开源4年以来,凭借其良好的设计,超高的开发效率,出色的性能和广泛的适用性得到了越来越多用户的喜爱,WTM的Nuget包累计下载已经超过了14万次,平均每天都有100人次使用WTM在开发项目。…

数据结构C#版笔记--堆栈(Stack)

堆栈(Stack)最明显的特征就是“先进后出”,本质上讲堆栈也是一种线性结构,符合线性结构的基本特点:即每个节点有且只有一个前驱节点和一个后续节点。 相对前面学习过的顺序表、链表不同的地方在于:Stack把所有操作限制在"只能…

为什么女生会有体香?

全世界只有3.14 % 的人关注了爆炸吧知识本文转载自微信公众号一只学霸(ID:bajie203)今天渣哥向我诉说了一个困扰了他很久的疑问看着渣哥这一副无知的样子学霸的内心暗爽就让你伟大而又聪慧的霸霸来为你揭开女生的真面目一说到这个学霸知道你们…

心路

从昨天在电脑上COPY上《头文字D》后,到现在我看了三遍了,但是我还是在看,我不知道自己是为了什么,难道是我想找一个好的结果吗,没有的呀,不管怎么样,导演安排的就是这个样子,可是我还…

手游开发者交流会议暨OGEngine新版发布

2019独角兽企业重金招聘Python工程师标准>>> 手游开发者交流会议暨OGEngine新版发布 由OGEngine举办的第二次手游开发者交流会议以圆桌会议方式在深圳高新园举行。会议不仅吸引了手游开发者,也有海外支付商,国内外的手游发行商参加。 会议环绕…

python 绘制围棋棋盘_围棋之规则基础(一)

★本期导读:一、围棋的下法二、气★正文:一、围棋的下法1、 对局双方各执一色棋子。2、 空枰开局。3、 黑先白后,交替着一子于棋盘的交叉点上。4、 棋子下定后,不再向其它点移动。5、 轮流下子是双方的权利,但允许任何…

php pdo 查询语句,PDO:预处理语句(参数化查询)

(PDO(PHP data object/PHP数据对象))[PDO|预处理语句|参数化查询]The database library called PHP Data Objects or PDO for short can use drivers for many different database types, and supports a very important feature known as prepared statements, sometimes also…

Asp.Net Core安全防护-客户端IP白名单限制

前言本篇展示了如何在ASP.NET Core应用程序中设置IP白名单验证的2种方式。你可以使用以下2种方式:用于检查每个请求的远程 IP 地址的中间件。MVC 操作筛选器,用于检查针对特定控制器或操作方法的请求的远程 IP 地址。中间件Startup.Configure方法将自定义…