记第一个项目

 

周五完成了读数据科学专业以来第一个项目。一个有关数据隐私及其相关瑞士法律的网站。作为两位主力成员之一,贡献了一半代码。在此之前,我从来没有完整地做过一个项目。也没有任何一门掌握很全面的编程语言。这个作品内容上还有很多需要完善的地方。但是作为我第一个参与完成的完整项目,我还是很开心自己能够有这样的成长。

困惑和挣扎

从之前几次月度回顾中以及博客断更几月中可以看出,我那一阵子状态不佳。那会我对自己学习的内容提不起兴趣,学习无法专心。内心一度非常煎熬,又想能够快速进步,补足自己缺失的东西,但是又不想去学这些我不感兴趣也看不懂的内容。
后来和一位朋友聊起我的状态,她说我缺乏毅力。是啊,我不是个有耐心和能够坚持的人。

在迷茫中就迎来了每个学期最忙碌的时刻,一个又一个项目,一个又一个截止日期,这些迫使我忙碌起来,没有心情和时间自怨自艾。但是忙碌也是我需要警惕的状态,自己是在为什么忙碌,这样做是值得的吗?期末为了各个项目忙碌,反过头看看,这门课是值得自己上的吗,反思从这门课里得到了什么?
过度聚焦当下的状态,就很容易丢失对前景的把握。因此我选择在忙碌的日程中,抽出时间写这篇反思性质的博文。暂时停下脚步,看看自己得到了什么,有什么决定是错误的,以及将要去做什么,为什么做这些事。通过一次又一次反思,我希望能够回答这些问题:读这个学位是想要得到什么?最终又能够得到什么?我是否喜欢自己选择的这个方向?还有什么其他可以探索的方向?

说回第一个项目

开始学习一项新技能时要明确自己的预期,希望通过这门课学到什么知识,运用到什么项目上。
自己想要学习 Web Development 相关内容已经有一段时间,曾经也断断续续在 Udemy 和 Fronted Master 等网站上学习过一些东西。但因为我从来没有真正实践过学到的知识,那些在学习过程中产生的结果,只是我随意放置在文件夹里并且不曾回顾的笔记而已。
常在网络上看到人们推荐通过做项目学代码,这个网站项目让我第一次对这条建议有了深刻的体会。

选修的这门课叫做 Artificial Intelligence and Law,是学校计算机学院和法学院合作开设的一门课程。旨在促进计算机相关专业学生和法律专业学生合作,共同做出一些对这两个领域产生影响的作品。

在开始这个项目之前,我对从无到有写一个网站没有很清晰的认知。只有一些搭建博客的经验,以及非常零碎的 HTML 和 CSS 知识。整个项目由队友来把握全局,我则按照她的要求完成部分代码。我写代码的过程是“做中学”,边写边在网上查资料学习。我查了很多之前接触过的概念,但我发现自己对这些概念并没有很深入的认识,只停留在表面。这次通过写项目,掌握了这些知识的实际应用场景,从而加深理解。知识结构得到进一步完善,明确下一步学习内容,对学习路径有了更清晰的认识。

改变学习思路

过去喜欢囤积各种大而全的资料,同时给自己一个心理暗示,只有学习完这些资料,才能够开始做项目。先不说学习方法和效果的问题。但知识的海洋是浩瀚的,资料是无穷无尽的,“学完”几乎是不可能的。正是因为自己心理预期和实际情况不符,我每次都是半途而废。但这次做项目启发我,在最初或许不需要特别清晰完整的知识结构,在掌握最基本的概念后(往往是各类资料的前三章),就开始尝试做第一个相关项目。把资料当作参考书,在做项目的过程中,遇到不了解的概念再回到参考书里去查阅学习。选择课程、项目也要有标准,是否和自己正在学的内容相关(不然什么都知道一点,没有精通),是否可以帮助自己拓宽知识边界,学习新的技术或工具。

注意细节,问有价值的问题

在这个项目上我第一次接触 Javascript,队友要求我帮助她写一个功能,模仿她已经写好的部分即可。第一次接触新语言的情形可想而知,我不断遇到大大小小的各种问题。每次都直接找队友帮忙解决问题。惭愧地说,大多数问题都是我拼写错误或是丢了标题符号之类的问题。在这也感谢不厌其烦帮助我的队友,耽误她太多时间了。当时我着急把东西写出来,很是粗心,现在想来,应该在运行前认真检查代码才是。另外还可以在浏览器里先查看 Console 进行自我 Debug。确认前述步骤都没问题后,再向他人寻求帮助。

学习初期的直接反馈

从这次经验还意识到,在接触一项新事物初期阶段直接反馈对我帮助很大。队友一直在给我 Javascript 上的正向反馈,帮助我更好地完成任务。如果没有她的帮助,我一定会在这上面晕头转向,搞不清自己要写什么代码,从而感到非常迷茫。如此我意识到了学习社区的重要性,帮助别人解决问题的同时,别人也会帮助你。而且别人能很直接地给出建议,或是代码写的好坏的评价。

问题及解决方案是最值得记录的经验之一

这不是我第一次做和网站有关的事。我现在的博客也是我快两年前各种倒腾下做出来的网站。主要是设置主机、域名、Wordpress和图床。那会没有养成随手记录的习惯,使得做这个项目时我只能凭借着零星的记忆去完成相关设置。当时如果有记录步骤,整个流程会快很多。受到这件事启发,我现阶段的笔记有专门的 Trouble Shooting 分区,主要记录自己在做一些事时遇到的问题及解决方案。写成笔记的形式,之后也很方便分享给他人。比如我计划写的 AWS S3 图床搭建指南。

从更实用的层面上讨论效率

我之前写过两篇效率相关的方法论,结合这次做项目经验,我想谈谈实际应用层面的困难和新发现。

这次项目完成过程中,我每天在电脑前长坐至少八个小时,有时甚至达到十个小时。结果就是全身上下的骨头都在疼痛,身体给我发出强烈的信号,警告我要停止这样的不健康习惯

避免过度沉迷工作

过度工作可能会出现在以下两种情况:其一是截止日期逼近,我因此精神上有巨大的完成任务压力,希望通过增加工作时长,早点完成工作减轻精神压力;其二是突然思路如泉涌,担心停下容易打断思路,希望通过继续工作,保持思路不要断开。

沟通交流

第一种情况经常发生在工作没有得到妥善安排的情况下,以这次做的网站举例,几次长时间工作都是队友们提出新的建议或功能,临时需要额外增加一两百行代码,还有最初网站运行逻辑没有理顺,功能结构不清晰,几次重写代码。我本来是相对擅长把握团体工作节奏,推进进度的人。但是当我的思路没有被完全打开的情况下,我也会懒得思考,只能是一直拖延。这一点和团队内沟通交流有密切关系。如果团队交流得当,会少做很多重复工作和无用工作,从而一定程度上减小压力。

拆解任务

精神压力还会存在于一种情形下,就是对整体没有把握。对于接下来的步骤没有认知。最好的办法是拆解任务。比如建网站在厘清网站逻辑后大致可以分为四个步骤:域名和主机,HTML,CSS 以及 Javascript。这四个步骤又可以继续拆分。参考这个思路,每一个项目都可以进行拆分至较为简单的任务,如此可以在没有太多心理负担的情况下完成,每天做一点点,在截止日期前可以如期完成。

随手记录灵感

对应过度工作的第二条解决方案则是随手记录灵感,我喜欢使用文字记录灵感。过去使用系统自带备忘录,现在在尝试 nvAlt (Mac)和Simplenote (iOS)组合的模式。后续如果有必要,则在 Xmind 里更细致地整理这些灵感笔记。

良好的生活习惯

根据自己的观察,理想工作时长是六个小时,超过这个时长,身体各部位就会发出疼痛信号,注意力也开始下滑。以及晚上十点后不宜工作,思维容易过于活跃,影响睡眠质量。

健身应该融入生活

身体疼痛也说明我的坐姿有问题,肌肉发力方式不对。之前一直有健身很重要的概念,但也一直没有行动。此次项目经历,让我真正开始严肃思考这件事。今天才发现学校健身房有提供专业的健身咨询,已经预定好下周的课程,希望能够通过力量训练提高背部及腰部的力量,从而改善疼痛的问题。再来就是将健身和生活习惯结合起来,现阶段是想尝试把跑步和处理垃圾结合起来。说实话,我痛恨跑步给我带来上气不接下气的感觉,但这似乎也是我“毅力不足”的另一种体现。所以先这么尝试看看,在每天出门倒垃圾或是回收的时候跑步半小时。每天运动一点点,或许可以能很好地帮助我提高精神及专注力。学校健身房网站也给出了很详细的耐力训练指南,之后有机会再和大家分享。

(之后再分享团队对内和对外交流的内容。)

发表评论

您的电子邮箱地址不会被公开。