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

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

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

IDF上的云计算故事 移动周报:百万年薪、微信疑云,老罗小马本周很忙 一个创业失败者的自述:我是如何搞砸一款产品 收入百万美元:一个放弃上大学的程序员 Cocos2D配Box2D:逆天小白程序员作iOS游戏 招聘移动开发,老板必问的10个问题 黑客用智能手机劫持和控制民航飞机 几小时即可使互联网瘫痪的黑客 现已加入谷歌 Tsar开源:淘宝内部大量使用的系统监控工具 五款超实用的开源SVG工具 微信收费事件背后被广泛忽略的技术细节 UIDesigner 3.0架构设计总结 黑客怒了:政府花930万美金仅做一款App Email服务迎来“第二春” 未来将更加个性化 贯穿应用开发始终的八大陷阱 微评微软也推智能手表:是追求未来,还只是跟随? Firefox OS今年6月在5国首发 不含美国市场 8086/8088汇编指令手册 下一个被黑客攻击的对象—无线路由器 Windows Blue开始按钮或将回归,你怎么看? Evernote推孵化器 不占股权 基于C++和Lua的移动游戏引擎Leadwerks 3发布 苹果秘密测试iOS 7与iPhone 6 或将6月发布 酷6 CTO 陆坚:请先信任你的程序员 从电信联手i-Free,看运营商渠道的加速整合 “Animory”开发者分享HTML5游戏开发经验 Appflood SDK:连接中国与海外App流量交互平台 Apache Subversion 1.7.9正式发布! 微软IE浏览器5大动向 加速吸引开发者 开源的简繁转换库OpenCC支持Node.js 继Opera之后,Adobe表示将支持Google Blink update 的问题 急!IIS连接不上 装上JDataConnection Server之后,在数据源ODBC中的驱动程序列表中没有JDBC驱动算不算问题,高分求解! 短消息服务提供商(SP)程序问题 activeX控件问题,急盼高手帮助! 请教八数码难题的解法! 如果一个dll,在它里面有一个窗口,而有一个函数是这个窗体类的一个函数,那么如果在使用这个dll文件中的这个函数。 谁能给一个测试是否是EMAIL的函数?急! 如何实现关键字查询? 只能让家里的电视出现更多的台,比如解码器什么的! 急问:那位了解 sys/wait.h ,它的功能是什么? 求MICROSOFT VISUAL STUDIO.NET 2002 中文企业版,2003不要,谢谢~ saucer(思归)在吗?有问题请教! 哪里有C++ Builder 下载的。 TTrayIcon中的图标颜色只能显示16色的吗? HELP!!!XML怎么写成物理文件到本地? 这是为什么呀?电脑高手请进。。。 也说技术人员创业 高分:虚拟主机问题 快被OVERLAY搞死了,急救 中了“盗贼”木马,如何删除? 请网络高手来看看这个问题,给我点提示和建议?急急急 汉字在exe 文件的十六进制 能否 转换得来? 气死人了,在jbuilder8中被logic:iterate搞死了,累,急救 pb数据窗UPDATE的怪问题!很怪!!! 配置问题求救! 请问Access中可以用select case ........when else end的函数吗? 一定要把AutoPostBack设定成true才能响应事件? 但是那样动态生成的控件又都没了…… 急 哪位知道哪有OpenGL高级编程的培训 短消息服务提供商(SP)程序问题 那里能弄到解码器~~~~~~~~~~~~~~~ 马上就要毕业了,请先辈们指点迷津!!! 安装 Duwamish 7.0 和 PetShop 3.0 时的问题? 一个二维数组的问题,请指教 tdbgrid 锁定行,使改行不可编辑 能否实现这样的功能:如果是A登陆,则可以看见一个按钮a;如果不是A登陆,则按钮a不可见。 本人查看过往的薪水调查的贴子,看到大多数人都在贫困线(2K)下,这JSP技术已经没什么钱途了.转向吧! rm格式的文件不能正常播放用什么软件修复呢? 请问用java编好的软件,如何打包发布呀?急~~~ 怎样在对话框里设置背景图片? 帮帮我!我弄了好久拉! 请解决了clientdataset的filter中使用like过滤中文单汉字的高手进来解决一下 如何禁止菜单栏“窗口”项中的窗口列表 如何用xml显示,从数据库图像字段中导出来的图片信息,显示为图片!代码如下... 紧急求助:CSocket的问题 请教:程序先往一word模板中写入数据,word显示出来后,不允许修改,怎么能实现?(在线等待) 可不可以告诉我操作系统里的LPVOID当我在C#中调用API时应转化为哪个类型? boot.ini文件找不到了 再请大家告诉以下连接数据库的问题,为什么总是连不上?!!!! 6711和6211的区别!!!!!!!! C#中如何在代码中实现窗体上所有相同控件的属性赋值,给个示例代码 请问不等式组左边是负号变号还是不变,右边呢? 清末铁路发展的特点是什么?为什么说川汉保路运动打倒了一个王朝?概括新中国铁路建设发生的变化?及原因 花美在外表,( ) on the contrary contrary pulsatile point 这个是健康评估中的名字解释,顺便给下中文的名词解释更好, 椭圆焦点的求法我想弄个半椭圆高24长75 想求焦点离原点(中心点)有多长 请问red sandlewood museum 的中文翻译是什么? 春天为什么要修减树枝? 同志们,问个问题,花儿对森林说你真好,小草对森林说你真勇敢,你想对小树说什么呢? How much do you have in change?为什么不说:How much change do you have 物体水平撞上水平固定弹簧后反弹.已知弹簧劲度系数,物体初速度,不计一切外力,如何求从接触到离开这段时间? 美媒称奥巴马支持率跌至新低 挫折积累朴槿惠称决不容忍腐败 要求根除核电腐以色列军方在约旦河西岸射杀一巴勒斯坦《福布斯》主编:普京因在外交发挥关键土耳其欧亚海底铁路隧道运营第一天就突日本一对夫妇因弃婴被捕 交代称已扔掉研究称英国社会阶层八百年来几乎未发生外媒:西班牙家长送小孩学汉语 称就业德国议员差旅费暴涨达688万欧元 媒法国表示希望参与新加坡扩大地铁网络计1990至2010年北半球平均气温或初恋这件小事慕容莹:10月14日现货原油白银走势拼车在中国有戏吗?可以怎么玩?品牌创新之路:新的心意,真的新意!高颜值的雪冰发生了意外!!!垂直电商对成人用品行业的“情趣颠覆”“高智商高级时装”—Sharon W艺术家笔下的解刨学:) 【重口味,非万达、金逸争抢院线第一股是什么让你逐渐变得一事无成?请对号入写在5.28暴跌之后:识透交易心理,至尊邪皇绝世狂宅邪之左手野蛮天才煞星洛临我的变形金刚太平天国妖师路不死神心苏菲的异界绵阳人民公园旅游雅鲁藏布江旅游绒布寺旅游满拉水库旅游猴岛旅游北洋海军提督署旅游甲午海战纪念馆旅游龙爪山旅游三仙山旅游中查沟旅游小经厂胡同旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘