机遇
7月下旬的一天,我通过ThoughtWorks微信公众号得知了线上训练营开始招募学员的消息,并毫不犹豫地报名了。尽管下半年即将步入忙碌的研三,但我认为必须抓住这次提升自己的大好机会。
Team Working
机缘巧合,我加入了线上特训营003的第七组。这是一个命途多舛的小组(?),在成立初期先后经历了原组长“跑路”(其实是因故退出,绝无责怪的意思)、站会时间一改再改、任务进度安排混乱等变故,一开始我们的进度比起其他组明显要慢了一些。在组内事务稳定下来了之后,我们的任务进度也很快地赶了上来,每天晚上九点参与线上讨论也成了我的生活日常。每日站会的常驻成员主要是组长李青山、大神张红蕾、学弟龙海成还有默默无名的我,大家一起汇报进度,提出各自遇到的问题并寻求解决,偶尔也会交流找工作的经验或者唠一些日常。从每天与大家的交流之中,我感觉到了自己不是一个人在战斗,遇到困难时,团队内的每个人都会无私地共享自己的知识和经验,帮助我解决问题,我也尽自己的能力为他人提供了帮助,这得益于每日站会制度,更得益于团队每一个人的奉献。
Tasking
训练营的重点当然是各种学习任务。在完成了几个比较基础的任务之后,第五个任务开始要求我们画图,将一个大功能分为若干个小任务,确定各个模块的调用次序和输入输出类型。第七个任务开始,我首次接触到了TDD开发方法,即以测试驱动的开发,这与我之前编程时的方式都不一样,TDD要求在划分好任务模块之后,先写出每个模块以及全局的测试代码,再根据测试代码来写相应的功能。这样的开发方式使我在进行编程时有了更加清晰的思路,进而能够更加有效率地开发出相应的功能。在开发功能完成了之后,必要时还需对代码进行重构,消除“坏”代码。掌握了TDD方法之后,我比较顺利地完成了接下来的学习任务。同时,在助教姐姐的指点下,我认识到自己在代码书写规范和代码整洁性等方面还存在不足,在今后的自我学习过程之中还需继续努力。
体能大比拼
八月八号解锁的“体能大比拼”环节让我吃了些苦头。这个环节的工作量不大,但需要在放题之后的半个小时内解答,许多题目都涉及到JS中对数组元素的操作,对此并不熟练的我一开始经常无法在规定时间内解出答案,只能对着大神们简洁又高效的代码望洋兴叹。经过站会中和大家的交流,我了解到Array类型本身就有多个功能强大的函数可以直接调用,用来替换循环,完成特定的功能,再通过查阅JS文档,我渐渐掌握了答题的技巧。尽管体能比拼的题量不算大,但在与大家的解法讨论中能够发现更多更优的解法。举个例子来说,计算“水仙花数”首先需要取出三位数的每一位,在小组讨论中我们有使用将数字转换为字符串再split的方法,也有对数字依次取余的方法,更加好的解法是直接利用reduce函数。除了在站会中对体能训练题进行讨论之外,每天两点派谁去提醒大家去做题也是学习过程中的一大乐趣。通过体能大比拼的训练,我认识到很多个看似很小的功能都存在着多种解法,而最优的解法在代码简洁度、效率和可扩展性上所具有的优势又是不可忽视的,在每个小功能中都采用最优解法,整合成大功能之后所带来时间和空间的效益就会是巨大的,我们应当不满足于仅仅将功能实现,还应追求解法的优化,这需要长时间的学习和练习,提高对语言特性和算法的熟悉度。
其他,写在最后的一些话
由于我们组的成员遍布各地(成都、西安、武汉……),没能够在线下活动中面基,自己也因为各种原因未能参与武汉地区的线下活动,这是一个遗憾,很多事情都需要自己去实际参与,才能够有意料之外的收获,就像我以前报名并参加了武汉ThoughtWorks办公室公开日一样,如果我没有作出这第一个选择,也就不会有后面的这么多故事和收获。
就像老师在任务一中所提到的一样,我们不仅要学习新东西,更要掌握学习新东西的方法,我也会在日后自己的学习工作中践行这一理念。参加过一次训练营,两次Open Day,对ThoughtWorks也不算陌生了,TW所提倡的知识共享理念以及多维的员工发展路线对我来说有很大的吸引力,在接下来的校招中我会全力以赴,争取能够成为TW的一份子。