从邮箱的订阅中看到的一篇英文文章,大致意思
在很多区分编程和专业编程的特点中,最臭名昭著的就是:最后期限
最后期限
当你为自己写代码时,你可以想花多少时间都可以,当是当你是给别的人写代码时,你是在有限的时间和资源的情况下让工作得以完成。依我的经验,这通常导致两种情况:
1.你不得不延迟最后期限以妥善的完成工作
2.你不得不写一些投机取巧的方法来完成工作
如果你专业编程过,那你就知道我说的是什么,只有很少的项目是足够敏捷到允许充足的时间和资源去完成工作,这导致程序员陷入艰难的选择中。
没有任何一个有自尊心的程序员想发布不完整的代码,但是始终如一的发布高质量的代码是非常难的,当同时处理时间期限,特别是工作环境中你同不需要知道技术债务的非程序打交道时。
幸运的是,你可以跟随一些指导来最小化你在最后期限压力下必须写的技巧性代码数量。这些并不是一定需要快速修正的方面,但是对一些需要不断日复一日推出一流代码的人来说一定有帮助
规则一:在写任何代码之前,建立好连续发布的环境。 从注重实效的程序员(程序员修炼之道)(当然每个程序员都需要阅读)中摘的。
连续发布是指,在你的项目开始编码之前,你需要建立一个系统,让你发布你的代码对哦产品中去(更适宜的分期和开发环境也一样),这种方法,在你写你的代码时,你可以安心的知道你的项目可以在任何时候发布。
在很多编程工作流中,这都可以减少非常多的开发时间。不同于将你的项目交给一些测试环境(或更差的,直接在一个运行的服务器上编码),你可以只是将你的大妈方到你选择的源代码控制系统中,然后让你的不断发布系统做剩余的工作。这看起来好像并不节省时间,但是如果你考虑到这些工作将花费的时间,一天又一天,拷贝你的代码,自动进行测试,每个月这将节省非常多的时间。
规则二:先写测试。
如过你没有听说过测试驱动开发(TDD),那先阅读下维基百科中的词条吧,如果有人让你写软件,给你一个最后期限,那么你在整个期间都需要实践TDD.
测试驱动开发的基本概念是在写项目代码签,你先写一些简单的测试代码来测试你预测你的代码需要实现的功能。例如,你的项目是要你写一个函数来实现两数相加,返回两数只和。在写任何一行功能代码前,你应先写一个测试函数test_add_two_number, 用来调用你的 add_two_numbers函数。
这看起来好像有点麻烦,但是这有许多好处
1.先写测试帮主你将应用架构弄的清晰
2.你可以安心的知道你的代码是可执行的
3.你可以很容易就重构你的代码而不需要担心破坏代码
4.你可以避免发布低质量的代码,让你的名声蒙羞
写测试当然需要时间和精力,但是在长期下可以节省时间并避免突然的bug调试,系统崩溃等等,特别是当你有很紧的时间期限时,你不希望因为到处潜藏bug的代码而感到压力和担心。
规则三:透明化。 透明很难得到(取决于你的工作环境),但是可以有很大的收益
为了能够透明,你需要保证你有一个很简洁的同客户沟通,给客户代码的方法。你需要定时让他们知道正在做什么,还有多少未完成。如果你可以不间断的将你的代码发布到分期系统中,其中客户可以看到未完成的项目,并且看到它如何一天天的改变将非常好。
如果你能够同你的老板之间相互透明,他们可能更明白为什么最后期限需要推后。非工程人员常常不明白软件开发,并且把它看成一个黑盒子艺术。通过维持清晰的沟通,以及同你客户之间的透明,让他们理解进度,他们能够更理解你的工作,而且他们也会为他们正在开发的产品感到更开心。
规则四:维护你的每日TODO列表。
时间管理当然超出了这篇文章的范围,但是我想提一下维护每天的TODO列表是你作为程序员所能做的最好的一件事之一,以来保证事情在任何时候都是往前推进的。
软件开发是一件庞大复杂的工作,它要求多年的练习,耐心和自律才能成为一个好的程序员,而且你需要不断的学习。当在有最后期限的情况下写软件,大部分情况都是如此,你你就是在写一个复杂的系统。为了保证你的头脑清醒,并且给你最大的编程能量,你需要维护一个每天TODO列表,包含当天需要完成的独立任务。
不要让诸如"调试声音问题"这样概括性模糊的任务,真正的好好想想,并且写下整个任务的各个步骤,例如:
1. 为load_soundfile函数是否可以播放mp3文件写单元测试
2. 为load_soundfile函数是否会加载wav文件时崩溃写单元测试
3. 写一个新的分函数,design_update, 来控制新的web设计模版
4. 使用新的web设计模版更新 style.css
有一个清晰的需要做的列表让你有能力在一段时间内专注于一个任务,而不需要保存下一步将做什么在脑中。写软件已经足够复杂了,不要让你的生活更加困难。
规则五: 做正确的事情
常有不确定的事情出现,让你紧张和不舒服。你昨天是否练习了,并且为你的新功能没有进行单元测试,当这些情况出现时,别跟着你的直觉走,而是做正确的事情。
你是否需要回去并重新看老的代码,多写一些测试用例,甚至推迟最后期限,作为一个专业的工程师,坚持发布工作代码是你的工作,即使这意味着你必须做艰难的选择。
阅读(388) | 评论(0) | 转发(0) |