首页 > 代码库 > 软件工程之浅见
软件工程之浅见
一个软件的开发,最初是靠个人能力的。开发人员的能力与软件的功能息息相关。可是随着软件行业的发展,个人能力的占比在不断下降,这也是符合客观规律的。
软件的规模在不断变大、软件的复杂程度在直线上升。这都是单靠个人能力所无法保证的。假设一个开发者的能力很高,他在一个系统中的表现很好,可是不一定在其他系统中的开发表现良好。人都是有其擅长和不擅长的趋向问题。另一个原因是,如果一个软件对单个开发人员的依赖度过于高,那么带来的重大风险也会随之升高。离职、个人能力的欠缺、个人的职业素养等等都会直接影响软件的质量。因此,现在的软件行业,已经脱离了靠个人能力单打独斗的时代了。
现在的计算机专业都有一门课《软件工程》,是的但从名字上,我们也能理解现在软件的方向,软件必须向工程化方向靠拢。什么是工程化,按自己的理解就是有一个根据行业特点制定的一个适合当前形势的软件生命周期的管理步骤、规范、甚至是标准。
在这个体系中,按照自己的理解,应该务求这么几个方面:
1.流程务必简单。不能像国企那样申请一只笔,竟然要几个人审批,审批好几天。如果其中某一个人请假不在公司或者出差,那么还申请不到。另一种就是,其实只需要一个人审批的事情,根本没有必要再加上其余的审批,因为即使加上他人审批,问题是出了问题,他们谁会为此负责呢?我想没有任何一个审批人愿意承担责任的。所以与其一堆人审批,不如按谁审批谁负责的原则,减少不必要的,形式化的审批流程。
2.尽量一个萝卜一个坑。两个人一起去做一件单一的事情,最终往往是把事情搞得很复杂,事情也没被办好。这样的例子几乎处处都是。如果一件事涉及到不同的工种协同工作,那么也要明确职责及期限,那个环节的问题和责任更是要明确下来(当然要奖励也要与之对应才行),如果出现一堆人在扯皮的事情,不是其中一个人的问题,而应该思考思考哪里的问题了。
3.环节中的人员选择。在整个软件工程的链条中,每一个环节都需要有合适的人去做,并且监督。一个环节不一定要那种聪明绝顶的人,但是也坚决不能要那种问题永远没玩没了的人,那种老油条和习惯性推卸责任的人也坚决不能选择,我们需要的是能打仗的战士,能干活的工友,而不需要那些卖油条的人。人员配备,其实应该是软件工程的一个基础性的保障。
4.就像一些很著名的言辞一样。金钱是成功的附属品,当你成功时,你一定会拥有金钱、地位等等附属品。可是你单一追求金钱时,即使你追到也未必算得上成功。软件工程管理者角色也一样,你天天追求财务报表的好看,向基层干部和员工下达苛刻的财务指标。其余的什么公司文化建设、员工归属感、人员招聘一律不管,恨不得在所有花钱的地方都把一分钱掰成八瓣花,而在所有应该发放福利的环节偷偷摸摸。我想这个做法或许在某一时刻非常管用,但是时间一长,轻重颠倒的利害不用重复了吧。相反,如果能够花更多心思研究当前的行业形势、公司的发展方向,研究在当前形势下,公司的制度应该怎样更好的适应这一潮流。研究怎么样招聘到更合适的人才,怎样让员工在公司开心的工作......等等,我想如果这样做下去,勤于打理的肥沃土地上,长出丰硕的果实,是早晚的。