我眼中的软件开发

这篇文章是受启发于要求我写一些设计和spec的文档的面试要求。趁这个机会整理整理自己的思路。

什么是软件开发呢,最常见的一种说法是,软件开发是一门艺术。我觉得更现实的讲,软件开发应该是一种生产。跟其他所有的生产一样。要考虑成本和收益。收益 这块,跟其他很多外部因素相关,对开发者或者说开发者的管理者来说无法控制,开发者从职业的角度出发更多需要考虑的是成本。这也是我们职业的目标。

软件这种产品的生产,材料本身的损耗也就是电脑,电费,基本属于沉没成本。不会因为咱们任何努力而改变。(也不是完全不能改变,只能是变多。。。。)那 么,最大的成本损耗在时间上。一方面,程序员都属于高薪人士(相对,相对)。每一天的损耗都意味着大量的钱打水漂了。另一方面,随着时间的推移,商业价值 在降低,风险却在增加。

对软件开发来说,需求实现速度,应该说是很重要的,但是实现速度本身并不是考量的标准单位。作为最大成本考量标准的时间,从对她的消耗来看:除去简单的功 能点实现需要,需求的变化浪费的时间则更客观。而无数实例证明,我们在需求分析阶段投入时间诚然可以减少需求的变化,但是并不能达到我们满意的高度,所以 对需求变化的反应也是我们的重要标准。

敏捷这个词,我觉得非常好。做为一门方法学,从名字上就说明了软件开发需要关注的两个重要的点:需求实现速度和对于需求的反应速度。当然,说到这里有点虚 了。我想,回归到不太实际的本质,能更好的指导我们的实践。Rails框架为什么这么火热,恰恰因为它做到了这两点。我们想想,为什么要设计?我读过让人 舒爽的代码,也读过看着让人想吐的代码。抛掉个人的感情因素,这两种代码有什么区别呢?大部分让我想吐的代码里出现的是一些重复的代码,看起来稍有不同, 却不肯费点心思除掉这些“坏味道”。重复代码的问题在哪里呢?最大的问题就是随着代码量的增多,工作量的与日剧增。维护量也会增大。而且,复杂度绝对不是 O(n)。其实我常常觉得,我们最早学程序的时候要学算法与数据结构。其实这个课程很早就告诉了我们编程最重要的两块:算法,结构。好的设计就是好的结 构。可扩展,可维护,最起码,可以分工。

好的设计可以大量的减少代码。减少代码就意味着成本的降低。也就是文初说的,我们职业的目标达到了。但是现实往往不是那么美好,虽然我们有很多OO的设计 模式,我们有很多最佳实践。但是在现实中,我们往往需要妥协。一般是三个原因:性能、稳定性、各种接口,在左右着我们。其实,很多时候,这也是最考验一个 程序员的功力的地方。如何在这三个沼泽上跳舞,才是软件开发真正可以被称之为艺术的地方。而怎么做,则只能靠一行一行的代码锻炼,一篇一篇文章和文档整理 经验,没法一句半句说得清楚的了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值