4个月的工作中对软件设计开发的思考

                        Author : Gary Gao     

http://garyelephant.me

garygaowork[at]gmail.com 

关注自动化运维,软件部署自动化

1. 运维监控平台的设计:

集群的运维监控,需要确保的是将发现问题,记录问题,报告问题,定位问题紧密结合,尤其是对问题的准确定位。在运维监控平台的设计、开发阶段确立准确定位问题的机制,可使系统能够记录问题出现的原始点,不至于在实际运维的过程中,某个问题出现后却很难排查,或者经过扩散传播引发新的问题,增加了运维人员的操作难度。以目前主营电信增值业务的一些企业,其运维平台的开发人员与运维人员重叠度较高,再者其运维人员与开发人员定义不明确,或者运维人员培训不到位,或者两者职责划分不清,导致出现问题后运维人员仅仅起到了报告问题的作用,而实际的排查定位的工作全部落到了开发人员手中,严重影响了开发人员的正常工作。现在不少企业都是运维与开发结合,两种职责不分人,不独立,一个运维人员既开发,又运维。对于运维对象在地理位置上相近的,这种结合善于发挥其优势。而对于运维对象之间地理位置较远的,现场的复杂性将使发现定位问题更加困难,这时候更加需要将已有经验及良好设计相结合,来开发一个好的运维监控平台。


2.程序员与公司共同成长的原因

我想了想,决定说程序员(或者说是公司里搞技术的人)与公司一起成长的因素,而不是程序员在公司里越来越苦逼的原因,也许我讲的不仅限于程序员。三流的公司做产品,二流的公司做人才,一流的公司做文化。一流的公司做的是什么样的文化?对于我们程序员来说,我们需要的是一种开放的、自由的、追求高效、注重员工利益的文化。公司应该鼓励员工,开拓眼界,从外界输入知识;有开放的心态,从自身输出知识,将自身变成一滩活水。做项目的时候可以汲取其他优秀项目的思想,不要不断地把糟糕的代码和设计修改的更糟糕。鼓励员工表达观点,将好想法变成现实。鼓励员工稍作无意义的劳动,想办法改进工作,并给予丰厚奖励。不要给员工形同虚设的奖励福利(一般依靠削减员工利益来实现赢利的公司都是3流或3++流的公司),不要加班再加班,减少了员工学习思考的时间。


3.如何做更好的设计

什么是不良的”设计”:

I.设计者能力有限,设计出了糟糕的项目,把订票网站设计成了12306

II.设计本身是良好的,但设计没有表达清楚,定义不明确。

一个项目最好从一开始就设计良好,定义明确。在团队协作开发的过程中,每个模块的负责人都有设计明确的文档可遵循。

一个设计不好的文档或规范导致的后果是模块功能与实现之间,实现与设计之间的矛盾越来越深,可能是坚持现有糟糕的设计,不断修改代码,也可能是设计向代码妥协,将设计做的更烂。但无论是谁的坚持与妥协,都会使整个项目变得更糟糕。修改项目的复杂度难以预测,项目的工期难以预测。


如何做良好的“设计”:

(1)对于I.设计者应提高设计能力,可以借鉴牛人的设计思路,优秀项目的设计思想,学习他人的思路,开拓自己的思维;提高自己的抽象思维能力。同时将工作中的设计经验总结成可供参考的设计思路。

(2)对于II.设计者应使表达语言更严谨、简洁。设计者还应及时跟进设计的实际实现过程,及早发现问题。


“The pragmatic programmer”《程序员修炼之道》在“靠巧合编程中”,讨论了靠巧合编程的症结弊病,其中一点是“隐含的假定”——“人们都在头脑里带着许多假定工作,但这些假定很少被记入文档,而且在不同的开发者之间常常是冲突的。并非以明确的事实为基础的假定是所有项目的祸害。”

所以,实在有必要找到那些还不错的隐含的假定和设计,把它们作为规范写入文档,作为明确的事实确立下。


转载本文请注明作者和出处[Gary的影响力]http://garyelephant.me,请勿用于任何商业用途!

Author: Gary Gao 关注互联网、分布式、高并发、自动化、软件团队
支持我的工作:  https://me.alipay.com/garygao



你可能感兴趣的:(运维,软件设计,程序员修炼之道,程序员成长)