软件编程精髓:开发者需知的十项真理 二
5. 项目发生变化不可避免
一位经理人曾告诉我有关他的秘密,他总是面带微笑并告知他的团队,他很热爱他们所作的事情即便是有危险的,在他走出门的那一刻,他会说“哦,还有一件事”。那个弧线球部分覆盖了该项目,并要求大家重新设计应用程序。意思说作为一名管理者首先你得肯定团队的工作能力。
项目范围的扩张程度直接体现了这个项目结构的最终成果。经理人总是使出全身解数来清算报表,首先他们构思出一个伟大的梦想,建立一个经济结构模型来证明他们需要多少投资预算。
开发者们辛勤付出后,将劳动成果呈现在经理人面前,你的经理人什么也没做反而担心:这个按钮是在正确的位置吗?日志页面看起来有什么不同之处?即便是轻微的意见,它也改变了我们最初的需求,不是吗?
6. 没人理解你——尤其是老板
有两种程序员:一个是按照老板指定的计划进行工作,没有任何计划,也不知道如何努力编写代码;另一种是以程序员方式全身心的投入工作,努力编写出色的代码。
你的老板永远不会理解你或者你的工作,他们关注的是当业务发展遇到瓶颈时刻时你能否给出一个出色的解决方案,而不是你解决了计算机芯片等某种问题。
如果你的老板知道如何解决问题,他会留下来并将问题解决。因为他知道与你交流,刨根问底要比实际操作花费的时间要多的多。
7. 隐私权是一种痛苦
我们希望我们的服务能够保护用户以及他们的信息(隐私问题),同时又希望网站能够简洁易操作,我们希望能用最少的点击数来达到用户想要的目的。
隐私意味着你要多挖掘几个问题,这样才能确保控制信息扩散,然而这样也就意味着我们需要有更多的点击数。隐私也体现出一种责任,如果用户不希望服务器知道他们过多的隐私,而服务器又无法读取用户的想法,怎么办呢?所以说,责任是一种麻烦,隐私也是件麻烦事。
当然,它也有有利的一面,比如说根据你的喜好,网站可以自动提供链接,让你随心所欲买到自己喜欢的物品,当你有需求时可以为你提供帮助。
8. 与他人建立信任
Web 2.0的诞生,丰富了人们的生活,这种新的互联网方式,通过网络应用 (Web Applications)促进网络上人与人间的信息交换和协同合作,其模式更加以用户为中心。因此,你只需将代码链接给某人,就会有奇迹发生了,你的代码会被调用。
首先,在别人使用你的代码前,请先填好这些协议,在多数情况下,该协议会要求你放弃一切,那么你会得到什么回报呢?其次,和用户建立信任,在基于该协议下每个人都会承诺最佳的实践方法和最高的加密软件来分享你的信息。因此,不用担心你的代码会被窃取。
最终的结果会比你预期的要好的多,比如会给你提供更多的工作。期待好运降临吧。
9. 当代码遭遇腐烂
当你启动任务时,你可以获取最新版本库,利用这些库来工作一至两周,那么将诞生library1.0.2版本,当然你不会使用library B最新版本,因为使用A版本的程序员已经更新了新版本,这时你的老板还会要求你在C版本的基础上开发出一些新的功能,当然只适用于1.0.2.版本。
打个比方,当房子和船要腐烂时,他们会以统一的方式腐烂。很多团队都有这个问题,一个项目的代码本来开始设计得好好的,一段时间以后,代码就会变得难以理解,难以维护,难以修改。为什么呢?因为代码的腐烂都是由于没有深入理解的情况下修改别人的代码导致的。如何防止代码腐烂?参见这里。
如果你想要C,那么必要放弃B。如果你选择B,那么你就必需要告诉你的老板C是不正确的选择。
我们以3个库为例,但在实际项目中会有十几个甚至更多的选项,问题也会随之成倍的增长。更糟糕的是,腐烂不会立即呈现。有时隐藏在某个角落里,看起来是个不起眼的问题,时间久了就会感染到整个代码。正是这细小的不兼容的代码会毁掉整个系统。
我们应该让代码像谚语一样即使是在100年后依然完整无缺。
10. 开源世界茁壮成长
越来越多的数据表明开源的重要性,目前,开源只有一小部分市场,极少部分人愿意将代码贡献给开源社区。
这也许就是Linux和BSD代码的最大贡献者们转为封闭私有代码的原因。像TiVo这样的设备也许会使用Linux作为内核,但绚丽的交互界面却不是开源的,Mac也同样如此。
近日,Linux boxes与Windows boxes之间的竞争陷入了困局。很多人都在质疑:花一样的钱,既然能够买到一个可以安装Linux的Windows机器,为什么还去买Linux呢?Mac笔记本的价格是普通PC的2至3倍等等这种案例很多越多。然而只有极少部分人知道,iPhone也是一款开源操作系统。
我想,只有人们不断的去关注开源哪怕只是细微的性能部分,开源世界才会茁壮成长。
http://tech.chinaunix.net/a2012/0409/1334/000001334763_1.shtml