《软件开发者的四大“看家本事”.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《软件开发者的四大“看家本事”

现如今,可供选择的技术、语言及平台可谓五花八门,因此作为软件开发者,要弄明白哪里是花时间培养个人技能的最佳投资点也就难上加难。   常常有人向我征求关于如何成为更强的程序员的建议。   人们问得最频繁的问题可谓万变不离其宗,即他们是否应该把时间花在某种与众不同的特定编程语言或技术上。   最近我花了很多心思琢磨此问题,并想出了一些我认为最要紧且能让你受益终生的技能,一旦软件开发者掌握了这些技能,不仅会给他们带来最佳的工作机会,还会使他们变得卓有成效。  技能一:解决问题(Solving Problems)   以前我曾谈到需要学会如何解决问题,甚至给出了如何学会解决问题的若干步骤,因为我认为这种技能对任何软件开发者都是至关重要的。   软件开发百分之百就是解决问题。   若毫无问题,就无需软件。   所有软件都被设计用于解决某些用户问题,而通用解决方案就是由许多能搞定的小规模问题所组成的阵列。   要是你不能解决问题,就不会精通软件开发,而你所用的编程语言或技术也就无所谓了。   在解决问题时,大多数开发者的表现简直糟糕透顶。   我常常会听到一些关于求职面试太难的抱怨,因为面试官会要求开发者去解决有一定难度的问题。   我谈过为何有难度的面试挺好,而其中的部分原因在于,面试官就是要测试开发者解决问题的能力。   我知道,许多开发者仍然不同意我对此问题的观点,而且他们也不明白像TopCoder[2]那样的网站为何要不遗余力地完善其开发技能,至少从我的亲身经历来看,那正是TopCoder解决问题的实践活动,而参与此类实践活动正是我职业生涯的转折点。   假想你是木匠。要想成为出色的木匠,也许你应该擅长切削木材。也许你应该亲手做过各种各样的部件,同时也用过许多不同的工具切削木材。   无论你的木工经验有多少年,抑或设计出的家具或橱柜有多漂亮,每次你也要想方设法切削木材,努力做出各个部件。   切削木材是木工活的基础技能,就像解决问题是软件开发的基础技能一样。  技能二:自学(Teaching Yourself)   在生活中,可能没有比学会学习更重要的技能了。   此种技能在软件开发中尤其重要,因为据我所知,任何领域的变化速度都超不过软件开发。   你不可能无所不知、无所不晓。甚至你都来不及投入时间去成为某一特定框架或技术的大师——因为事物发展得太快了!   反而,你需要这样的能力,即为完成手头任务而快速获取所需知识的能力。   要是你真想具备某种能让你在软件开发职业生涯中始终与时俱进的技能,那就学习如何自学吧。   提高此种技能的唯一方法就是付诸实践。走出去学习新的编程语言或技术,即使你认为决不会用得上它(也不妨学一下)。将来你会惊讶地发现,你竟然可以很快地把它捡起来,因为你早就对相关基础知识一清二楚了。   要是你能迅速适应日新月异的软件开发市场、以及与之相关的各种技术和平台,你就会拥有那些总是很抢手的技能。   尽管我对蒂姆·费里斯(Tim Ferris)的某些主张有点儿怀疑,不过他写了本很棒的书,名为《4小时变身厨师》(4-Hour Chef),其中介绍了若干如何快速学习事物的绝招。(我那时也正打算写本与此主题有关的书。)  技能三:命名(Naming)   要是有人问起我成天在做什么,那我八成会说“研读其他人命名的事物,以及给事物命名。”   诚然,若没人真那么问,我也不会真这么答,不过我的确有可能这么答哦。   软件开发就是在描述形而上学的[1]内容。我们所构建的大多数内容都是看不见摸不着的。   授权经理收到授权请求,然后发出授权响应,与此同时,用户资源库会调用用户工厂去组建新用户——我们必须根据以上描述在心中去构建起完整的环境。   每次你编码时,就是在给事物命名。当阅读自己或他人所写的代码时,你会从代码中的事物名称获得对代码的大部分理解。   通过在开发者亲手编写的代码中查看方法、变量及类的命名方式,大多数情况下,我能准确预测出开发者的技能水平。   要给代码中的概念及数据起合适的名字,而缺乏此能力的开发者就像个哑巴翻译。无论你能否明白某事,要是你不能妥善地解释它,那么此事会转瞬即逝。   提高此种技能的最佳方式就是不断实践。只要我在读代码时有所领悟,我往往会重命名代码中的事物。由于我开始明白某个方法到底在做什么,因此我会给方法改名,以便与我的理解相一致。在读代码时我会做这么做,即便代码没有产生任何逻辑变化,也照样会这么做。   你越关注给事物起合适的名字,你就会越擅长此道。   这也是你代码中最显而易见的一面。简单看一眼你的代码,很难分辨代码正确与否或效率高低,但如果代码能让我一望而知,那么我会认为你知道自己在做什么。  技能四:待人接物(Dealing with People)   尽管我把此

文档评论(0)

1983xuesheng + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档