很多想转行的朋友会问: 零基础我该如何自学编程? 作者作为一名文科生, 零基础转行为网易工程师, 在本文中作者分享了自己的学习方法, 希望对你有所启发.
很多工作一两年的朋友经常会感到迷茫, 尤其是一些在传统行业一线岗位工作的年轻人, 当前的工作机械重复, 升职加薪没希望, 薪资待遇又不高, 于是萌生出跳槽转行的想法, 看来看去, 发现高薪行业无非就是金融, 互联网, 房地产等行业.
于是很多人把目光投向了程序员这行当, 认为有一台电脑就可以学编程, 成本很低而且薪资待遇相对来说是比较高的. 目前互联网对于软件开发的需求极大, 现在是互联网 + 时代, 大数据, 云计算等技术的应用, 使得未来互联网化是必不可挡的趋势. 因此, 这是一个非常热门且有前景的行业.
上面的这些问题笔者也遇到过, 笔者本人也是一位文科转行过来的, 作为一名过来人, 我就自己的一些经验和大家分享下作为一名零基础的同学应该如何学习, 找工作, 选方向.
怎么入行
作为作为一名零基础的学员, 在开始学习编程时会遇到各种各样的挫折, 例如:
选什么样的语言
编程环境怎么搭建
语法看不懂
遇到错误了怎么解决
写完了代码调试不通过
......
我们看下怎么选择语言, 是选择最新潮的 Python,Go, 还是选择比较传统的 Java 呢? 其实没有绝对的优势, 都是各有优劣.
Python,Go 虽说比较新潮, 但是市面上的岗位需求还是比不了 Java 的, 毕竟 Java 作为最受欢迎的编程语言之一, Java 已经走过了 20 多个年头. 从已经落寞的诺基亚到现在火热的电商系统, 我们都能看到 Java 语言的身影. 在未来, Java 仍将会是最受欢迎的编程语言之一.
如果你想成为一名合格的后端工程师, 并且想入职知名的互联网公司, 那我推荐你深入学习 Java. 事实上, 一些高薪高福利的岗位都只有大公司可以提供.
小型互联网公司的福利都很一般, 比如公积金社保按最低基数缴纳. 因此我建议如果是想未来从事相关工作, 建议选择应用范围和前景比较广阔的语言学习, 有钱途.
这里并不是说你这辈子就只会这一门语言就行了, 只是说一开始为了节约时间成本, 你可以先学习主流的 Java 语言.
等你未来真正工作再学习其他的语言. 毕竟语言这门东西都是触类旁通的, 从编译型语言到解释型语言学起来不难.
事实上, 真正的开发者都是同时具备很多编程语言的编码能力的, 有可能一个项目用 Java, 而另外一个项目用 Python.
在刚入行的情况下, 我建议先全身心的投入啃完一门语言.
选好了编程语言之后, 你就该搭建环境然后开始学习了.
接下来该遇到的问题就是报班培训好, 还是自学好.
其实这个问题我觉得看个人, 如果你学习起来比较困难, 很多都不懂, 建议先找些视频资料学习一篇, 照着敲, 然后看书巩固, 培训班看个人财力和时间是否允许吧, 如果自制力差, 选择培训班也可以.
但是我不相信一个自制力差的人靠培训班就可以改变自制力差的本质. 其实, 像 Java 这类编程语言的学习资料可以说一搜一箩筐了, 完全不用担心哪里不懂, 网上资料太多了. 不懂的地方百度, 谷歌一点点消化了.
在学习过程中我不建议你去记笔记, 建议你在看完书和视频教程之后把所学的东西整理成博客, 用自己的语言把你学的东西总结一遍. 只有你自己掌握的知识才是真正属于你的, 照着视频或书本敲的那都算.
这一阶段, 建议你把一些语法, API 理解透彻, 能够融汇贯通的使用, 可以自己学习完后做一些小项目练练手, 因为你只是会使用 API 会语法, 那不能叫会编程, 那样和死记硬背没啥区别, 编程是一门动手能力要求很强的活. 一定要动手实践.
很多新手最容易犯的毛病就是写一个东西, 比如一个计算器上来就刷刷刷写代码, 其实这样是不对的, 任何一个项目都不是上来就动手写代码.
我们需要把业务的逻辑理清楚了, 哪些需要注意的地方都想明白了, 可以把程序的调用链或程序的执行流程画成流程图的方式. 把一些该注意的点都考虑到位然后在动手写代码. 这样才能理解透彻.
在学习过程中不要把自己当初一名学习者, 而应该把自己当成一名真正的开发者:
记录博客, 对于未来的求职也是一个加分项, 尤其是对于新手而言.
练习的代码放 GitHub, 方便你以及同事查阅, 这也是一个加分项.
不要死记硬背语法和 API, 这样是没有任何用处的, 你是要用语言去实现一些功能. 我见过很多新手抱着一本《Thinking in Java》在啃, 其实刚入门真的没有必要.
简历上写: 通过 XXX 技术实现了 XXXXX 项目, 而不是精通 XXX 语法, XXX API.
接受不确定性, 因为你在实际的编码过程中会遇到各种问题, 不懂的就去查资料, 然后消化和理解他.
要递归地去学习, 而不是拿着一本书从头把语法肯到尾. 什么是递归学习, 递归学习是指为了搞懂 A, 而去学 B, 为了学会 B, 而去学 C, 这叫递归学习, 递归虽深, 但有回溯, 它最终会回溯到我们的起点.
规范编码风格
好的代码风格能够降低理解难度, 减少 Bug, 提高开发效率. 我们的工作是需要和其他开发一些协作编码的, 因此好的编码习惯一定要从一开始就养成, 例如:
1. 函数名, 变量名采用驼峰样式;
2. 函数名变量名都有与功能相关的字面意义, 代码中不出现表意不明的变量名与函数名;
3. 缩进采用 4 空格宽度的 Tab;
4. 花括号 "{" 和 "}" 单独占一行;
5. 注释单起一行. 一般会在需要说明的代码段上方;
6. 定义变量时, 每个变量单独定义并单独占一行, 不出现类似 int i,j; 之类的代码;
7. 所有的函数只干一件事;
8. 复杂的函数一定要写注释; 否则时间长了你自己都难以理解;
以上只是简单列举了一些, 建议新手阅读下阿里的《码出高效: Java 开发手册》了解下大公司的 Java 编码规范.
基本功要扎实
作为一名零基础的学员, 一定要把计算机基础打扎实, 这个过程并非一朝一夕或者参加个培训班突击学习三个月就可以完成的, 这需要大量的理论学习 + 实践.
我们只有明白了计算机基础, 后面的路才能走得稳, 如果一开始上来就学习编程语言肯定是不行的, 这就好比武侠小说里面的练武之人只会花拳绣腿, 内功不行, 打出去的招式都是软绵绵的.
那么计算机基础知识包含哪些呢? 计算机原理, 操作系统原理, 网络原理, 数据结构和算法等.
如果这些基础的原理掌握不牢固, 你是写不出来优秀的代码.
举个例子, 当网络出现异常, 你能快速定位出来是哪个层面出现的问题吗? 是应用层还是网络层或是硬件故障.
再比如一个程序到底是用单线程还是多线程, 这些都是开发人员应该要考虑到的问题.
合格的程序员不是上来就刷刷地敲代码, 而是先分析一个程序的设计思路, 可能会遇到的问题和瓶颈是什么. 因为程序是要和系统, 网络打交道, 数据结构设计的合理不合理和算法使用的恰当不恰当直接影响到你程序的性能.
因此基本功一定要打扎实.
好了, 以上是我个人的一些新手入门建议, 希望能给你带来一些有益的帮助.
小编是一个多年开发经验的程序员, 年初整理了一批 web 前端教程, 帮助想要成为 Web 前端程序员的人. 从零基础到各种框架的教程都有. 只需要加入到 Web 前端学习 qun:296,212,562. 即可免费领取, 种一颗树最好的时间是十年前, 其次是现在. 只要想学习, 不存在早晚.
来源: http://www.jianshu.com/p/fef5a7a61d3c