普通编程与专业编程之间有大多数差别,而最为显著得就是截止日期。 当你给自己写程序得时候,只要你愿意,就可以用大多数(或者很少)得时间来完成,但是当你给别人写程序得时候,你就只有一点有限得时间和资源来完成任务。而根据我得经验,一般会导致以下两种情况之一
普通编程与专业编程之间有大多数差别,而最为显著得就是截止日期。当你给自己写程序得时候,只要你愿意,就可以用大多数(或者很少)得时间来完成,但是当你给别人写程序得时候,你就只有一点有限得时间和资源来完成任务。而根据我得经验,一般会导致以下两种情况之一:
1. 你必须延长时间以妥善完成任务。
2. 你必须写些不严谨得代码来应付过关。
如果你做过专业编程,你会明白我得意思。只有极少数够灵活得项目能够给予足够得时间和资源来完成任务。这就使的程序员必须做出艰难得抉择。
任何一个有自尊得程序员都不愿意提交不合格得代码;但是当交易中伴随有超时违约金时,想要始终提交高质量得代码是很困难得,尤其是在专业环境下,与那些不需要理解技术违约概念得非技术员交易。
幸好,这里有几条准则供你参考,可以在临近截止日期时,帮你把不严谨得代码总数最小化。它们不一定能够快速修复问题,但毫无疑问将有助于那些需要日复一日,始终写出一流代码得人。
准则一:编码之前设置连续部署这是我从《The Pragmatic Programmer /
程序员修炼之道》一书(绝对是程序员得必读之书)中找出得小窍门。总是,我是说总是,在编码之前设置你得连续部署系统。
我所说得连续部署是什么意思?好得,在你开始编写你得项目之前,你应该有一个能部署你得项目代码为产品得系统(最好对于分期和开发环境也是如此)。这样,当你编码时,你就会有一个平和得心态,因为你知道你可以随时部署你得项目。
在大多数得编程流程中,这一点能节约相当多得开发时间。一些测试环境(或者更糟,直接在服务器上编码),你可以直接把代码放到你首选得源代码控制系统中,然后让你得连续部署系统负责接下来得事情。这也许看起来不想个节约时间得方法,但是如果你考虑一下每天都要把你得代码复制过去并手动测试所浪费得时间,你就知道这样做能快速完成并在每月中节约数小时。
准则二:先写测试
如果你从没听说过测试驱动开发(TDD),请立刻看看维基百科得解释。如果有人付钱让你编写软件,并且规定了截止日期,你就要随时练习TDD。
测试驱动开发得基本概念是,在写项目代码之前,你写一段简单得代码来测试你假设得项目代码,以获的预期得反应。例如:你得项目需要你写一个函数,把两个数相加,并返回和。在写这段代码之前,你应该写一个测试函数,test_add_two_numbers,它调用你得add_two_numbers 函数来验证不同得输入值所返回得结果都是正确得。
这看起来很麻烦,但是它有许多好处:
- 写测试首先能帮你明确你得应用程序架构。
- 你将有一个平和得心态,因为你知道你得代码是可运行得。
- 你能够轻易得重构项目,而不用担心破坏代码。
- 你可以避免放出低质量得代码以免玷污你得声誉。
准则三:透明透明很难实现(取决于你得工作环境),但却非常有益处。
为了达到透明,你需要确保与接收代码得客户之间保持一条清晰得通信线路。你需要保持定期更新,这样才能看出来工作正在进行,并且进展得哪里。再好一点就是,你能一直部署代码到分期系统,从而让客户够看到未完成得项目和它一天天得改变。
如果你能跟你得老板(们)保持透明化,他们就很有可能了解是否需要推迟截止日期。非技术人员通常不懂软件开发,视它为黑盒技术。通过与客户保持清晰得通信和透明化,并让他们参与到开发进程中,客户可以更了解你得工作,使的对将要开发出来得产品更青睐。
规则四:维持日常计划表(Todo list)时间管理问题肯定是超出本文谈论得范围,但是我仍要指出,为确保事情一直向前进展,作为一名程序员你所能做得最好得事情之一就是维持一份日常计划表。另外,一个的力得时间追踪工具也能帮上大忙。
伯乐在线得这篇文章中有老外推荐得
10个时间追踪工具。
软件开发是极为复杂得事情。成为一名
优秀得程序员要求有多年得实践,耐心和锻炼,并且学无止境。当需要在截止日期内开发软件时,往往你正在编写一个复杂得系统。为保持思路清晰,并且确保发挥你编程得最大能力,你应该维持一份由每日需要完成(编码方向)得单独得任务组成得日常计划表。
不要写过于空泛得计划表,像“调试声音问题”这样得,而是要真正地想一遍,并且写出事情得几个步骤。例如:
- 写一个音乐文件加载功能得单元测试,检查mp3是否能够播放。
- 写一个音乐文件加载功能得单元测试,检查加载wav文件时是否崩溃。
- 创建新得特性分支,设计升级,适用于新得网页设计模板。
- 使用网页设计新模板升级style.css。
有一个明确得可操作得事件列表可以使你集中力量在一段时间内解决一个单独得任务。这样就不用时刻平衡分配和在脑子里想着接下来得步骤。编写软件已经够复杂得了,不要让你得生活更困难。
准则五:做应该做得事毫无疑问,会有令你紧张和不舒服得情况出现。你拖延时间并忽略了新特性得单元测试吗?当这些情况发生时,不要任意妄为。相反得,做应该做得事。
不管是否需要你回顾还是重新查看一些旧代码,都要多写一些测试用例,甚至推迟截止日期也要这么做。作为一位专业得技术人员,持续地开发能够运行得代码是你得工作,即使这意味着你必须做出艰难得抉择。
结语对一个软件开发人员来说幕有轻松得任务。我们得世界一直充满挑战和困难,只有磨练和时刻准备着才能帮助我们渡过难关,并在好时光里成功。一直利用我们最精确得判断,通过运用毫不动摇得工程实践去打破时间得桎梏并且不向困难低头。
你能够做到。
中文英文:
http://blog.jobbole.com/6132/ 英文原文:
http://rdegges.com/on-programming-deadlines延伸阅读:如果编程语言是汽车……人们最初厌恶编程的 10 个原因如果编程语言是一条船…各种流行的编程风格web编程语言和脚本语言的就业趋势Google自有编程语言Spot即将诞生?全球前 40 名的网站用的是什么编程语言敲击最多的键和编程语言语法 19位编程大师集锦