前几天有个读者加我微信,上来就问:我想转行做软件开发,但完全零基础,到底先学哪门语言?说实话,这个问题我自己当年也纠结过。那会儿我在网上搜了一大圈,有人说先学网页三件套,有人说直接上后端语言,还有人建议先啃计算机基础。看得我头都大了,结果拖了两个月啥也没动手。后来还是一个在软件公司上班的老同学点醒了我,他说你别想那么多,先选一门能快速做出东西的语言,边做边学,比光看视频强一百倍。
这篇文章就是写给那个当初跟我一样迷茫的你。咱们不绕弯子,直接说清楚零基础学软件开发的第一步该怎么走,选什么语言,怎么安排学习路线,以及哪些坑我替你踩过了。
这个问题听起来像废话,但我发现很多人真的没想明白。软件开发这个词太大了,做网页是软件开发,做手机应用是软件开发,做数据分析是软件开发,做游戏也是软件开发。方向不同,适合入门的语言完全不一样。
我认识一个姑娘,本来想学做网页前端,结果被人推荐去学了一种偏底层的数据处理语言,学了三个月一头雾水,差点放弃。后来换回网页方向,用浏览器就能看到效果,兴趣一下就上来了。所以你第一步不是打开教程,而是先问自己:我想做出来的东西长什么样?是网页、是小程序、是手机应用,还是纯粹对数据感兴趣。
方向比努力重要得多。选对了方向,每天都能看到进步,选错了,你会怀疑自己是不是根本不适合这行。为啥是网页方向?原因特别简单,反馈快。你写好一段代码,双击打开浏览器就能看到结果,这种即时满足对零基础的人来说太重要了。学编程最怕的就是学了三周还做不出任何能看的东西,那太打击人了。
网页方向的技术组合其实不复杂,核心就三块:结构、样式、交互。结构负责页面上有什么内容,样式负责好不好看,交互负责点击之后发生什么。这三块学完,你就能独立做出一个像模像样的静态网页了,大概需要两到三周。之后再学一门后端语言,让网页真正动起来,比如能注册登录能留言,再花一个月左右。
具体的语言选择上,结构和样式对应的是超文本标记语言和层叠样式表,交互对应的是脚本语言。后端可以选一种适合快速搭建网站的编程语言。网上有个很流行的组合方案,就是交互脚本加后端脚本再加数据库,这套组合资料多、社区活跃,遇到问题基本都能搜到答案。
说起来挺丢人的,我刚开始学的时候买了一堆书,什么深入理解计算机系统、算法导论,翻了几页就放书架吃灰了。零基础的人看那些书,就跟小学生翻高等数学一样,除了打击自信心没别的作用。书没错,是打开的时间不对。
第二个坑是光看视频不动手。看视频的时候觉得啥都懂,一关视频自己写就懵了。编程是手上的功夫,不是眼睛的功夫。我后来的习惯是每看十分钟就暂停,自己把刚讲的代码敲一遍,哪怕照着抄也行,手熟了自然就记住了。
第三个坑是追求完美,总想把一个知识点彻底搞透再往下学。这其实是用学生思维在学编程,学校里考试要满分,但编程是工程思维,能跑通、能解决问题就够了,剩下那些细节在做项目的过程中自然会慢慢理解。
大部分网页开发和业务系统开发对数学要求不高,会加减乘除和基本逻辑就够了。真正对数学要求高的是算法、图形学、机器学习这些方向,那些等你有了基础再考虑也不迟。别让数学成为你不敢开始的借口。
头两周先把结构标记语言和样式表的基础过一遍,目标是能对着一个网页截图还原出差不多的页面。不用追求一模一样,大概像就行。接下来两周学脚本语言基础,变量、循环、条件判断、函数这些概念,然后学着操作页面上的元素,做出点击变色、弹出窗口这类小效果。
第三到第六周挑一门后端语言入门,了解什么是服务器、什么是请求和响应、怎么写一个简单的接口。然后用一到两周时间学数据库基础,知道怎么存数据、怎么查数据。最后两周做一个完整的项目,比如一个简单的个人博客或者待办事项工具,从前端到后端到数据库全部自己搭起来。
这个过程听起来挺长,但每天投入两小时的话,三个月左右你就能做出一个能给别人看的东西了。我说三个月可能还是保守了,有些人更勤快,两个月就搞定了。不过你也别太着急,我自己当年断断续续学了快五个月才做出第一个完整的项目,中间还翻车过好几次,有一个礼拜完全不想碰代码。
现在网上免费的学习资源太多了,多到让人不知道该选哪个。我的建议是别贪多,挑一套评价好的教程从头跟到尾,遇到不懂的先记下来,别卡在一个地方死磕。等你做完一个完整项目再回头看那些问题,很多自然就懂了。说到底,软件开发这事跟学游泳一样,看再多教程不下水,永远学不会。
你现在最想做的那个东西是什么?想清楚这个,选什么语言其实就没那么难决定了。