百科问答小站 logo
百科问答小站 font logo



大一被调剂到计算机,但对电脑根本不了解,就只会上上网聊聊天,连入门都算不上,现在应该怎样入门? 第1页

  

user avatar   oooooutsider 网友的相关建议: 
      

先玩一个MMORPG游戏。不开玩笑。

这个游戏长这样,开源免费,用GitHub账号登录(不登录也行,对匿名用户完全友好),不用绑定手机号,不用扫二维码关注公众号回复XXX。还在开发中,有空会直播开发过程——开发测试完,直播上生产

做一个用来学习编程的游戏是我构思了很多年的一个想法:学习编程的过程和闯关打怪很像,费尽九牛二虎之力,只为了了最后通关那一刻的愉悦感;那么,我们能不能做一个游戏,打游戏的过程就是学习的过程呢?能不能只要打通关游戏,就能成为一个合格的、可以立即上岗的软件工程师呢?

这样的话,现在的这个“怎样入门”的问题就变成了“这个游戏怎么入门?”——然后这就不是一个问题了,毕竟游戏的魔力就在于能让完全不识字的学前班儿童都欲罢不能。但是问题是,如何设计一个游戏,能让人具有持续玩下去的动力的同时(正反馈),还能循序渐进的给人以提升(压平学习曲线)。

学习编程的核心在于练习,写码过万行下笔如有神。我先来说重要的事情:

只看视频是学不会任何东西的!

只看视频是学不会任何东西的!

只看视频是学不会任何东西的!

学习编程只有一条秘诀:

设法给自己找到坚持写代码练习的动力。

这个动力可以是兴趣,可以是生活所迫,可以是你妈的鄙视,可以是赚钱娶媳妇的渴望,可以是花一两万报名培训班不甘心浪费的那种不甘。无论如何,在出师之前,都要写上成千上万行的代码。能坚持写很多的代码,就能成功,反之,就不行,就这么简单。

我花了很久的时间研究这个问题:如何能坚持下去写枯燥无味的代码?过去的两年间,我在一个在线培训机构担任了两年的兼职讲师,做了很多尝试,比如说,要掌握“Git切换分支”这个技能,我设计了一个特殊的GitHub仓库,你必须自己操作一遍,clone并切换到某分支,该分支的代码运行会打印出来一个密码(实际上是Base64加密的字符串),然后把密码粘贴到课后题的答案框中才能过关。

然后我在想,能不能让这个过程更有意思一点?比如你需要用这个密码去打开一个宝箱,获取bling bling的大砍刀?

图文无关

在我设计的游戏里,在新手村,一个NPC会向你要咖啡:

你需要去酒吧里(酒吧的名字叫Foo Bar,中文名福报酒吧,慢慢你就会知道它为什么叫这两个名字)获取咖啡 。获取咖啡的密码是java -version的输出,因此为了获得这个物品继续游戏,你就需要学习怎么安装Java。

通过这样持续的游戏互动, 慢慢在游戏里锻炼编程的能力。当一切变成游戏的时候,我们的思路就豁然开朗了:我们可以有彩蛋,吸引玩家去探索;碰到不会做的题目,加入公会,让前辈带你……

当然代码还要你自己写。那么如何激励自己持续的写代码呢?

游戏里的方法是Pull Request。在解释Pull Request是什么之前,我先问你一个问题:假如你明天要应聘司机这个职位,今天你要做些什么准备?

你肯定会说,今天晚上我会借隔壁二狗子的车(或者三蹦子)来练练手。

Pull Request就是编程世界的三蹦子。大多数正常的公司都用Pull Request (或者叫Merge Request)来组织日常的开发工作,所以需要你从今天开始,就开始练习开三蹦子。

我工作四年,向所在组织提交了500多个PR

得益于我在GitHub和自动化构建领域的多年的经验,我设计了一套CI系统,你就某个知识点的题目提交的代码,会触发CI和GitHub webhook,然后游戏中的系统就会做出相应的反应,比如让你通关或者达成某个成就。

这套系统在我做兼职讲师的时候工作良好,一共收到了两万多个PR,因为全是机器判题,几乎不消耗任何人力。同时,你可以尽情发挥想象力,比如顺便checkstyle一下以养成良好习惯(下面是我随便截的一个图,这样的PR还有两万多个):

同时,游戏支持一种特殊的、交互式的路线图,你可以把整个学习过程中的进度可视化:

交互式学习路线图,可下载打印

顺便说一句,游戏支持十几种语言(当然大部分是机器翻译的,因为开源,所以也支持社区贡献)。来看一下鬼畜的韩语版:

阿拉伯语来一发:

做i18n是因为按照以前的经验,有很多同学有留学或者海外求职的需求,所以希望尽可能地营造外语的学习环境。

因为我有正经工作,这个项目只能在业余时间做(感谢我厂不996,能让我陪娃之余还有时间写自己喜欢的代码)。项目持续开发中,未来的晚上黄金时间会考虑在b站(中文)或者YTB(英文)直播开发。

开源地址:


有人质疑这个游戏是否真的能让“连软件都不会安的小白“入门,我必须承认,你说的很有道理,不过,这个问题我已经思考了几年了,并且自认为有一个完善的解决方案——这是未来要开发的经济系统和社交系统要解决的问题,让子弹飞一会吧。


user avatar   guijishengwu 网友的相关建议: 
      

看到其他答案,3年前的事情现在翻出来。

“聚众******罪”都能洗,我是没想到的。反而对维护**的横加指责。




  

相关话题

  你见过最烂的代码长什么样子? 
  如何评价Google的两年经验的程序员声称自己年薪(base+RSU+bonus)25~30万刀? 
  在中国象棋中,最少用多少只马才能控制住整个棋盘?(马控棋盘)? 
  学习 Python 很吃力,我是不是可以放弃编程了? 
  程序员是如何看待「祖传代码」的? 
  电脑怎样执行编程语言的? 
  程序员的bug解决不了怎么办? 
  刷完 LeetCode 是什么水平?能拿到什么水平的 offer? 
  计算机学术界是不是喜欢发明一些没什么用的概念? 
  路由表里的子网掩码有什么作用? 

前一个讨论
如何评价井上雄彦的《灌篮高手》?
下一个讨论
如何评价知乎长篇马拉松的全场大奖作品《第五只苹果》?





© 2024-05-20 - tinynew.org. All Rights Reserved.
© 2024-05-20 - tinynew.org. 保留所有权利