从去年参加全栈营学习rails on ruby,到这个月报名参加新生大学的JavaScript和Java的课程,和编程“互相伤害”已经有一段时间,并且要继续互相伤害下去。
复盘一下。
1.什么是编程
所谓编程,从本质上来讲,就是学习使用一种特定的语言,来描述现实世界的一个问题,再将这个问题通过计算机计算,给出分析和解答。
2.我为什么学习编程?
编程的原因,每个人或许都不同:大到为谋生去解决一个困难的数据分析问题,小到因为帮助别人解决一个问题而获得快乐。
对于我自己,原因如下:
自身因素:
1)兴趣:第一次对编程感兴趣,是通过玩全栈营推荐的Swift Playgrounds,第一层收获是人人都可以学编程(友情提示:英语很重要,英语很重要,英语很重要),第二层的收获便是这个教人编程的游戏本身也是人开发出来的程序,即程序可以像写作、摄影、绘画、电影一样,作为人类表达自我意愿的方式。
2)技能打磨:最近流行一个词,“跨界”。事实上,有过成功跨界体验的人都明白:每次跨界,都是给自己拓展一个新的维度。一辈子专注打磨一项技能,和打磨多维度能力其实并不矛盾,但需要记住两点:1)七年就是一辈子,人的一生并不是只能活一辈子;2)同时,凡事都有成本,一定要在一个或几个维度上足够突出。编程能力早已经被我列入必学技能的计划中,有机会当然不会放过。编程的基础是数学,尤其是数学中的逻辑。多练习编程,毫无疑问,可以增强人的逻辑思维能力,更好地去分析问题。而相比于做数学题,编程有丰富的人机交互,反馈更快更积极,同时机器的宽容度极低,更需要专注和持续。无心插柳柳成荫,也成为我打磨元认知能力的好方法。
3)赚钱:提高场外赚钱能力是我学习编程很重要的原因之一。通过编程,拥有做项目的能力,利用课余时间赚钱,同时在做项目中学习和精进。
4)其他:目前时间相对自由,可以分配一部分做想做的事情。
外部原因:
1)活在未来:万物互联和人工智能已经成为我们能看得到的必然趋势;在未来,我笃信,一个人没掌握编程语言的人,和今天不会英语的人没什么区别,甚至更严重。既然对未来有明确地预测,且笃信这个预测是对的,提前按照这个预测的结果进行行动、选择、思考也成为必然。另外,多说一句,隔壁北美早已把编程纳入小学基本课程中。
2)问题导向:不论是在以后的临床工作中,还是生活中都可能遇到各式各样的问题:大到管理大数据进行临床决策和科学研究,小到更便捷地管理患者的电子病历、私人信息等。编程能帮助我更高效地处理这些问题。
3)区块链:在投资方面,我个人笃信区块链应用的高成长率,未来的机会不可限量。并从今年开始践行定投区块链。在投资世界里,需要用真金白银为自己的行动担责,我自然愿意花大量时间去学习自己投资的项目:这世界真的需要这东西吗?它它真的能解决现实中原本没解决的问题吗?
3.学习Ruby中遇到什么困难?
自身因素
1)态度:致命的傲慢。曾经日本有一个「愛の貧乏脱出大作戦」的节日。从节目中,我们看到那些经营惨淡的人其实是有共性的:极度傲慢且缺乏自省能力。
Xdite老师总结过,技能学习中的傲慢:
我是否不做老师课前指定的作业;
我是否最后一刻才做老师指定的作业。平常爱做不做。跳着做。老师给两个礼拜时间写,我只花两小时写;
我是否在学习当中一直想要抄捷径,省略老师提到的重要步骤;我是否听从老师指示,把我的 schedule 排空,专心学习;
我是否怀疑老师能力,不照教材实作,而是绕弯路去看一堆乱七八糟的补充教材,把自己的脑袋搞得更混乱;
我是否回家不重复练习,懒得做出自己的试作品,“反正我未来一定有时间”;我是否只问老师一大堆“假设性问题”而不实际动手下去做,“反正我只要知道解答,心里得到安慰就可以了”;
更重要的是,我认为这后面有一股一种要不得的傲慢心态:“我不是没有能力,我是只差那么一点,我只是天生不幸运而已”。
2)践行:由于是0基础,对编程这个未知的世界会有本能的恐惧,开头时候我做的不好,对自己笨拙的忍耐不够:但我们知道这是必然的,极少人能刚学便做得很好,难道做得不好就不继续学么?另外,重复练习次数不够:在任何技能上,从逻辑上来讲,精通的人必然是极少极少数。而重复,是从笨拙到熟练境界的唯一道路。而对于编程技能,它的获得方式也不是靠“学”,而是靠“习”,要靠不断的练习来内化。
外部原因:
意外任务:由于并不是脱产学习,每天都只能挤出工作外的时间。但不可避免有意外情况发生,打乱设定好的学习计划。
3.这次的JavaScript和Java的课程中我需要注意的是什么?
端正态度:
1)放下自己的傲慢和完美主义,别让“半途而废”成为唯一坚持下来的事情:
2)带着功利学习:和全栈营的优秀的小伙伴聊天,进步最快的是通过学习转行从事IT的人,这次学习Java和JavaScript需要带着功利心去学习。
践行践行再践行:
1)经过Rails on ruby的学习,码代码的过程中已经找到“爽”的感觉,继续坚持写ORID,排出每天学习编程的时间(稍过量),防止意外出现;
2)细化每日学习进度:按时高质量完成来时课前和课后的作业;
3)定个小目标:以开发产品或项目为导向,跟紧进度,跟着老师和助教完成课程里设计好的项目。
写在最后,不管将来是不是以程序员为职业,拥有一定的编程技能,会用编程思维来思考问题,都将会受用终生。以上体验来自新生大学全栈营、Javascrip以及Android开发这三门课程的学习,让我们一起践行编程!