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

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

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及几乎所有目前可用的跨平台解决方案创建了应用程序。他不仅热衷于敏捷开发,而且他正忙于一场个人改革运动,以便化繁为简。

SDCC 2015:顶尖技术精英云集 大会日程及首批讲师议题公布 《近匠》专访猿团创始人CEO谢恩明:梦想、未来、改变 《近匠》专访小熊尼奥:从软硬结合到IP合作,AR产品的机遇 W3C启动Web支付标准工作,推进在线结算流程 W3C中国区会员沙龙在京召开 W3C CEO Jeff分享W3C未来发展重点 【SDCC讲师专访】车轮互联总架构师韩天峰:PHP是最好的编程语言 SDCC 2015讲师专访精彩集锦(一):你想知道的,都在这! (入门篇)带你走进Erlang 【大神来了】Elixir语言设计者José Valim:释放Erlang VM的能量 【SDCC 2015讲师专访】刘小溪:Vert.x3的异步框架实战 【CTO讲堂】支付接入开发的陷阱有多深? 程序员界“香饽饽”、大神级别人物集体亮相——SDCC 2015编程语言专场议题曝光 【CTO沙龙】CDN在共享经济下的创新应用 深入浅出Fetch API 带你入解应用场景及适用问题 SDCC 2015讲师专访精彩集锦(二):途牛网、饿了么、快的等大牛都来了 百度、饿了么、美团专家齐聚SDCC2015,剖析前端开发核心技术 【SDCC讲师专访】百度乔刚:前端可视化难点分析及探索实践 【CTO讲堂】Growth Hacking背后,数据分析平台的架构调整 BAT、巨杉、南大、柏睿等齐聚SDCC—新一代数据库专场议题曝光! 《近匠》BeeCloud创始人黄君贤:三行代码集成支付的技术实现 【SDCC讲师专访】AdMaster技术副总裁卢亿雷:分布式数据库挑战与分析 tvOS真的代表了应用的未来吗? 使用Fetch API和ES6生成器构建异步API Android应用性能优化实践 华云数据:OpenStack的技术践行之路 【SDCC讲师专访】腾讯潘安群:腾讯云金融级数据库TDSQL分析 高颜值、高品质——安全技术论坛议题曝光! 移动应用开发者正饱受折磨 在Android平台上加载本地库的危险性 《近匠》程序员客栈,程序员背后的经纪人 【CTO讲堂】浅析工业级物联网项目的快速开发 关于WindowsNT4.06安装的问题! 我太高兴了,太喜欢这里了 谁帮我把这个帖子加点分啊~~~(女士优先!) 送分题:怎样在退出程序时一次卸载内存中的所有窗体? 怎样上送软件到csdn 谁有比较快的新闻组服务器的地址? 如何找到各种系统图标?(VC) 姐姐的信(也是以前的) 请问,谁手里有PERL的表单提交程序?(不要能让访问者看的见的) vivianchou@eyou.com 我所遇见的招聘题。。。555 怎么回事~? 参天无眼!!我所遇见的招聘题呀,你。。。55555555555 哪位知道象windows优化大师那样的平面按钮控件。 c+vc+vb+java+delphi+>>>>=工作? 怎么得分呀? dos下的Tcp/Ip协议应用 白痴,笨蛋,神经病之差异(转贴) 测试(大家都不许进来,只是测试,注意,只是测试) 请大家说一下哪个代理注册的网站收费比较底,而且服务又比较好的,谢谢! 在asp中如何实现记录集与编辑框、table表等的数据绑定,给个思路也行。着急呀 [-------大虾帮忙啊--------] bcb中缺少的帮助文件能否再添加? 在哪里可以找到关于sybase的资料 哪位仁兄知道如何打包delphi开发的sybase客户程序,最高78分奉送 一个关于OnDraw()的重绘问题,急急急急急急急! 新手的问题! dll调问题???VB调用VC++的DLL需要返回值时,DLL如何定义?VB调用函数如何定义??? 各位大虾 谁能提供视频采集卡的原代码,必须要CB的,300分 在堆(heap)上与在栈(stack)上建立的对象有什么区别? 一个问题,在做元件时怎样建立TdateTimePicker 给大家看看我弟弟给我的信 求助,标题栏为“The police are investigating the robbery-"的是什么程序? 谁能将.CPP文件的代码翻译成DELPHI语言?? 有关于FLASH5.0的问题!!!请各位大吓指点! 一个问题,怎样在PC:PageControl上增加TabSheet1,TabSheet1,TabSheet1…. 标题栏为“The police are investigating the robbery-"的是什么程序? 一个弱弱的问题 一个问题,建立的 FB: TBevel没显示,好象根本没建立一样。 如何在 MDI CLIENT 中添加快捷方式??谢谢!! 55分,如何映射控件中子控件的消息? 如何选择书 关于文献数据库的一个问题-如何把一个字段和一个文件关联起来? 所有喜欢到水园来逛逛,但是从不回帖子或很少回帖子的人进来签到~~~~ 谁来救救我呀,我好惨呀。。。。 如何通过VC编程,随时关闭网络端口 诚寻对嵌入式linux感兴趣的网友 今天临走前,再灌一桶酒! 急!!!哪里可以下载到制作工具栏时用到的位图呀? 太原的在哪能买到程序员杂志 我的qq:10120129 谁找我??? 1.234.56789.10111213141516按规律填数字 3,2,3,7,18,( ) 括号填什么? 全世界北纬18度的度假胜地有哪些. Excel的H列至N列下一行的数字提取H、I、J、K、L、M、N列的一行中只要H列有26,N列有32,下一行中如有数字,就提取到O、P、Q、R、S、T、U列中,如无数字,就用0在O、P、Q、R、S、T、U列中表示(如图所 1 234 56789 .2010在第几排第几个 2 2 0 7 9 9 ()括号里的数是18,请问是怎么得到的, excel中有一列数据,怎样每隔5行取出一个数,生成一列新数据? 根据数字关系,括号内的数字应填( ) A.90 B.135 C.63 D.150 东经110度北纬35度是哪里 在EXCEL表中有两列N行数字,设第一行分别为A、B,第二行分别为B、A如果有N行数字,要如何剔除包括A、B的其中一行数字?即要筛选A、B对应的唯一关系,不分A、B的左右排序~ 66.83.102.123.146.()推理 东经140度50分,北纬35度44分一个小说里写得 excel怎么倒叙排序?就是A列按...5,4,3,2,1这样排序,往上拉数字依次变大.还有,我想插入N行有什么方法不用在格式里点插入 行,那样一个一个的插很麻烦 -1,10,25,66,123,( )括号里应该是什么数字啊? 某地位于北纬35度,东经163度,该地位于( )A.高纬度地区 B.中纬度地区 C.热带地区 D.低纬度地区上题中该地可能处在( )①东半球 ②西半球 ③南半球 ④北半球A.①③ B.②④ C.②③ D.①④ 如何在excel统计表中,统计表格中出现数字的个数及每个数的数量,例以下9 19 25 27 32 33 112 8 11 13 24 31 151 8 10 13 25 33 133 7 10 14 30 33 1011 18 19 22 23 28 15 7 17 23 27 29 7是出现每个数字的个数,而不是总个 123%66^78-768=? A点东经120度,北纬44度,所在时区是( )区,B点东经90度,北纬35度,所在时区是( )区 excel 频次表 如下图的一个表格 我想统计所有数字出现的频次 怎么做好 最好详细点 谢谢A B C D E F 333330313131282929342733273029333 1(2)、(4、6)、(8、10、12)、(14、16、18、20)、……中,第100个括号中所有数的和是多少? 东经118度12分~119度36分,北纬32度43分~34度06分适合种植人参吗? 如何将EXCEL表中单元里的公式计算出来的数变为纯数字?如题. 20,20,10.18,16,8.25( ),( ).( ),28( ) 我实在不会做,快 想知道:中国 北纬24度,东经118度 在哪 将正偶数按下表排成5列,根据规律,2000在?2 4 6 816 14 12 10 18 20 22 2432 30 28 26 A.第125行第1列 B第125行第5列C.第250行第4列 C第250行第2列 2,5,20,12,-8,(),10 括号里面是什么数字啊? 北纬32度20分 东经119度45在哪个地方 将正偶数按下表排成5列若干行,根据上述规律,2010应在第1列第2列第3列第4列第5列第一行2468第二行16141210第三行18202224第四行32302826……………………………… 把10.20.30.40.50.60.70.80分别填入括号内使每5个数之和等210怎样填 24度03分北纬118度16分东经在哪里? 杨辉三角是一个由数字排列成的三角形数表,一般形式如下:杨辉三角是一个由数字排 不含“欧洲中心论”偏见的精神尤为难能可贵,值得后世永远敬仰、效仿. 把5.10.20.30.40.60.分别填在括号中,使每条边上的三个数的乘积相等. 东经114度北纬32度是哪里 杨辉三角第五行第五行的数是1,5,10,10,5,1 那 第五个式子应该是什么呢 有点晕. 5,10,20,36,( )90 括号内填什么? 北纬27度是一条奇怪的线吗? 杨辉三角 第五行规律用ab表示 )=2分之5=30/( )=30分之( )=( )(这个括号填几分之几 ) 北纬27度在哪?我知道在哪了!在贵阳,是产烟草的。 将杨辉三角形中的奇数换成1,偶数换成0,得到如下图所示的0-1三角数表,从上往下数,第1次全行的数都为1的是第1行,第2次全行的数都为1的是第3行,...,第N次全行的数都为1的是第( )行;第61行 5 8 12 16 20 () 30 36 52 括号里填多少? 东经113度北纬27度是什么国家 在杨辉三角第五行中,除两端的数字1外.在杨辉三角第五行中,除两端的数字1外,行数5整除其余所有的数.你还能找出具有类似性质的三行吗?这时的行数P是什么数? 按规律填数46 95 0 ( ) 33 18 7 括号中填几这个数个位上的数比十位上的数大5,而且比50小. 用什么规律来填的, 东经117度北纬27度是什么山脉 1 -2 3 -4 5 -6 7 -8 9 ---------------------------------按着这样的顺序,第十行从左数,第九个是多少1-2 3 -45 -6 7 -8 9---------------------------------按着这样的顺序,第十行从左数,第九个是多少 找规律(3.8.18.33.53__,__)快!,为什么?i am primary student 东经109度 北纬35度是啥平原很确定吗 如图中数字排列;则第10行第3个是()第n行第2个是() 第一行;1第二行;234第三行456789第4行10 11 12 13 14 15 16 5×9+15÷3-2=18使等式成立(加括号) 东经121°北纬38°是什么地方 将自然数如下排列,那么15125这个数应排在第几行的第几个?1 234 56789 10111213141516 加括号使等式成立3.6+2.4*3+1.5/2=18.75 北纬42东经38.76是什么地方 第一排是1,第二排是234,第三排是56789,问100在第几排第几个 18÷2×3+6=1 加括号,使等式成立! 东经122北纬38是哪里 1 234 56789 .表中第8行的最后一个数是(),它是自然数()的平方,第8行共有()个数. 2,2,7,18,31,90,(),括号里应该填?a.57 b.69 c.86 d.79 北纬50.38° 东经30.49°什么地方
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn