最近有稍微刷了一下,目前的成就大概是 17 个 project,不过大部分是水题,kotlin 、web 和 java 分别做了一道极难(紫色)难度的 project,刷完 kotlin 和 web 还有 devtool 部分的 topic,java 刷了大半。有点想说点什么,然后也好奇有没有同类型的网站呢(主要是做 project 挺有意思的)
简单评价一下吧,纯个人主观判断(
首先当然是优点(不然也不会沉迷两个月了)
优点:
- 网站的界面做得很流畅,内置的编辑器也很方便,特别是 web 部分的编辑器还带自动补全的(怀疑后台其实是 vscode )
- 题目部分种类和难度都很丰富,刷一遍下来还是能复习到不少东西的
- 课程内容不局限于语言本身,还包括了一些设计模式、算法、框架、库、正则、CRUD 、fp 、并发之类的内容,大概算是大杂烩吧
- project 大部分都比较有趣,有一定的实用性,比如说用 GUI 写生命游戏、文本编辑器或扫雷或者 java 写简单的 blockchain,做完也会有点成就感
- project 都是分成若干个步骤(一般 4-8 个 stage ),每一步都在前一步的基础上进行改进,直到最后完成作业。相对来说对萌新比较友好(但其实也不一定,等一下就说到了)
- 在 ide 里可以通过直接提交代码跳过刷课程的部分强行通关 project
- 如果 project 或者题目实现出错了程序会提醒可能出错的原因,虽然不一定准确但是还是比较 user-friendly (相比许多 oj 网站),不过有时候就不给提醒了
- 课程内容组织相对比较体系化,内置的知识图谱应该就可以看出来了吧
- 官方的 support 反应还是很快,网站用户的互动也比较积极,不像某些知名 mooc 上的某些 specialization 的论坛冷清到一年的贴子数以个位数算,估计 support 也是不存在的那种
但是用久了发现这家的缺点也是挺明显的(许多 topic 、question 和 stage implementation 里都不乏有抱怨的声音)
缺点:
- 时不时会抽风 submit 的等待时间超久
- 虽然 topic 的广度上去了,但是大部分内容真的就是浅尝辄止甚至 web 部分提到框架的 topic 只有一篇 intro 加上一篇介绍 react 的,等于还是什么也没讲,真要做 project 的话大部分的内容还是得自行 google
- web 和 kotlin 部分的内容明显少了许多,尤其是 web,虽然说还在 beta,但是过了一个半月似乎也没新增新的内容
- 题目的设计良莠不齐,有的题目的考点特别刁钻,有的题目特别水(尤其是在一些冷门 topic 下),有的题目直接跑题
- project 的设计也有好有差,好的 project 可以和每一 stage cover 的 topic 衔接得很好,但也有 project 的 implementation 跟 topics 几乎不相干。最差的 project 大概是 stage1 、stage2 、stage3 implement 了一个东西,然后到了 last stage 的时候题目的要求等同于强迫你把前面的代码全部放弃从头再来,和前面提到的 project implementation by steps 的概念背道而驰
- project 的 test 的质量有时候也有问题,有时候要 pass 一个 stage 需要非常 tricky 的 solution,而有时候可能上一个 stage 的代码什么都不用改就直接 pass 了,还有一个的 test 甚至有人抱怨要跑上一个多小时
- 大部分 project 还是基于 cli,要求实现 GUI 、并发、算法之类的 project 基本上都在 hard 和 challenging 里面了,而这类 project 很多都是语焉不详或者涉及到大量没有被 cover 的 topic 的(这就又回到前面提到的内容不足的问题了),对用户的搜索能力要求很高
- 官方的态度虽然很主动但是似乎还是有很多 content 尽管很多人抱怨但并没有被 fix 掉
总的来说算是一个优缺点都很明显的网站吧。特别喜欢的是这种给一个有趣的 project 要求实现,然后拆分成若干个步骤,一步步完善出一个成品的理念。然后网站本身提供的课程材料和问题也挺适合用来温习理解不够深刻的概念的(虽然有内容深度不足的问题)
以 blockchain 为例,如果没有分成每个 stage 一步步加功能的话,大概我是会一脸懵逼不知道该从哪开始,最后就算能写出来的 code 也会乱七八糟。分开来实现的话,每一步都清楚地知道自己该实现什么,要 google 要翻资料文档大致有一个思路也变得轻松许多
(口胡结束)
不知道有没有类似的网站呢,比如说同样是给定一个 project,给出每一步要求实现到某个程度,然后可以检测答案的正确性,或者不检测答案而是给出一个参考的源代码。不过其实给出分步骤的实现目标也许也已经不错了?可能更希望的是能做一些不同类型的不同技术栈的 implementation 吧,比如说基于某个框架的简单的 demo,或者是用 swing/tornado 写个小游戏,写一个简易的 android app 之类的
知道的可能算类似的大概有 kotlin 官网的 hands-on labs,也是分成许多小步,但是直接给出了源代码可以照着抄。Google 的 android 文档里似乎也有类似的 lab 。不过这些内容都是语言特定的感觉,有没有更 general 的呢?