项目总结
上周项目上线了,经过这几天的观察还比较稳定。作为我工作以来的第一个正式项目,还是有必要进行一次总结的。
其实可以算两个项目,一个是集中调度的分布式爬虫,另一个是使用了爬虫的安全审核模块。具体技术实现就不说了,下面从个人经验和项目管理方面写写心得体会吧。
1. 编程技能。
由于以前对于内存管理不够重视,或者在学校的项目其实没多少需要内存管理的地方,这次在项目中暴露无遗。写代码时很happy,调试时很郁闷,段错误如家常便饭。而且内存溢出这种错误很难定位,因为出错的代码引发的段错误往往出现在下一段代码,这就只能通过注释来逐步排查错误代码,类似于扫雷。虽然过程艰苦,但解决完这些bug后,感觉真的获益良多。
对于nginx和mysql api的不熟练也导致调试过程中走了很多弯路。
代码风格方面也需要注意,有些函数逻辑划分不好,过长,代码显得冗余。
2.时间管理
对于需求分析、系统设计、开发、测试及上线的时间占比,我认为应该是10:30:30:30,同事认为是20:30:30:20,而组长的意见是25:25:25:25。实际在这个项目中,需求分析花了两个星期,接口设计一个星期,架构设计,开发,测试及上线各一个月。
个人认为需求和接口设计时间有点浪费,接口文档写了八个版本,最后实现的却完全不一样,实在很浪费精力和口水。期间还和组长红过一次脸,我觉得他附带了太多个人风格,管的太多,而且作为内部使用的接口,架构没定的情况下接口设计基本等于空谈(设计的c接口,最后实现了http接口)。
之后的架构设计虽然也同样经过了很多口水,好在后来终于达成了合理和一致的方案。这个架构的模块划分做得比较好,耦合性低,较好地实现了分布式爬虫。因为是定向扒取,故采用的是集中调度的方式,相比抢占式的调度来说,优势可能在于能够更快地完成对单一网站的抓取,缺点是调度机器压力比较大。另外,时间仓促,使用的是mysql数据库,后续版本再改用Hbase。爬虫的抓取速率还有提升的空间。
开发的时间控制得还是挺好的,一个月写了有六千行代码(wc -l统计,含空行)(后来测试补漏又多了一千),当然得益于架构设计做得足。但测试的时候刚开始手忙脚乱,到后来总算有点心得,在上线前一星期才确认系统稳定。代码质量还有很大提高空间。
3.脑子有问题
组长常常如此批判我们。不应该过多在乎绩效,计较个人得失,关注任务的完成度,而应该想想在这个项目中得到了什么,如何满足个人的发展前途。当有人问起在这家公司做了什么,我们应该有能拿出来炫耀的项目,而不仅仅是听领导的话、完成了任务这么简单。俗气点说,就是提高主观能动性的意思。
过于在乎任务的完成,动机也就仅限于实现功能,很多东西却不知甚解,考虑问题不周全,经常要回过去改没有考虑到的问题。当然这又是老生常谈了,但还是时刻得注意,提高对质量的要求。
- 1楼Wentasy昨天 21:09
- 加油!