大龄新米程序媛的半年总结

首发于LOFTER

西西!经过半年的艰苦奋斗(x),我终于有胆量自称程序员了,非常开心。写篇小文章,希望能给对编程有一丝丝兴趣的盆友们一点参考。
如果有这方面专业的人,不好意思班门弄斧了哈!请多多指点。

我为什么要学编程,以及你为什么可能想学编程

我的小学非常神奇地从一年级开始开设信息技术课,每人一台电脑(Win 2003),不给上网。后来有了U盘,大家偷偷流传GBA模拟器,听课听腻了就打两盘星之卡比。我记得在小学学了Flash(忘了)和BASIC(今年重学一次,又快忘了),初中似乎又学了一次Flash(又忘了),那时候已经有小伙伴去课外培训参加全国网页制作比赛了,然后在高中的电脑课上接触了Dreamweaver(也忘了)。
因为从小接触这些,编程在我眼里从来不是什么高大上的东西,而是一个有趣的玩具。我喜欢编程,就像喜欢音乐、喜欢读书、喜欢吃甜食一样。之前苹果出了Swift Playground(只有iPad版,貌似已经汉化了),十分致瘾,我快通关了,有一次差点搞得上课迟到……咳。推荐一下,可以利用以前拿来看剧的时间玩玩哈。

由于我自己的专业和编程几乎没有任何关系,后来我才知道学校开了不少相关课程,那,那我就上上看呗,反正也不要钱。

但是可能你没有我这么幸运,从小家里学校都有电脑,对编程也没有「有趣」的感觉。在我这个学期上的几乎每一门课上,老师们总是试图在第一堂课回答这个问题:学编程有什么用?更宽泛一点,学电脑有什么用?
最直观的答案是:更容易找工作。你可能不会因为懂得编程就家财万贯(虽然也有直接拿出富豪榜说白手起家进入这个榜的一半都是程序员!的老师……),但是作为一项技能,它就像英语一样能给你带来额外的机会。
第二个我比较喜欢的答案是满足好奇心。你可能并不需要学习编程才会对电脑和手机的工作方式产生好奇,但是编程给了你实际去探索、甚至调整和戏弄它们的可能。
再还有就是,编程是一种思维方式。当你习惯了不断探究精简代码的可能性,也许你在生活中也会主动去探究更多提高效率的方法。

我这半年干了什么

除了正常数量的专业课之外,我报了六门学校提供的信息技术课(其中三门排在暑假),三门A+,一门放弃(论文死线和专业课冲突),两门刚刚结课还不知道成绩。应该没有正课给分那么严格,但是都是日语的,还是值得替自己开心一下的。
简单说说每门课都教了些什么。

UNIX概论:通过telnet远程登入Linux,进行一些命令行基本操作。期末任务是做一个展望物联网的未来的PPT。
网络技术入门:介绍TCP/IP模型和OSI模型。期末任务是写总结课堂内容的论文+笔头考试(包括计算分割/聚合后的子网掩码等等)。
VB入门:BASIC。期末任务是做一个每个月自动换一张图片的日历。
php入门:html、css、Apache、php。期末任务是在课堂完成的网页的基础上自己随便做一个有用的东西,我做了一个很丑的读书看电影进展管理。
JS入门:html、css、JavaScript。期末任务同php(同一个老师),我做了一个还算能看的博客,点击不同栏目名会自动切换页面内容。
开源软件概论:各种许可、实际运用、经营模式。期末任务是写论文。(课都听完了,论文没写)

自学编程:在线课程推荐

首先,学好英语(至少4级水平)。英语不好的程序员是没有未来滴。

不知道该从哪开始的话,可以像我一样从网页开发入门,html→css→JavaScript,再然后就应该已经清楚下一步该学什么了。php需要Apache,有点麻烦,可以不学(哎

Codecademy 英语。首推。一边看教程一边动手敲,实时预览效果,做不出来的时候有提示。我学完了html&css(新版已拆分)、SASS、php(已下架)、JS、jQuery(旧版已下架,新版还没出),正在学ReactJS。
SoloLearn 英语。有手机app,和网页版进度同步,适合没时间的人。可以动手敲(在手机上也可以,不过不能一边看教程一边敲)和预览效果。每一个单元的每一个页面下面都有很多参考价值很高的评论。我正在过php和html的内容,当作复习。
ドットインストール 日语,大部分进阶课程收费。纯视频形式,得自己开一个文本编辑器跟着敲,大部分时间要不断暂停(他语速很快,敲得更快),个人感觉有一丝丝不求甚解。我跟着老师在课堂上学了JS和jQuery。
w3school 中文。感觉读的内容有点太多,我是自己写的时候碰到问题了才看,像查文档一样(。

小想法和总结

我曾经在edX上学了一门编程课,用的是一种教学语言(Rocket),大概就是比较简化、专门拿来教编程思路,在实际中没有广泛运用的语言。我发现这样就算学出来了也没什么意思,很难做出一个令人有成就感、想分享给别人的项目。
不推荐从教学语言开始学编程。
时不时得到一些成就感,可能是自学任何知识的时候最大的动力,以及最难的课题。我觉得无论是苹果的Playground,还是从网页制作开始学习编程,都是解决「难以获得成就感」的方案。Playground做得非常好,我相信小孩也能轻松愉快地玩下去(然后会写Swift的孩子就越来越多了,颤抖),而做网页则是一种比较务实(功利?)的方式。
我目前在用的文本编辑器是Sublime Text 3(Win/Mac,收费,试用期无限长),没有选Atom的原因是觉得Sublime更好看。当然也有用记事本就能写代码的大神,但是看得清楚自己写了什么对初学者而言还是蛮重要滴。

希望你觉得读这么长的文章不是浪费时间。Happy coding!