知乎上关于“0基础如何入门/转行程序员?”的话题,普遍都有大几万的阅读,而且也常常有同学在公众号后台向师姐咨询类似的问题:
“大学毕业,计算机专业,想从事编程,但感觉学的不够深入”“销售,想转行做程序员,不知道能不能学会”“0基础,听说程序员高薪,想进入这个行业”。…
可见,很多0-1岁的编程新人对此是有困扰和疑惑的。
更具体的来讲,师姐将问题汇总成以下三个方面:
1.没毕业或刚毕业,想要做程序员,但不知道从哪里入手?
如,对开发工程师要做的活仅仅有个模糊的概念,但不知道应该如何去学习。在网络上搜索了一些书和课程,苦于没有系统,不成体系,全凭自己的想法,无法快速落地学习。
2.已经工作了1-2年,因为各种原因想要转行做程序员,但不知道从哪里开始?
如,目前的工作繁琐,没时间自己一一学习编程知识,每天都想要重新开始,但是都没有勇气走出第一步,度日如年。
3.大学里学习的计算机专业,但实际工作中没有教没人带,有些功能根本无法实现,更不知道从哪里突破?
如,在小公司做产品,工作内容极度不规范,天天被老板驱动着。。。都是在做一些很琐碎的工作,想独立做一个大项目,但是无奈自己的能力不够,也不知道如何去做。
其实,造成以上问题的根本原因在于——
0-1岁的编程新人们对程序员这个行业的认知还不够。就是说,互联网行业飞速发展,我们不清楚现在的企业都要求程序员有哪些能力,更不清楚这些技能要从何学习,大项目思路如何确定?
大多数的同学,只能去找有经验的师兄或者领导去问,或者去论坛文章来解决自己的一些问题,但碎片化的学习根本没办法让你入门。整个人的状态就是:编程好难,入门无望。因此,师姐想要从以下两个维度帮同学院解决疑难:
1.想要做高收入的程序员,都需要学习什么技能?
换句话说,现在企业都要求你有什么样的技能?互联网已经发展到了成熟的阶段,软件不断迭代,需求逐步升级,市场在不断的完善。企业也随着互联网的浪潮对编程人员有了基本的能力要求。
如—— 有较强的系统架构和系统设计能力,深刻理解面向对象的思想精通MySQL/Oracle,有很强的数据库设计能力熟练掌握Spring/MyBatis等主流开源框架熟悉互联网领域的常用技术,包括分布式缓存、消息中间件、搜索引擎等深入学习过开源框架源代码熟练使用RPC框架,具备相关的分布式开发经验
以上,基本是企业对新人要求具备的技能。而你要做的就是让自己越多的掌握这些技能,作为入门,不需要样样精通,但起码做到大部分熟练且能直接进入企业工作。
这样无论你是在大学有所基础,还是直接从传统公司转行,都可以确认自己的努力目标,正确认识自己开始有效进步。
2.如何掌握上述程序员的各项能力?
学习的方式基本可分为两个类型,一个是碎片化的学习,一个是系统进修。
如你知道了我需要掌握数据库,你可以从网络上各机构大量的视频或者书籍得到相关的学习资料。你也足够努力可以,从大量的资料中,发现真正的干货,从而不断学习,这属于碎片化的自习。
你浪费大量的时间从海一样的资料里淘出珍宝,确仍然无法判断资料的时效性和本身作者的局限。
而很多人,都在享受“我今天有收集了很多资料”的状态,但却从不思考如何将这些资料转化成自己的知识。就好像,你拥有1万本编程类的相关书籍,却无法真的在一个项目负责一个模块,这是没有一点作用的。
但,这些资料却在不断腐化你,这些资料告诉你在学习,在成长,但实际上只是自己的一厢情愿。你会慢慢的在温水煮青蛙的环境下溺死。
那么,应该如何做呢?
其实真理就是你总听到的:
第一,你要有效并快速的筛选出现在企业所需的技能点,意思是,你学完后,会有企业要你,拿到offer。
第二,你要为了技能点,进行有效大量的刻意练习。
第三,你需要有真实项目实战,如自己参与一些功能的实现,检验自己的学习成果。
只有这样,你才能真正掌握这些技能点,获得社会和企业对程序员的认可。
当然这个过程,真实生活中是非常非常难的。
也许你自身永远不知道知识对于当下的企业是最关键的,也许你不会有毅力跟着书本的章节来进行刻意练习,也许你也没有一个靠谱的师兄和领路人带着你走。