能让一个软件公司倒闭的软件开发方法,你干过几件?

标签: 程序人生 维护 | 发表时间:2014-09-04 09:46 | 作者:techug
出处:http://www.vaikan.com

我靠解决技术债务养家糊口。在我的工作中我看到许多难以维护的代码,并且一次又一次地看到很多相同的原本可以避免的问题。

我专长于调试,修复,维护和扩展旧的软件系统。我的典型的客户拥有一个尚可运行的网站或内部应用,但是开发者已经不知所踪。业务需求已经改变了但是软件没有跟上。抑或我的客户有了些“快要完成”的东西但是由于预算和日程安排的关系失去了开发者。通常那包括一系列尚未完成的功能和bug。

我的客户通常被别的开发者告知需要丢弃所有的东西从头来过。大多数程序员不喜欢维护代码,尤其是维护别人的代码。当程序员写代码的时候他们总是在可维护性上问错误的问题——关于这个话题详见Matt DuVall的文章: The myth of maintainability

我在这里为你的开发项目提供了一些建议以使我有活可以干。

不使用版本控制系统

我总是能惊奇地发现在过去几年写的大项目不使用版本控制。如果你不使用版本控制,下一任开发者就要找出哪些文件是现有系统的一部分以及哪些仅仅是备份。他没有任何提交信息和改动日志来知悉代码的历史。我在我的文章Introduction to Abject-Oriented Programming中讲述了如何不使用版本控制。

✓ 我就职的公司就是这样

个性化开发环境——越奇葩越好

不要让下一任开发者可以轻松地上手。要求特定的开发语言版本和工具,并且确保他们和操作系统自带的版本有冲突。疯狂自定义你的Eclipse或VisualStudio或vim,然后写一些只能在那个配置下运行的宏和脚本。不要创建一个磁盘映像或者脚本来重现你的开发环境,并且不要写任何文档——那给了太多提示。

✓ 我就职的公司就是这样

设计超级复杂的编译和部署步骤

把一个网站投入到正式服务器应该以下面的形式进行:

svn up
git pull
hg pull

程序员可以讨论代码是否简洁和优雅,然后他们转过身去建立最为详尽和复杂的展开系统。这是他们悄悄干的,不经过产品经理和客户的审查,也无法被理解的行为之一,所以它会轻易地失控。当你用不同的脚本语言把八个工具连接起来时,记得留下文档。

✓ 我就职的公司就是这样

没有测试/预部署环境

改变一个产品系统让人激动。不用麻烦去搭建测试或部署平台了。取而代之的,用秘密的登录方法或者用些后门URL来测试新特性。把测试数据和真实数据混合在你的数据库里。因为你没有使用版本控制,保存几份原先版本的拷贝以防万一。不要在代码里加入登录。不要在测试中关闭邮件发送,信用卡验证,等等。

✓ 我就职的公司就是这样

老代码一律删掉,重写软件

千万别用一个像Django, Rails, 或者CakePHP那样大家都能理解的框架。你可以写一个更好的引擎,ORM,排序或者哈希算法。当我看到一些例如“比原有字典更快的方法”或者“改变了PHP的库函数因为参数顺序烂透了”的注释时,我就要重置我的大脑。

✓ 我就职的公司就是这样

加强各种代码库/代码包之间的依赖关系

尽可能多的加入第三方代码。连接你需要连接的库。我见过用了大量的外接库只为调用某个方法的代码。改变第三方库的源代码这样它们就无法自动更新,但是千万不要用版本控制。这样我就能发现不同的地方从而还原出原来的版本。

✓ 我就职的公司就是这样

…对这些依赖关系坚决不写注释

我接到最多的紧急电话和更新出错有关。一个看上去无害的wordpress升级,Linux更新包,或者新的jQuery版本会造成一系列实效。不要把你的代码放到特殊的或者不用的第三方库版本下检测。甚至不要加上注释。

✓ 我就职的公司就是这样

混合多种不同的编程语言开发并且热衷使用前沿技术

每一天HackerNews和Reddit上涌现出新的酷的语言。在你的客户的东西上试试它们。任何合格的程序员可以在瞬间学会一种新语言,所以你的代码的继任者对其毫不了解也不是你的错。语言的边界,不兼容的API和数据格式,不同的服务器配置都是有趣的挑战并且值得在StackOverFlow上贴出来。我真的见过有人把Ruby嵌入PHP网站因为所有人都知道PHP很烂而Ruby更好。半吊子的caching, 流产的Rails和Node.js项目,特别是那些NoSQL方案都是我的好生意。

✓ 我就职的公司就是这样

该如何正确的开发软件?

你的代码是否完美地面向对象,光鲜亮丽都无关紧要——程序员在面对旧的系统时总是一团浆糊。我擅长用diff,grep和Ctag, 追踪代码,重构和调试。我会搞清楚所有的东西。最美丽,优雅的代码如果缺少了版本控制,加上太多从属关系和自定义,并且没有测试系统的话仍然是很难维护的。这就像在一群强迫性囤积症患者中找到一间干净整洁的屋子。

统计结果(2人/次)

50%
不使用版本控制系统
50%
没有测试/预部署环境

相关 [软件 公司 倒闭] 推荐:

能让一个软件公司倒闭的软件开发方法,你干过几件?

- - 外刊IT评论
在我的工作中我看到许多难以维护的代码,并且一次又一次地看到很多相同的原本可以避免的问题. 我专长于调试,修复,维护和扩展旧的软件系统. 我的典型的客户拥有一个尚可运行的网站或内部应用,但是开发者已经不知所踪. 业务需求已经改变了但是软件没有跟上. 抑或我的客户有了些“快要完成”的东西但是由于预算和日程安排的关系失去了开发者.

Piriform 公司系统软件四剑客

- tom - 第二天空 · 冰界 & 泥塘
Piriform 是一家电脑软件开发公司,他们致力于帮助大伙儿把电脑整的更安全更干净. Piriform 开发的四款系统软件都是在业界非常知名的且完全免费的. 最牛逼的也是名气最大的就要数 CCleaner 了. CCleaner 不仅仅是一款非常全面的系统垃圾清理工具,它还可以用来清理系统中所装大部分软件所生成的垃圾文件.

倒闭不叫倒闭,叫困难

- edith - 新闻跟帖局
核心提示:针对南方部分地区中小企业出现倒闭潮的报道,工信部发言人表示,目前没有出现企业扎堆倒闭的情况,但部分中小企业的情况确实比较困难. 各部门已在财税、金融等方面给予了政策的倾斜,并增加了信贷支持. [查看原文]好友向您推荐这条跟贴. 关注关注他的微博马里奥隔壁 [网易浙江省温州市网友]:2011-07-22 09:25:01 发表网易吉林省吉林市网友 [s2506] 的原贴:1.

软件公司的两种管理方式

- Greyby - 酷壳 - CoolShell.cn
这篇文章是我的一个外国的同事Gareth推荐给我的,我和他一起工作过一段时间. 他之所以觉得非常不错,是因为这篇文章让他身有体会,他觉得我也一定会有体会,并让我考虑一下翻译到我的blog上来. 我看完后觉得很有代表性,而且觉得说得太对了,所以翻译过来,希望大家都读一读,最好转给你的公司老板. 这篇文章来源于 StakeExchange上的一个问题——“为什么BA和PM的薪水要比程序员要高.

上海雨人软件技术开发有限公司

- elis - 牛博山寨 编辑推荐
这东西要在北京装到公共场所提供的免费无线网上. 网络e魔镜的功能特点  .   网络e魔镜是雨人公司为企事业单位管理者专门设计的一款上网行为管理软件,以技术手段帮助单位管理者轻松实现对员工上网行为的管理,以杜绝员工在工作时间对互联网的滥用,提高网络使用效率,保障网络信息安全,节省企事业成本支出. 网络e魔镜主要有以下两个主要模块功能:网络行为管理模块、桌面管理模块.

IBM斥资3.87亿收购软件公司Algorithmics

- Haides - cnBeta.COM
IBM将斥资3.87亿美元收购位于多伦多的风险分析软件公司Algorithmics以增强其金融服务能力. IBM称,这个收购交易预计在10月底前完成. 这笔收购交易将通过帮助客户控制金融风险扩大其商务分析能力.

Google 收购面部识别软件公司 PittPatt

- qqinxl - 谷奥——探寻谷歌的奥秘
面部识别软件公司PittPatt (Pittsburgh Pattern Recognition)在自己主页宣布被Google收购. PittPatt是一个来自于卡内基梅隆大学的项目──开发一个可识别出照片、视频里面部的技术,PittPatt拥有很多面部侦测、面部追踪、面部识别算法. PittPatt表示加入Google后将继续在多个重要领域独立改进和研究面部识别技术,将该技术作为有趣的产品带入大家的生活,Google有很多核心产品(比如图片搜索、YouTube、Picasa和Goggles)都已经拥有这种技术,所以加入Google将更好的技术带给他们是很自然的.

软件公司的两种管理方式

- - 研发管理 - ITeye博客
这篇文章是我的一个外国的同事Gareth推荐给我的,我和他一起工作过一段时间. 他之所以觉得非常不错,是因为这篇文章让他身有体会,他觉得我也一定会有体会,并让我考虑一下翻译到我的blog上来. 我看完后觉得很有代表性,而且觉得说得太对了,所以翻译过来,希望大家都读一读,最好转给你的公司老板.   这篇文章来源于 StakeExchange 上的一个问题——“为什么BA和PM的薪水要比程序员要高.

软件公司如何免费搭建知识管理系统

- - 研发管理 - ITeye博客
知识管理对于一个公司来说非常重要,目前市面上有很多用于知识管理的软件,但是费用都比较高. 而使用几个开源网站代码,就可以在公司搭建起有效的知识管理系统了. 以下以Mantis+Testlink+SVN+Dokuwiki+Twitter 为例,简单说明如何搭建公司级的知识管理系统. 百度经验:jingyan.baidu.com.