如何成为一个伟大的开发者(一)

作者简介:Peter Nixey,Ruby on Rails程序员,前计算机视觉学者、企业家,Clickpass公司CEO,YC孵化器的企业规划导师,Brojure公司CTO。

作为一个开发者,最关心的不外乎提高自己的软件开发水平。那要从何做起呢?积累技术知识(比如Node或者No-SQL)?死磕那些经典的算法问题(比如气泡排序或者网址缩短)?或者是打牢基础?

作为一个程序员你的价值不是由你知道什么来衡量的,而是由你能做出什么来衡量的。两者看起来相似,但有着天壤之别。你的价值在于如何将项目不断向前推进,并带领团队一起进步。15年的开发生涯中,我从未需要去实现一个气泡排序算法或是网址缩短程序。我要做的是花成千上万个小时来编写和重构账户管理工具、邮件系统,编辑套件、测试套件,整理业务逻辑,部署脚本、JS层,进行架构分析以及文档管理等等。这些才是真正有意义的东西,完成了这些我们才能迈上新台阶。

开发这些组件,就像搭建项目的一砖一瓦,需要花费几百上千小时的努力来琢磨。它们组成了复杂的系统,但它们本身却保持简单。软件之美就是“简单”。这些年的经验让我悟出的道理是,把时间花在编码和重构上,这比纯粹靠“才华”和空想更能实现目标。

执行、完成任务然后迭代,才能实现软件开发“简单和高效”的目标。深植于我们脑海深处的关于创业的宗旨,就是先构建基础,然后迭代。软件开发亦是如此。先开发一个粗糙的版本,然后重构、修补错误、精简。要得到结果,你得老老实实去写代码!去执行!

一些聪明的懒人,总是炫耀自己的才华,让同龄人为之惊叹。但一个公司这样做是不能成功的,伟大的产品不会靠吹嘘而来。公司要依靠的是那些起早贪黑、团结协作、踏实编码的人。吹嘘容易,实干不易,且行且珍惜。

业界一直存在这样的误解:一个商业公司要完成伟大的产品,需要靠那些小圈子的名人怪咖。可在现实生活中,这样恃才傲物的一小部分人虽然在感兴趣的方 面有着惊人的才华,但与团队相处很不融洽,工作起来也很不沉稳。他们不仅没有实际成果,自以为是的优越感还会影响团队的氛围。他们总认为自己天赋异禀,想 干才干,爱干才干,但他们影响了团队,还会扭曲其他人的价值观。

要成为真正伟大的开发者,应该从实干做起,遵循以下准则。

规范的函数和变量命名

难以置信,在编程中这是如此简单却又如此重要的法则。清晰的函数命名,常常伴随着清晰的逻辑实现。例如:

def process_text string
…
end

这样的函数命名方式完全不能传达出来函数的功能是什么。而:

def safe_convert_to_html string
……
end

这样的函数命名方式,准确反映出了函数有且仅有什么作用。

除了“转换文本到HTML”之外,可能有开发者愿意实现其它功能,例如自动嵌入视频等,但通常这是不需要的。清晰规范的函数命名不仅能让人一眼看出 它能做什么,也能让人知道它不能做什么。良好的命名规范可以提升代码可读性,让代码间关系更加清楚明白。不规范的命名,常常伴随着混乱的代码、BUG、糟 糕的逻辑。

规范变量命名也同样重要,例如:

if (u2.made < 10.minutes.ago)
&& !u2.tkn
……

这样的命名方式很难让人读懂,即便读懂了,也很难保证完全了解的作者的意图。这个变量命名很糟糕,不能传达任何信息。而且“并且不 (&& !)”这样的语句本来就非常晦涩难懂,更别说在语句后面还跟着一个名词了。如果有人要重构这段代码的话,恐怕需要先费尽脑子搞清楚原作者是在干什么。如果 将变量命名规范化,情况会很不一样。

if (new_user.created_at < 10.minutes.ago)
&& !new_user.invitation_token

……

当然,变量命名太过画蛇添足也不行。例如我们将这段代码,进一步注释成这样:

user_is_recently_created = user.created_at < 10.minutes.ago
invitation_is_unsent = !user.invitation_token

if user_is_recently_created
&& invitation_is_unsent
…

user_recently_created,这个变量命名实在是浪费时间来解释显而易见的东西。

就像DHH说的那样,注释是个麻烦的东西,一旦逻辑改变,注释也要改变。如果代码能好的反映自身逻辑,便不需要注释。

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-08-03 08:51:35

如何成为一个伟大的开发者(一)的相关文章

Flash如何成为一个合法的iOS开发者

  iOS开发者的申请流程 如果你是一个开发团队,在你打算掏腰包购买iOS开发者授权之前,最好先问一下你的同事,是否已经有人获得了开发许可,因为一个开发许可一年内最多可以授权给111个设备来开发测试.如果你没有授权许可可以借用,或者你打算最终在iTunes Store中以自己的名义发布你的应用,那么就准备一张国际信用卡,准备支付99美元来申请一个iOS开发者授权. 点击下面链接进入Apple Developer Center http://developer.apple.com/ 点击页面左边中

一个大神开发者的使命感究竟应该是什么

我们现在工作的行业很奇怪.明明每年都有新的从业人员涌入人才市场,但企业依旧诉苦自己迫切需要大量的开发.这种问题存在已久,而且已经越发严峻. 开发者这个行业非常年轻,也面临着很严重的人才短缺问题.大部分的软件开发项目无疾而终,原因是后期开支过于庞大.那些行业里的大佬是怎么建议我们的,他 们说「世界上永远存在解决问题的办法,但我们还是会遇到各种难题.因为除非我们真正去尝试解决,否则永远不知道哪种方法奏效.」 认识一个现实吧,当你从事开发工作三年以上,就可以称呼自己为「高级开发者」.但实际上,有些人只

AForge.NET是一个专门为开发者和研究者基于C#框架设计的视频录像

原文:AForge.NET是一个专门为开发者和研究者基于C#框架设计的视频录像 AForge.NET是一个专门为开发者和研究者基于C#框架设计的,他包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,模糊系统,机器人控制等领域.这个框架由一系列的类库组成.主要包括有:AForge.Imaging -- 日常的图像处理和过滤器AForge.Vision -- 计算机视觉应用类库AForge.Neuro -- 神经网络计算库AForge.Genetic -进化算法编程库AForge.M

一个手游开发者摸索出的渠道联运经验

文何峰(欢迎添加和风笔记微信号:fengnote)近日我和欢乐之旅的CEO史蔚安有过一番交流.他06年进入手游圈,在掌上明珠做过首席策划,08年出来创业苦逼数年,做的二款手游都不成功,不过今年发布的手游<天朝小将>算是熬出头了:内地运营四个月月流水在三四百万,也正在做中国台湾.韩国市场,还会推iOS版,希望年内月流水过千万.这是一款处于上升期的手游,也可能会是第二波手游明星之一.当然,这并非我要说的重点,<天朝小将>如何与渠道合作才是本文主题.史蔚安介绍说,他们除了自己直接与一些一

50个jQuery 插件可将你的网站带到另外一个高度 - WEB开发者

来源:http://www.admin10000.com/document/4551.html#jtss-hi

[译] 如何从一个业余爱好者成长成为专业开发者

本文讲的是[译] 如何从一个业余爱好者成长成为专业开发者, 原文地址:How to Go From Hobbyist to Professional Developer 原文作者:Ken Rogers 译文出自:掘金翻译计划 译者:zaraguo 校对者:SareaYu DeadLion 如何从一个业余爱好者成长成为专业开发者 几年前,我正处于园林设计工作和餐馆工作两头跑的状态中.那时我刚离开大学校园,不知道未来我将靠什么为生. 我有许多想法,却毫无方向.在那段时间里,我开始自学编程.起初这只是

[深度好文]想成为一个高效的Web开发者吗?来看看大牛分享的经验吧~外加一些自己的理解

前言: 无意间浏览到此篇文章,发现这篇文章无论是对于新手程序员,还是学过几年的程序员,都是挺有帮助的.于是,在此分享,后面也有我自己的一些理解,希望能帮到更多的朋友. 作为一个软(ku)件(bi)工(de)程(ma)师(nong),你有没有觉得做什么事都没时间?没时间学习新东西,没时间去回顾.整理原来写的烂代码,没时间写单元测试,没时间给接管你项目的家伙写文档,没时间思考,没时间喘气,没!时!间! 额--如果你肯花点时间看看这篇文章,我相信你会明白应该把时间花在哪. 我曾以为成为一个技术大牛的唯

“一个网络”,两种口味:响应性对适应性

来源:GBin1.com 编者的话:这是Mobify的CEO,Igor Faletski发表的一篇博文,Mobify,电子商务优化平台,为智能手机和平板电脑提供了适应网站的工具. 你可能听人说过,"我们生活在后电脑时代".这对网络开发者而言意味什么?它意味着你的网站,有30%到50%的流量来自于移动电子设备.它同时意味着,不久之后,桌面用户或者笔记本电脑用户将会成为网络的少数派. 面对这样用户模式构建的转变,我们又要如何应对呢?我们已经跨越了m-dot或是t-dot时代,步入了一个由响

【译】前端开发者的基本要求

原文链接:http://rmurphey.com/blog/2012/04/12/a-baseline-for-front-end-developers/ 本文在github上的链接:https://github.com/chyingp/blog/issues/1 备注:第一次翻译技术文章,标题都纠结了好久不知道肿么翻译,如发现翻译不当之处,可点击github链接提交评论,thx- 前几天我为一个项目写README文档,我希望其他开发者能够看到这个项目,并从中学到一些东西.突然我意识到,若放在几