说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

软件开发者最重要的四大技能

HTML文档下载 WORD文档下载 PDF文档下载
现如今,可供选择的技术、语言及平台可谓五花八门,因此要弄明白哪里是花时间训练的最佳投资点也就难上加难……

现如今,可供选择的技术、语言及平台可谓五花八门,因此作为软件开发者,要弄明白哪里是花时间培养个人技能的最佳投资点也就难上加难。常常有人向我征求关于如何成为更强的程序员的建议。人们问得最频繁的问题可谓万变不离其宗,即他们是否应该把时间花在某种与众不同的特定编程语言或技术上。

最近我花了很多心思琢磨此问题,并想出了一些我认为最要紧且能让你受益终生的技能,一旦软件开发者掌握了这些技能,不仅会给他们带来最佳的工作机会,还会使他们变得卓有成效。

技能一:解决问题(Solving Problems)

以前我曾谈到需要学会如何解决问题,甚至给出了如何学会解决问题的若干步骤,因为我认为这种技能对任何软件开发者都是至关重要的。软件开发百分之百就是解决问题。

若毫无问题,就无需软件。

所有软件都被设计用于解决某些用户问题,而通用解决方案就是由许多能搞定的小规模问题所组成的阵列。要是你不能解决问题,就不会精通软件开发,而你所用的编程语言或技术也就无所谓了。在解决问题时,大多数开发者的表现简直糟糕透顶。

我常常会听到一些关于求职面试太难的抱怨,因为面试官会要求开发者去解决有一定难度的问题。我谈过为何有难度的面试挺好,而其中的部分原因在于,面试官就是要测试开发者解决问题的能力。我知道,许多开发者仍然不同意我对此问题的观点,而且他们也不明白像TopCoder[2]那样的网站为何要不遗余力地完善其开发技能,至少从我的亲身经历来看,那正是TopCoder解决问题的实践活动,而参与此类实践活动正是我职业生涯的转折点。

假想你是木匠。要想成为出色的木匠,也许你应该擅长切削木材。也许你应该亲手做过各种各样的部件,同时也用过许多不同的工具切削木材。

无论你的木工经验有多少年,抑或设计出的家具或橱柜有多漂亮,每次你也要想方设法切削木材,努力做出各个部件。切削木材是木工活的基础技能,就像解决问题是软件开发的基础技能一样。

技能二:自学(Teaching Yourself)

在生活中,可能没有比学会学习更重要的技能了。此种技能在软件开发中尤其重要,因为据我所知,任何领域的变化速度都超不过软件开发。你不可能无所不知、无所不晓。甚至你都来不及投入时间去成为某一特定框架或技术的大师——因为事物发展得太快了!反而,你需要这样的能力,即为完成手头任务而快速获取所需知识的能力。

要是你真想具备某种能让你在软件开发职业生涯中始终与时俱进的技能,那就学习如何自学吧。

提高此种技能的唯一方法就是付诸实践。走出去学习新的编程语言或技术,即使你认为决不会用得上它(也不妨学一下)。将来你会惊讶地发现,你竟然可以很快地把它捡起来,因为你早就对相关基础知识一清二楚了。要是你能迅速适应日新月异的软件开发市场、以及与之相关的各种技术和平台,你就会拥有那些总是很抢手的技能。

尽管我对蒂姆·费里斯(Tim Ferris)的某些主张有点儿怀疑,不过他写了本很棒的书,名为《4小时变身厨师》(4-Hour Chef),其中介绍了若干如何快速学习事物的绝招。(我那时也正打算写本与此主题有关的书。)

技能三:命名(Naming)

要是有人问起我成天在做什么,那我八成会说“研读其他人命名的事物,以及给事物命名。”诚然,若没人真那么问,我也不会真这么答,不过我的确有可能这么答哦。

软件开发就是在描述形而上学的内容。我们所构建的大多数内容都是看不见摸不着的。授权经理收到授权请求,然后发出授权响应,与此同时,用户资源库会调用用户工厂去组建新用户——我们必须根据以上描述在心中去构建起完整的环境。

每次你编码时,就是在给事物命名。当阅读自己或他人所写的代码时,你会从代码中的事物名称获得对代码的大部分理解。通过在开发者亲手编写的代码中查看方法、变量及类的命名方式,大多数情况下,我能准确预测出开发者的技能水平。要给代码中的概念及数据起合适的名字,而缺乏此能力的开发者就像个哑巴翻译。无论你能否明白某事,要是你不能妥善地解释它,那么此事会转瞬即逝。

提高此种技能的最佳方式就是不断实践。只要我在读代码时有所领悟,我往往会重命名代码中的事物。由于我开始明白某个方法到底在做什么,因此我会给方法改名,以便与我的理解相一致。在读代码时我会做这么做,即便代码没有产生任何逻辑变化,也照样会这么做。

你越关注给事物起合适的名字,你就会越擅长此道。这也是你代码中最显而易见的一面。简单看一眼你的代码,很难分辨代码正确与否或效率高低,但如果代码能让我一望而知,那么我会认为你知道自己在做什么。

技能四:待人接物(Dealing with People)

尽管我把此种技能排在最后,不过在许多情况下,你可能会说它是首要的或最要紧的技能。所到之处皆有人。除非你单独工作,且只为你自己开发软件,否则,作为软件开发者,其他人就会影响到你的职业生涯。我以前谈过为何你可能不想批评某人,不过我们更多地是与他人打交道,而不是惹人烦。我总是会重新捧起戴尔·卡耐基(Dale Carnegie)的那本名著《人性的弱点》(How to Win Friends and Influence People),因为这本书对于学习如何做一名成功人士是如此重要。我以前说过,倘若你想提高人们的技能,那就阅读此书吧!

基本问题是,人类不是合乎逻辑的生物,我们是情感生物。当然,我们喜欢为我们的推理能力而自豪,不过实际情况是,我们所做的大多数决策更多地受到情绪影响,而非理智。

作为软件开发者,此种技能对你的意义在于,除非你能妥善地处理与其他开发者、经理、甚至客户的关系,否则,即便你有许多好点子或很有用的技能,你还是会四处碰壁。一般说来,积极参与到软件开发社区中去也会对你的职业生涯有很大帮助。不要仅限于人际交流,而要把你的名字传播出去,并广结善缘。成功做到这一切直接取决于你待人接物的能力。(在学习如何待人接物时想走捷径?那很简单。请与人为善!)

怎样看待实用技能?

请注意,在我的列表中并未包括任何特定技术,甚至连Web开发或移动开发这样宽泛的技能也没有,这是何原因?在一些技术领域具有坚实的基础的确很重要,不过这些领域都不及我上面提到的这4种技能重要。要是你能够解决问题、快速学习事物、恰当命名事物、以及待人接物,那么与你专门从事任何特定技术相比,从长远来看,你将会取得更大的成功。

有这样一种说法,要深入学习一到两门编程语言,并从事某个通用的专业领域,这当然很重要,不过,只要你还没带着那些抉择在这条老路上走得太远,并把精力集中在提高这4种重要技能上,你自会万事大吉!(你甚至可以学习C++)

译文出自:图灵社区(译者/高翌翔)

英文出自:Simpleprogrammer

作者简介:

约翰·森梅兹(John Sonmez)是Pluralsight网站的课程作者,他创作了超过25门课程,内容涵盖了从移动开发到控制反转容器的广泛主题。他还是诸如DotNetRocks和Hanselminutes等播客网站的常客。约翰已经使用各种原生工具分别为iOS、Android、Windows Phone 7创建了应用程序,他还为HTML5及几乎所有目前可用的跨平台解决方案创建了应用程序。他不仅热衷于敏捷开发,而且他正忙于一场个人改革运动,以便化繁为简。

用Enter键代替Tab键-Delphi资料 用修改文件时间的方法来加密文件-Delphi资料 用最原始的方法编制程序-Delphi资料 运用Delphi编写Windows NT中服务程序 在DELPHI编程中确定系统运行模式 在Delphi程序中调用控制面板设置功能 在DELPHI下读取与设置系统时钟 在Delphi中避免2000年问题的捷径 在Delphi中调用API函数 在Delphi中获取和修改文件的时间 在Delphi中控制扫描仪 在Delphi中实现对WIN9X应用程序使用权限的设置 在Delphi中实现对目录拷贝、删除和搬移的操作 在Delphi中使用自定义光标 在Delphi中用拼音首字符序列来实现检索功能。 在DELPHI中用线程排序 在Delphi中制作背景音乐 在Dephi中使用TStream读写数据的技巧-Delphi资料 在应用程序中跟踪MOUSE的坐标-Delphi资料 怎样建立回调函数-Delphi资料 怎样显示自定义鼠标光标(Cursor)-Delphi资料 找出消失的 Delphi 窗口 执行外部程序-Delphi资料 执行一程序并等待其结束-Delphi资料 制作一个不在任务栏及任务列表中显示的幽灵程序-Delphi资料 抓获全屏-Delphi资料 子目录级的文件查询的实现-Delphi资料 Delphi中ChartFX构件使用详解 Delphi中动画设计 Delphi中对Jpeg格式文件的处理... Delphi中多媒体组件使用解析 Oracle 的产品真的很烂吗?参与者都有分! 现需开发一套对多个数据库(不是一个数据库中的多个表)进行操作的程序,使用BDE,请大家提建议 CPen的问题! 各位请教:我要通过电话线做多路远程接入但我不想用路由器 请问,使用ado控件的程序,考到其他机器上,除了数据库和应用程序之外,还需要拷贝什么文件? 部分技术超过OFFICE 国产软件挑战微软 关于子窗口 请教:uninstall onflow.exe和wcmdmgr.exe是什么软件? DataSet如何定位记录. lius_lzc(小刘)你好。请来这 高程成绩 不是高手不要进来!!!!!!!!!!!!! 那位大侠能说一下快手的原理啊,有源码最好???????????????? 各位有什么网站可在线看片或下载东西,网速要非常快,如果有请与大家分享,如果没有请勿进,免得大家试半天的网址,谢谢合作 实模式和保护模式的区别? 一个只问小湖的问题 ASP 中的 Response.End 在JSP中怎么写??? 有关多媒体数据库的问题 笨鱼笨鱼,好象你的故事大家都知道了,贴张相片出来给大家看看,大家说好不好啊?? 请教关于第三方控件的问题,谢谢 软件工程师们,你们开发软件的时候听什么音乐呀? 各位大侠,请帮助一下初学者 CPen的问题!!!!!!! 我在泡脚呢,给大家发分,打听一下你们泡脚的时候都干什么? 关于新的论坛数据的提问 在Delphi如何存取SQLServer DataBase表里的图像记录?(100分) 怎样循环更改窗口图标? 请问,那位能帮忙给个Email地址和url地址的正则表达式。急用,在下不胜感谢! 各位网络高手请进! 关于服务端用自己(socket)的程序,客户端用IE,怎样把客户端的数据信息传给服务端? 共享锁,排他锁有什么不同?· 请问在D3D8.0里可否加汉字?要注意什么?多谢! 请问有没有这样一种类似容器的东东,它其中的元素可以是异构类型,比如可以同时放类A,类B的对象 呵呵。前几天狂问问题狂送分,现在分快没了。 我得计算机怎么播放rm格式有问题啦!大侠们给个招吧! 如何在ctree view 中改变tree 的风格? 如何成为一名程序员? 帮帮我!!如何将一个Single(单精度型数)小数点后面那么多位去掉,我只要后面两位就够了。 急需高手(小菜鸟之SOS) 用什么办法可以另存一个表,结构和数据都和原表一样。 much point!!!谁能告诉我html的标准文档在那里可以下载,最好有状态转换图 如下菜单设置语句中,m_a.m_1.m_2.enabled=True ,如果m_2用变量ss,怎样写? 请问,哪里有turbo c3.0-下载,告诉我下载地址/ 各位:你们是怎样将TreeView与数据表联系起来的? [新版增强]BBS社区消息搜索软件 To Visual C++ [新版增强]BBS社区消息搜索软件 To Visual Basic [新版增强]BBS社区消息搜索软件 To Delphi 各位高手帮帮忙:为何在程序中设置打印机纸张不起作用?设置打印字体却起作用? 我不得不骂人了!!!!这老师应该下岗 [新版增强]BBS社区消息搜索软件 To C/C++ [新版增强]BBS社区消息搜索软件 To C++ Builder [新版增强]BBS社区消息搜索软件 To C# 为什么说债券的市场利率越高,债券的发行价格越低?什么是市场利率? 道什么什么什么成语是成语接龙 混凝土立方体抗压强度标准值具有95%保证率的抗压强度.这个95%的保证率是什么意思? MRP、MRPII、ERP的含义是什么? 回弹碳化深度是如何测定碳化深度值测量,可采用适当的工具在测区表面形成直径约15mm的孔洞,其深度应大于混凝土的碳化深度(大于10mm)。孔洞中的粉末和碎屑应除净,并不得用水擦洗 成语什么其谈 MRPⅡ的定义及功能不要答非所问,告诉我些其他的什么在MRP的基础上演化而来之流的.只要告诉我定义、功能这两点就行了. 用回弹法测混凝土强度,回弹仪上面有碳化深度修正系数怎么用啊? 什么而谈的成语 何谓开环MRP?其基本构成及逻辑关系是什么? 混凝土回弹仪测量中的碳化深度有什么意义?什么是碳化深度 什么为什么谈,成语 简述市场营销活动中传播信息的构成要素? 沂南诚信石英砂厂怎么样 求成语,谈( ) 论( 建设市场构成要素有哪些 在括号里填反义词,组成成语 急用是填反义词呃,比如口(是)心(非) 忆( )思( ) ,出( )入( ),( )不尝( ),同( )共( ),( )应( )合,顶( )立,( )劳( )逸,顾( )失( 铅、镉、汞、六价铬、PBB、PBDE这几个重金属的化学分子式, 每月完成计划的百分数是怎样算的? 在括号里填上反义词组成的成语()来()去 既()异() 改()从() 弃()图() 帽()神() ()来()受 好()恶() 以()求()在括号里填上近义词组成的成语见()识( 铅,贡,镉.六价铬,多溴联苯,多溴联苯醚各自的害处 混凝土强度百分比咋算的测压出来的7天试件的数值是454,要求强度达到75%,怎么算达到没达到啊 在括号里填上近/反义词,组成成语填近义词:例.冥(思)苦(想)()方()法()当()对()计()算填反义词:例.口(是)心(非)前()后()不()则()()奉()违()入( 细菌的特殊构造有哪些,各有何实意义 混凝土抗压试验报告,有一代表值.怎么计算强度达到了百分之多少 在括号里填上反义词,组成成语( )腔( )调 ( )顾( )盼 ( )赴( )继 此( )彼( ) 辞( )迎( ) ( )辕( )辙 头( )脚( ) 有( )及( ) 一( )一( ) 此( )及( ) 细菌生物有哪三种结构急积极积极积极积极积极积极积极基金44444444 金融市场上的卖空是什么意思 在括号里填反义词,组成成语‘推( )出( )评( )论( )天( )地( ) 细菌的基本结构及生物学意义? 金融市场里, 石英砂坩埚是什么?跃鑫石英砂厂有石英砂坩埚吗? 什么是电熔;电熔的用途是什么 请问:金融是什么意思? “急”求各位大哥大姐帮解释“混凝土抗压强度计算表”怎么看呀? 谢谢啦!其中fcu,k n λ1 mfcu fcu,min sfcu mfcn— λ1sfcu 0.85fcu,k 0.9ffcu,k0.95fcu,k 1.15fcu,k 分别都是什么意 电熔柜的作用是什么 混凝土立方体抗压强度标准值的名词解释 FC在金融领域里是什么意思? 能组成啥成语? 社会学功能论 冲突论 互动论 是什么, c20混凝土用回弹仪回弹大体多少回弹值是正常的? 这个能组成什么成语? 社会学研究有什么实际意义和功能 硝酸镁受热分解成氧化镁么?分解温度是多少? ()()其来,怎样组成成语 社会学的意义为什么说社会学可以使人认识自我认识社会 或者说 社会学是如何使人认识自我认识社会的 最好结合实际举例说明 怎样分解氧化镁?如题,如果好的话追加5-20分. 首和身,组成成语 用社会学功能论的观点解释为什么电脑病毒一直存在 氧化钙与氧化镁在和三氧化二铝反应的时候那个需要的温度低? 混凝土立方体抗压强度设计值和标准值的区别是什么 二氧化硫和浓硫酸反应两者反应吗?方程式?另外再问一个问题:气体溶于水溶质怎样判断,像是SO3溶于水形成H2SO4,溶质为硫酸,而NH3溶于水溶质仍是NH3,不按一水合氨来算,为什么?其他的怎样判断 什么而谈成语 氧化铝到刚玉氧化铝与刚玉有什么不同呢(是结构还是杂质还是什么)?很多东西主要成分相同,但是为什么性态不同呢?能不能给出好理解一点的解释 三氧化二铝能不能与浓硫酸反应 浓硫酸为什么可以用铝罐装 什么道来成语 99氧化铝和刚玉的区别 利率的构成要素是什么? 口什么什么道 成语 有种厂叫“刚玉厂”刚是这个刚,玉不知道是不是这个玉,说“刚玉”是氧化铝好像
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn