工作总结

极客活动总结

公司近期举办了极客活动,我牵头推进活动,还有两个同事一起互相配合,里里外外忙了差不多一个月,一共举办了两场比赛,还是有一些感慨的。

  • 目的
  • 这是公司第一次举办极客活动,而且是针对实习生举办的,当初我来公司实习的时候都没有这些,想想现在的学生,真的很幸福。

    活动目的
    1. 和其他部门小伙伴一起组队,大家来自不同学校,但对编程都充满了激情,在这里你能认识更多志同道合的小伙伴。
    2. 通过一天的集中编程,加强自己的编程能力和经验。
    3. 拓宽自己的技术视野,将是极其有趣的编程经验。

    总之,我们希望公司招进来的实习生,不仅仅只做项目和业务,通过活动可以更好的融入公司,并且希望以活动的形式,让大家觉得很有趣,并多认识其它小伙伴。

  • 形式
  • 既然是活动,不能只是玩的形式进行,不然很容易出现过于随意,而没有产生希望的效果。所以,活动内容还是会像比赛一样,有具体的规则。

    我们提前给所有实习生发了极客活动邀请邮件,并简单介绍了活动事宜。

    日程安排:
    08:45——09:00 签到
    09:00——09:20 日程讲解,题目和规则介绍
    09:20——09:30 现场组队,4-5人一组
    09:30——24:00 极客编程
    每个人自备一台电脑,编程语言和形式都不限制。
    项目由小组共同完成,可随时提交作品,最晚截止24:00。

    我们将题目进行了打印,活动当天交给每个参加活动的实习生,并对实习生进行了编号和签到。然后进行了题目规则讲解等,根据编号,现场使用python写的脚本进行随机分组,确保公平公正。

    这是随机代码,包括组队,以及不同的项目组随机选用不同的会议室:

    # coding: utf-8
    import random

    # 会议室
    meetings = dict()
    meetings['A会议室'] = list()
    meetings['B会议室'] = list()
    meetings['C会议室'] = list()
    meetings['D会议室'] = list()
    meetings['E会议室'] = list()
    # 参加活动的人数
    number = 22
    # 将所有人序号随机打乱
    students = range(1, number + 1)
    random.shuffle(students)
    # 平均分配到每个会议室
    for i in range(number):
        if i % 5 == 0:
            meetings['A会议室'].append(students[i])
        elif i % 5 == 1:
            meetings['B会议室'].append(students[i])
        elif i % 5 == 2:
            meetings['C会议室'].append(students[i])
        elif i % 5 == 3:
            meetings['D会议室'].append(students[i])
        elif i % 5 == 4:
            meetings['E会议室'].append(students[i])
    for k in meetings:
        print k + ' : ' + str(meetings[k])
  • 题目
  • 关于题目,我们一共举办了两次,间隔两周左右,不过我们题目基本没有变。是的,绝对意想不到,题目内容基本没变,又让所有实习生做了一整天加夜晚!

    这是问题:
    card_person.zip文件中,含有1000万的用户数据(可能存在各种未知异常)。
    用户信息包括姓名、电话、邮箱、公司、部门、职位等信息。
    不借助任何数据库服务,自行设计一套数据存储服务,满足增/删/改/查/计数。
    电话、邮箱格式错误的数据,不要导入到数据存储服务中。
    语句支持and/or/模糊匹配。
    邮箱不论大小写,均能搜索到数据。
    所有请求结果,都要显示准确的执行时间。

    编程语言:Ruby

    简单示例:

    >> select(姓名='张晓明')
    张晓明   13311223344 zhangxiaoming@mail.com  雄县石化股份有限公司  销售部       经理
    张晓明   13955667788 Zxiaoming@taiyang.com   中国太阳集团      商务部       部长
    >> select(姓名='张晓明' and 电话='13311223344')
    查询结果:
    张晓明   13311223344 zhangxiaoming@mail.com  雄县石化股份有限公司  销售部   经理
    >>select(公司='深圳政府*' or 职位='NULL')
    b宇军 13375171737 duangyoujuan008@gcaifu.com  深圳政府    补胎E-Q   NULL
    毛rsnck    18634684196 nennis.wang@dhink-bridge.com    深圳政府采 新福aiE Bn#aggina NULL
    >>count(电话='133*')
    1031121
    >>select(邮箱='zwsaj@am.co.au')
    上亮妈   13945187289 zwsAj@Am.co.Au  Opp.M书法家协会    SPBS, MDGP (IOM, TUTH)  NULL
    >>update(邮箱='zwsaj@am.co.au')set(电话='1394518729')
    错误,电话不合法
    >>update(邮箱='zwsaj@am.co.au')set(电话='13914518729')
    上亮妈   13914518729 zwsAj@Am.co.Au  Opp.M书法家协会    SPBS, MDGP (IOM, TUTH)  NULL
  • 评分细则
  • 特别说明
  • 第一次活动和第二次活动用了同一套题目是有原因的,在这里进行一下解释。

    第一次活动时候,并没有要求大家使用ruby,任何语言都可以,组队后,由队员进行讨论选择。也没有明确的评分标准,只是让大家去实现所说的所有功能。

    结果当天出现了一些问题:
    1. 所有组都默契地使用了python,但是有些组员并不熟悉python。
    2. 部分不熟悉python的组员,在比赛中存在消极的开发情绪。
    3. 由于没有评分标准,实习生实现的过于随意化,甚至选择性实现部分功能。

    我们一直对外宣传的是活动促进大家合作,但实际上举办这个活动背后有着巨大的、可以说极其诱惑的奖励,当天比赛结束的时候我们才对所有实习生说。这个时候,不止一个实习生举手发言,表示今天自己可能参与度不高,因为对python不熟悉之类的。说实话,我觉得这个理由很牵强,有些人明明是态度就有问题,却找理由。

    不过,我们为了公平起见,我们确实举办了第二次,而且第一次的评分占总评的比例也不是很高。考虑到第一次活动遇到的问题,我们做了一次意想不到的设计:
    1. 发起第二次活动,并在邮件说明为了让大家更好的参加活动,请大家把自己擅长的编程语言、大学学过的编程语言发出来,我们根绝大家的编程语言进行出题。
    2. 所有学生都积极而又详细的写下了自己接触过的所有语言。
    3. 我们选择了ruby,因为没有一个学生会使用。
    4. 我们完善了题目的描述,加强了题目的复杂度,完善了评分细则。
    5. 第二次活动内容就这样出来了。

    第二次活动题目给到大家的时候,我能感受到很多人惊讶的表情。

  • 考察维度
  • 第一次比赛,重点考察了合作、主动、协作能力。第二次比赛,重点考察了快速学习、时间把控、业务分解的能力。

    在这个过程中,每个组都有优点和缺点,有的组快速开始开发、有的组花了一个多小时把技术实现细节写满了白板,有的组使用B+树、有的组使用hash实现,不做评价,各有千秋。不过两场活动下来,感觉大家都比较缺失的:
    1. 对题目的理解不深入,对评分细则的重视度不够。
    整个活动,导师一直和他们强调仔细看题目要求和分值,而学生们感觉都不以为然,更多的是把激情投入到算法里和代码调试等细节中,没有人对项目本身有很好的把控,这也导致最后每个组的分值不是很高。
    2. 没有组长,一团和气。
    大家没有确定组长制,也就是说没有选一个专门拍板的人,这也直接导致了没有一个带头的同学对项目整体有把控。大家都是和和气气地开发,不太关注进度、时间节点,谁的环节实现的慢了,也没有批评和提醒。很多组,到了晚上,还有很多主干流程都没实现,大家只顾低头忙自己的。
    3. 越往后越着急,反倒越低效。
    越到活动尾声,大家更多的时间开始联调,项目对接,而这个时候有些组表现出来了极度的低效。比如A同学实现了交互和接口调用,B同学实现了接口细节,结果对接的时候接口有问题,那么B同学开始各种看代码调试,而A呢?竟然从会议室出来了,到处溜达,问他的时候他却说“没我什么事,我那块代码好的,另外一个同学在调试”。
    当场批评他,提了几个问题给他,除了这一块其它功能好了么,有没有人测试过,文档写了么,有再次对照分数表看一遍还有什么遗漏么等等。这也说明,大家的责任心不够。

  • 现场图片
  • 放几张活动现场图片吧!

    人手一份的比赛题目和分值明细。

    准备了超级多的零食还有啤酒,每个小组抱着各种零食的箱子前往会议室,满满的幸福。

    一些现场图。

    某个会议室几个队员,一起盯着屏幕看数据结果。

    千万级别的数据,我们放了非常多的脏数据,清晰数据时候遇到了问题,大家在分析。

    比赛中,我偷懒当了一小段时间摄影师,隔着玻璃拍的。

    越到凌晨,越紧张,因为那个时候比赛就结束了。

  • 结束语
  • 极客活动,是公司对“工程师文化”的一种肯定,给实习生们提供了互动、有趣的编程氛围。

    未来希望多组织这样的活动,不仅仅有实习生,还要有正式员工。题目也可以更宽泛,围绕公司的一些场景、产品定位,进行脑暴和快速选题尝试。说不定通过这类的活动,能让公司诞生一款新的明星产品呢!

    当然,午餐的羊肉串非常好吃,必点~!

    1 Comment

    1. pupil

      高级高级!

    Leave a Reply

    黑ICP备15001596号