写在项目即将收官时的反思
原来反思,也不是一件容易的事。反思的过程,需要用心去回忆,去思考,需要以一个旁观者的身份,来审视自己的所作所为。不仅如此,更要从思想上挣脱自身的牢笼,认识到自己的缺陷,所谓不破不立。
双11的购物狂潮刚刚过去。由于这段时间实在是太忙了,以至于商家的活动,网页上的宣传,这些似乎与自己都没有多大关系。每天从早到晚,都在代码的陪伴下度过,累并充实着。最近,一个历时2个多月的物联网项目,即将收官。在忙碌的工作节奏下,停下脚步,细细反思项目制作过程中的得与失,对大脑来说,也算是一种不错的休息吧。
规范二字,是此时此刻深深映照在自己内心深处的印记。自己的反思,也正是围绕着它展开。
一、模块设计过程中的滞后现象
在项目初期的功能模块设计阶段,出现了某一个完整模块的部分功能设计滞后的现象。滞后的原因,可能是因为自己考虑的不够周全,出现了遗漏;也有可能是在开发过程中,客户提出现了新的需求,导致某一模块有新功能需要添加。不过在这里重点要反思的,并不是如何让自己考虑的更加周全;也不是在软件设计初期把需求做的多么完善,尽量不要遗漏客户的想法;而是当出现这种滞后情况时,自己应对处理的方式问题。
在这个项目中,自己不止一次遇到了这种滞后现象。那么自己是如何处理的呢?对于这些变化,自己的做法是在未经大脑仔细思考的情况下,就把它们扔到了一边,并在心里想着:嗯,反正添加、修改并不是很麻烦,等最后再说吧。最终导致的结果,有的确实能够如自己预期的一样,通过简单的添加一些功能代码来实现。但是,有的就不是这么幸运了。因为滞后的原因,自己已经错过了处理这些功能设计、实现的最佳时间段,现在再回过头来考虑,晚矣,直接导致了工作量的增加。那么,究竟是什么原因导致了自己出现这种如此不“职业”的行为呢?我想,是自己的心理因素在作怪,并且自己没能以规范的态度来要求自己,就这么放任了自己。
细细想来,当时的自己,处在为自己设定的开发节奏中,新变化的出现,就有可能会打破自己的这种节奏。因为自己内心的抵触,不愿意让自己的节奏被破坏,所以只要不是太大的变化,自己从意识里就没有把它们太当回事,放任置之,就成了自己的处理方式。因为自己所处的环境,没有严格的外界限制来约束自己(小公司),所以一旦自己决定这么做了,即使是错的,最终给自己纠错的,承担的,也只能是自己。如果自己不以严格的规范来要求自己,那么便没人会要求,最终的结果,不论是自己的工作情况、产品的质量等都会受到影响,还是害了自己。向自己内心的“不职业”行为宣战,用规范来约束自己,养成良好的职业习惯,这是自己深刻反思的第一点。
二、健康的框架比什么都重要
写代码就像自己曾经学过的素描一样,也是要先勾勒大的轮廓,打好框架底子,然后再由粗到细,层层雕琢。自己开发的3D虚拟程序,也是如此。像多场景的管理、通信模块的处理、数据结构的定义等,一些关乎全局框架的设计,要放在最开始去做,只有它们事先处理好了,才能保证后期的开发工作事半功倍,为程序的开发打下一个良好的基础。不过这一点,自己做的也不够好。对框架先行的全局设计,没有给予足够的重视,做的有些随意了,这一点自己今后一定要注意。做任何事情都有一个优先级的顺序,这要谨记。像自己这次在程序开发过程中,一开始就忽视了多场景的管理问题,在开始编码之后,针对一个场景做了许多处理工作,后来在进行其它场景的过度时,有些措手不及,导致走了一些弯路,虽然最终问题都得到了解决,但是却承担了不必要的风险,这是个教训。还有像数据结构的定义,这更是重中之重,这一点自己马上就会说到。良好的框架设计,既要保证当下程序的稳定运行,还要能够应对未来的扩展变化。特别是对于程序的核心功能模块,稳定与灵活,都是要充分考虑的。这一部分工作,自己还要在实践中多摸索,多总结,不断积累,享受过程。
三、数据结构的定义
数据结构的意识,你有吗?这是我想要反问自己的一句话。因为自己这一次,真切体会到了数据结构的重要性。
数据是程序的核心要素,数据表达的准确性,是软件开发过程中的首要原则。否则,即使软件设计得再漂亮,功能再花哨,失去了数据的灵魂,也只是空壳。
数据结构的定义,是在软件设计初期需要首先完成的工作。并且,在进行数据结构的定义时,对于数据类型的要求,应该进行明确的定义,绝对不能模棱两可。像自己这一次在定义数据成员时,因为在通信协议中没有明确表示每一种数据的类型,结果就导致在处理其中一项数据时,服务端开发人员使用了short类型,而我使用了int类型。由此带来的问题是消息长度的不一致(有两个字节的偏差),给解析带来了一些麻烦。如果在设计之初,服务端与客户端的开发人员就数据进行明确的定义,避免这种“心里明白”的做法,也就不会走些冤枉路了,这也是个教训。除此之外,数据结构的定义是否合理,准确,还能体现出开发人员对于软件需求、功能的理解,是否到位。如果你对于一项数据代表的含义有不理解之处,自己都解释不清它到底代表了什么,那么在这里肯定存在需要解决的问题,立刻行动搞清原委就是必须要做的。一旦在数据结构的定义这一环出了问题,将会给未来的许多问题埋下伏笔。规范严谨的定义数据结构,这又是给自己上的一课。
四、项目进度计划、工期的掌控
在项目开始的初、中期,自己还能够按时的记录项目的总体进度,每天开发完成的内容,从总体上对项目有一个较为清晰的掌控。可是,这种良好的事态并没有坚持到项目收官,伴随项目后期开发压力的增加,以及自己一时要求的松懈,便丧失了这种良好的行为习惯,有些自乱阵脚了。现在看来,这也是因为自己丧失了规范性而导致的结果。这种虎头蛇尾的行为,是自己今后要极力避免的。
凡事都是说到容易,坚持做到却很难。软件开发的工作,是一个脑力劳动密集型的工作,同时还受到开发人员心理活动的影响,要想通过大家共同的努力,来打造一个高质量的产品,是一项十分艰巨的任务。这不仅需要开发人员技术上的支持,更需要每一位团队成员,从思想、行为的每一处,以规范的职业素养来要求自己,担当起自己应当的责任。同时,也正是因为有了这一步步的挑战,才让软件开发的工作如此令人着迷;正是因为有了一次次失败后的教训,一次次反思后的收获,才让我们品尝到了成长的快乐。希望在今后,自己的职业生涯能够在更规范、更职业的道路上,稳步前进,向着自己更加向往的目标,一直走下去。
本文出自杜晓萌的博客,未经特殊表明皆为本人原创,请勿用于任何商业用途,转载请保持完整性并标明出处: http://blog.csdn.net/haohan_meng
原文:http://blog.csdn.net/haohan_meng/article/details/41289461