华为第七届无线编码大赛总结

  距离华为无线第七届编码大赛结束已经快一个月了,尽管心中一直想着要好好总结一下,但之前由于其他一些原因一直没有总结,今天趁着要开这个总结会议的原因,理一理,只为下一次做的更好。

  在华为无线第七届编码大赛之前一个月左右的样子,我同时也参加了华为成研所的编码比赛,结果就不提了。面对高手如云的华为,当初也只是抱着试试水的态度去体验了一把而已,得到那样的成绩也不意外,今天就不在这里多废话了……

  在本次比赛中,深深的意识了以下几个方面的问题,现总结如下:

  团队方面

  做为团队的领头,我是从以下几个方面去做的工作:

  一、要对整个开发需求了如指掌,了解比赛的每一个细节。作为团队的领队,如果没有了解尽可能详细的需求,那么比赛的进度怎么安排,比赛的任务怎么分配,你将无从下手。

  比赛时间为三天我的概要计划如下:

  1. 第一天详读任务书,明白开发需求,完成程序的消息解析发送,人物的简单控制。这一点我们当初在做的时候忽略了赛制中的规则,自己在那里想当然。在每次比赛中有两个子场比赛,每回合都有积分,官方的规则是两场分数之和谁最高,谁就赢了。结果我们的想当然理解是,只要我能够把对手全干掉我就赢了,结果不然。虽然这一点规则对我们整体的开发没多大影响,但从侧面就反应出一个问题:我们没有真正的熟悉需求。第一天的开发工作,协调工作我个人觉得都做的很好,大家轻松加愉快的都完成了,当然这一天晚上我们都没有熬夜了。
  2. 第二天完成基本策略的开发,发布基础版。第二天就是完成基本策略的开发,怎么去抢箱子,怎么去围杀对手。在第二天晚上经过几番优化我们的基础班发布出来了。心中十分欢喜。
  3. 第三天完成加强版的开发,发布加强版。由于在线对战平台的帮助,我们也在不断的用我们的程序去挑战其他参赛队,不断的完善我们的代码。在完善的过程中,代码的维护就显得比较费力,主要就体现在前期框架的设计上不够完美。

  二、要熟悉每一个队员的能力。了解每一个队员的能力,最擅长的技能,这样才能够把每一个成员的能力发挥到最大,做到劲往一处使,将团队的能力发挥到极限。

  鉴于我对我们团队的另外两个队友的了解,以及他们自己的选择,前期的任务分工主要就分为了三大部分:师兄负责整体的程序框架设计;发哥负责消息的解析,封装,发送;我就负责程序入口的控制处理。后期在策略方面都是大家一起讨论,一起协同分工完成。

  三、规划整体的进度。在第一次的比赛中,这一点就没有做好,如果做不好这一点,就会导致整体的比赛进度漫无目的,没有一个开发周期的指定,大家就只能做到哪就在哪,想到哪就在哪,没有一个目标,容易在开发周期中丧失目标的明确性。指定好了开发周期和项目进度,尤其在像比赛这样周期短的开发任务中,做好这一点就显的更加尤为重要了。

  四、对开发周期中发现的问题风险进行评估,把握开发进度。

  本次比赛中,问题风险评估主要中有两个地方有问题:

  1. 风险的评估,由于队友个人私事的原因,加之个人承载的开发过多,导致后期承载的风险过大,一个人承载了过多的责任,在后期就会承载更大的风险。 
  2. 问题评估就是在复赛的时候,针对初赛的版本,我们修改了代码,但是部分初赛的问题是修复了,但是又暴露出了很多以前初赛版本没有的问题,最后只有通过自己挑战自己的程序,选出最稳定的版本来作为复赛的参赛程序。可悲的是我们最后提交的还是初赛的版本来参加复赛,这也是我们最后失败的最大原因。

  五、参赛的程序应该本着稳中求胜的思想。

  从第一次的比赛中中我们总结了,程序不一定要有多好的策略,最基本的要做好程序的健壮性。做火车头游戏的时候就要保证永远不挂掉;做炸弹人就要保证逃生策略是无敌的。只有在这样的基础上,我们在谈其他的优化策略。在这点上也是我们这次成功的秘诀吧。

  个人方面

  本次比赛中,我着实动手去写的代码不多。我主要负责了程序入口的研究,官方文档的详读和环境的准备。官方提供的资料当中只有C/C++的入口demo,我就只能通过去查看官方提供的一个cpp demo文件来编写java的入口程序设计。socket的创建于连接,socket消息的解析、帮助队友解析来自服务端的json消息等。除此之外就是配合着后期遇到的一些问题的解决开发一些小的功能模块。

  1.代码框架设计,接口定义很重要

  作为一个合格的程序员,编码不应该有什么问题(在我看来编码就是把我们人类的思维固化成计算机能够识别的有序代码而已)。编码只能从侧面体现出你对这个工具的一个熟练程度,而不是开发的重点工作。就好比我们在做游戏的时候,如何移动一个画面中的对象不是重点,重点应该放在怎么去移动(策略问题)。前期的分析与程序的架构设计,编写出可靠、高效、灵活、易扩展、可复用的程序才是重中之重。在初级程序员中(也包括我)往往喜欢用计算机能够理解的逻辑来买手和表达待解决的问题及具体的求解过程,这其实就是在用计算机理解的方式在思考,和面向过程的编程思想如出一辙,这样的做法本身没有错,但这样的思维却使的我们的程序只能满足眼下的需求,程序不容易维护,不容易扩展,更不容易复用,从而不能达到高质量代码的要求,也不能做好后期开发质量的保证。和我们的面向对象思想更是南辕北辙了。

  这里就有人会反驳了,面对如此开发周期短的需求来说,时间不是很宝贵么?我只需要按照比赛规则开发完程序不就完事了么?在实际的比赛过程中大家往往只是注重怎么快速的去缩短开发周期,想留更多的时间去想策略,想通过损失一定的代码质量来换取策略上的思考时间。然而比赛不像平常的开发工作,开发完成以后,会有自动化的检测工具,会有同事的代码检视。比赛中没有这些东西,在时间上也不可能自己去设计这么一套东西来看护自己的代码质量,这也能从侧面反映出一个程序员的编程习惯。如果按照上面的开发完成以后,后期想做一些复杂的策略的时候,就显的难上加难。这一点在后期的策略开发过程中就显的很突出。

  2.团队协作

  在团队比赛中有一点我觉得很重要,虽然我时刻在告诫自己,但我也不知道自己到底做的好不好,这个只有和我一起并肩作战的兄弟才知道,那就是:团队协作的能力。团队赛不比个人赛。个人赛中一个人只要整好了那就是直接的胜利,而团队赛不然。在团队赛中,除了要做好自己,还要服从整体;既要把握模块的进度,也要注视总体的进展。针对同一个问题,不同的人有不同的想法,不同的思路,唯有做好队友之间的协调把控,才能将众想法中优秀的想法运用到我们的程序中。自己做完自己所承担的模块以后,不能一意孤行,需要从总体上一起去分析下一步怎么做,该怎么做,怎么做最好?领队统一协调,这样才能让整个比赛进度健康向前推进。

  写在最后

  我们的队名:我不是路人甲(取这个队名有两个原因:第一最近有一部电影叫做《我是路人甲》;第二就是我们真的不想就只是路人甲)

  参赛成员:师兄、发哥和我三人组

  开发语言:JAVA

  初赛时间:三天

  比赛游戏原型:泡泡堂

  本次比赛是我人生当中参加的第二次比较大型正规的比赛,是一次成功又失败的比赛。本次比赛总共有252个参赛队伍,最终我们能够拿到19名的成绩,按道理来说已经十分不错了,但是期间种种的原因导致我们心里都有一丝丝遗憾,未能将我们最大的能力发挥好。这一丝丝的遗憾都会成为我们下一次走的更远的铺路石,在哪里跌倒就在哪里站起来!

  最后要感谢公司,感谢我们的客户方华为提供这样的平台来挑战自己,让我们在挫折中成长。最后也要感谢项目组以及客户方领导对我们的关心和支持,尤其是我们项目老大,为我们比赛付出了很多。非常感谢!

2015年09月22日 23:51:[email protected]

  

时间: 2024-10-12 17:32:45

华为第七届无线编码大赛总结的相关文章

华为第七届无线编码大赛总结(转)

距离华为无线第七届编码大赛结束已经快一个月了,尽管心中一直想着要好好总结一下,但之前由于其他一些原因一直没有总结,今天趁着要开这个总结会议的原因,理一理,只为下一次做的更好. 在华为无线第七届编码大赛之前一个月左右的样子,我同时也参加了华为成研所的编码比赛,结果就不提了.面对高手如云的华为,当初也只是抱着试试水的态度去体验了一把而已,得到那样的成绩也不意外,今天就不在这里多废话了…… 在本次比赛中,深深的意识了以下几个方面的问题,现总结如下: 团队方面: 做为团队的领头,我是从以下几个方面去做的

河南省第七届ACM程序设计大赛赛后总结

我们学校ACM集训开始于4月5号(清明节),5月25日在郑州解放军信息工程大学举办,集训耗时50天,但是感觉效果还行,但是也不是太好:我们也已经尽力了,虽然说只拿了个银牌,每份收获的背后,都会有辛勤的汗水,毕竟我们也努力了: 下面说说比赛中的问题:觉得吧,虽说模拟赛参加了很多,但是到了正式的比赛的时候,还是出现了紧张的情况,九点开始比赛,我们AC第一道题的时间是在十点半左右,题目不难而且曾经也做过啊,但是就是调试不好,越调试不好,心里就越急啊:刚开始看题的时间,我们都看了第一道题,意思也都明白,

nyoj1253 Turing equation(第七届河南省程序设计大赛)

题目1253 题目信息 运行结果 本题排行 讨论区 Turing equation 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 The fight goes on, whether to store  numbers starting with their most significant digit or their least  significant digit. Sometimes  this  is also called  the  "Endian

nyoj1248 海岛争霸(第七届河南省程序设计大赛)

题目1248 题目信息 运行结果 本题排行 讨论区 海岛争霸 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比海盗,你知道吧?杰克船长驾驶着自己的的战船黑珍珠1号要征服各个海岛的海盜,最后成为海盗王. 这是一个由海洋.岛屿和海盗组成的危险世界.杰克船长准备从自己所占领的岛屿A开始征程,逐个去占领每一个岛屿.面对危险重重的海洋与诡谲的对手,如何凭借智慧与运气,建立起一个强大的海盗帝国. 杰克船长

nyoj1254 Code the Tree (第七届河南省程序设计大赛)

题目1254 题目信息 运行结果 本题排行 讨论区 Code the Tree 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 A tree (i.e. a connected graph without cycles) with vertices numbered by the integers 1, 2, ..., n is given. The "Prufer" code of such a tree is built as follows: the

nyoj1255 Rectangles(第七届河南省程序设计大赛)

题目1255 题目信息 运行结果 本题排行 讨论区 Rectangles 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 Given N (4 <= N <= 100)  rectangles and the lengths of their sides ( integers in the range 1..1,000), write a program that finds the maximum K for which there is a sequence

nyoj1249 物资调度 (第七届河南省程序设计大赛)

物资调度 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 某地区发生了地震,灾区已经非常困难,灾民急需一些帐篷.衣物.食品和血浆等物资.可通往灾区的道路到处都是塌方,70%以上的路面损坏,桥梁全部被毁.国家立即启动应急预案,展开史上最大强度非作战空运行动,准备向灾区空投急需物资. 一方有难,八方支援.现在已知有N个地方分别有A1,A2,-.,An个物资可供调配.目前灾区需要物资数量为M. 现在,请你帮忙算一算,总共有多少种物质调度方案. 假设某地方一旦被选择调配,则

第七届蓝桥杯大赛个人赛省赛(软件类)B组

3.凑算式 B      DEFA + --- + ------- = 10     C      GHI     (如果显示有问题,可以参见[图1.jpg])   这个算式中A~I代表1~9的数字,不同的字母代表不同的数字. 比如:6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法. 这个算式一共有多少种解法? 注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字. 这道有点坑吧,尤其对于我这种看题不仔细的,看到题是想着"/"这个运算是整数的,

华为第六届创新编程大赛第一轮 电话本题目

比赛的时候提交不了,先把题目记下来 电话号码本 描述: 实现一个简易电话号码本的程序,存储电话号码,可以通过名字获取电话号码,同时也可以通过电话号码获取对应的名字.说明:    1.名字由英文字母组成,区分大小写.1<=字母数量<=20    2.名字和电话号码一一对应    3.名字和电话号码均唯一    4.电话号码长度n,由数字组成.1<= n <=20    5.电话号码本中最大的记录条数为200运行时间限制: 无限制 内存限制:  无限制 输入:  输入命令字如下:sav