
编程入门
编程第一步要学的是语法基础,第一步要学的都是printf("%s", "hello world!")。学习变量,数组,运算,判断,循环,函数,文件读写等基础知识。学习打印九九口诀表,数字反转,最大值和最小值等入门练习题。这样就算是入门了。
计算机基础
学习编程入门了之后呢,第二步要学的是计算机原理基础,需要的话可以看看我的文章 一文讲透计算机数据基础。在专业的课程里面,这门课叫计算机导论。学完了可以对计算机有了进一步的深入理解了。
做算法题
想要编程的能力有所提升,接下来要的就是花时间刷题了。这块可以取力扣刷题,或者其他的OJ。多找题练手,尝试自己想办法不看答案解题,多种解法,优化方案,这个过程也可以看算法的书,总之,泡个三个月,也能成为算法入门了。不需要精通,但是需要解决问题的时候,你要有解决的能力即可。网上的资料也特别多,可以一边看,一边学。自己锻炼是一种方式,看攻略是一种方式,另外一种方式,就是我自己做的算法可视化工具的网站,包含力扣OJ等算法网站的答案,直接看我的教程,看动画的执行过程理解算法,这是最快速的方式,也是最省时间的方式,感兴趣可以了解我的网站,好酷网。
做项目
有了前面的算法基础,下一步当然是做点东西出来了,实践是最快速的成长方式。有简单的方式,也有困难的方式。简单的就是学校给什么任务项目就做什么任务项目,这个没什么好说的。困难的呢,也不难,比如我大学做的第一个项目就是做个简单的打字软件。这个过程就要了解怎么做打字软件,我的学习过程其实是挺坎坷的,大家其实都一样,都是不懂,但是后来人就容易了,新东西一来就知道怎么去解决。说说我的过程吧,我当时首先要了解的是VC++,MFC,但是还是不够,了解了做界面的基础流程,那时不知道怎么做。误打误撞了解了界面是画出来的,才慢慢的找到了API,最终做出来了,这个学习过程差不多1个月吧。也是不断学习,才慢慢找到了路线。
做项目进阶
前面的方法主要就是锻炼找资料,学习的能力,还有分析问题,找到对应的资料,一步一步向前,没有指导的老师就是这样难,其实我学的东西我的老师也不一定懂,没人指导就是这样,自己摸着石头过河。那么项目进阶的方式就是找现成的产品,拆轮子,找到github上门开源的项目,项目拿下来运行,拆掉部分代码,运行自己想要的效果,然后一边阅读代码,一边折腾,改他的代码,这个过程不知不觉就会学到高手大型的项目是如何组织起来的。这个过程我经历了差不多有3个项目,其实阅读别人的代码这个技能至关重要,学通了就知根知底了。这个过程差不多成长是半年到一年之间。
项目方向
其实我学的东西就不限前端,也不限后端,也不限移动开发,需要什么就学习什么,这个是探索新东西的能力,我最开始的时候就是这么过来的。事实上,工作基本上就是干这个事情来的。所以不要怕学新的东西,慢一点也没关系,最终要是学习的过程慢慢会学会思路和方法。那这里就讲讲前端,就是HTML+CSS+JavaScript,同样的学这个,可以学一下如何做表单提交到后台,顺便学习一下HTTP基础,感兴趣的话可以看我的一文讲透HTTP协议。后端的话就是复杂一些了,我的方式没老师教,也不系统,做后端主要就是了解用户是如何登录的,增删改查,如何和数据库打交道,我学过PHP,JAVA,Python,JavaScript,C,C++,MFC,游戏等等都做过项目,学的比较杂,但是就是折腾新东西特多。移动开发的,这里就不讲了,其实合作前端类似,但是用的是写客户端的方式,和做桌面差不多,都一样,这个过程看demo,做简单的练习,然后积累,积累到一定阶段,也是半年左右吧,基本上能算是某个领域算是入门了,能改写点东西了。
职业方向
基本上就是前端,后端,移动开发,小程序,桌面应用这几个方向了,选择一个方向,深入学习。一个人做不了那么多事,全栈除外。这里讲一下,深入的方法,首先是看书,需要的话,3-5本书,对这个领域通读一下,用前面看别人项目的方式,看一下别人的项目是如何做的,看文章,这个过程也是积累的过程。看文档,写demo,初学者可能需要一周到2周,高手则是2-3天即可。其实就是知识面的广度,深度,单个需要解决的问题难点的解决能力这几个点,积累到一定程度,也是半年时间,做个两个项目,也就算是定型了。
框架
有了前面的积累,做项目需要的就是框架了,有了框架把基础的东西做好了之后,做事情就是省掉基础的东西了。不用每次重复做开始的工作,这个也是做项目的最棘手最不好入门的事情了。我学习一门新技术,有了前面的基础了之后,就是解决这一步的问题。我的方式就是从别人的项目拆轮子过来撞上去,调试跑,这大概是最快的方式了。理论上,这里还需要自己有练习自己写框架的过程,有这个过程,就知道项目结构应该如何设计,这个过程也是差不多半年,对项目没什么产出,但是就是做好之后,以后就一劳永逸了。
必备技能
首先是性能优化的问题,这里包括web前端的性能优化,比如服务器配置哪些先跳过,前端的性能无非就是用上CDN,打包,加载速度的优化,还有就是运行性能的优化,慢的脚本要用算法去优化。做好这两个,前端还有的就是安全的问题,表单提交富文本需要过滤javascript,cors跨域问题。后端的,主要是数据库的优化,索引是主要的,慢查询需要专门设计结构,后端提交上来的字段都要检查,增删改查,定时服务跑脚本计算数据,登录上验证码防刷接口,数据量大,访问数据大的架构问题,并发问题,缓存问题。这里重点就是学习解决进阶的问题,这里给一个方法,就是我给了你指出大概的东西之后,你自己上网搜这个进阶的专题,看个一两天,基本了解了之后,你的能力也就上来了。
业务能力
专业的能力上来了之后,就是要有业务能力的提升。这里主要是对业务需求的理解,把需求转化为实现的能力,一般都需要开会沟通,做好约定,或者提出更好的方案。好的方案都能让彼此省时省力。对UI的理解,对产品需求的理解,和测试,项目进度的把控等等,这块的能力是工作时候才需要用到的了。
技术演讲与输出
除了前面的能力,还需要掌握技术写作和输出文档的能力。写博客是做最好的练习的方式,我刚好最近在做一个技术博客的网站,欢迎来我的网站写博客。其实写作也是有方法的。其实我这里写一个简单的方法,其实就是确定好章节,主题确定好了,那么接下来就是分步讲解就可以了。我的话风基本就是说话的风格,流水账,没有专业的语言。这样的文章好读,好些,但是不够专业化。除了文章之后,我最近准备学的就是做视频的输出,其实都一样,不断练习,就能成为更好的自己。
收入与管理
学那么多,好处就是有回报,基本上如果能学到做项目进阶,那么3-5k,实习是可以的了。学到职业方向,那就是6-8K,基本上能干活做项目了。能写框架,那么10-12k是可以的。到必备技能,则是15k以上了。剩下的就是管理,管理就是对项目进行分工,包括招人,如何招聘优秀的人才,筛选,培训,团队结构,分工安排这些了。如果你能到这一步,恭喜你,不错。