从零开始当一个程序员需要做哪些准备?

对自己的工作极度不满意,没有法定假日,没有双休,经常改变工作地点,居无定所。目前想换工作,程序猿在备选方案当中。

程序员的工作未必有双休(加班),未必有法定假日(加班,春节一般会休息),未必有固定工作地点(是否外派),你能否坚持?如果不能,那么建议你放弃这个想法。

题主今年25岁,之前没接触过任何编程方面的知识,可以说纯小白一个。个人认为学习能力还算可以,经过努力应该可以快速入门的。

我见过的说自己学习能力强的人多了,我自己上大学之前也没有接触过计算机,只会开机,关机,也是个小白。我也不是科班出身,现在也靠代码吃饭。

入门可以,快速入门的话看你多快了,如果你想21天学会JAVA,3个月搞定WEB开发,我只能说:如果你做到了一定告诉我,我磕头一路到你的坐标。如果你真的是什么都不会,我觉得入门至少要2年左右。

个人目前没有什么优势、、、、、、非要说优势的话就是敲代码可能比较快了。目前汉字录入速度每分钟稳定100+,全键位盲打。但是据说大部分代码都是可以复制粘贴的。。。

打字快是个小小的优势,大约占0.1%,因为程序员不是代码录入员,打字快不如知道怎么打。代码是可以复制粘贴,没错。问题是小说上的字也都是可以复制粘贴的,也没有很多人成为作家啊。

还有,不知道我25岁开始接触算不算晚,如果坚持下去可以干到多少岁。会不会对健康产生严重影响。。。。。不会真的如传说那般谢顶吧。

朕现在40岁,还在写代码。干到退休很正常,国外有60多岁的同事也在写代码。说没有35岁后程序员的人那是90年代,那个时候求伯君等大神也就30+,程序员还没有成为一种职业或者说刚刚成为一种职业,那个时候的计算机系毕业生大约等于网管。那个时候,谁也没有见过35岁以上的程序员。所以有此谬论。

关于头发问题,我的头发好好的,黑又亮,每天用海X丝。

请问想转行当一个程序猿需要做哪些准备和学习?

1. 准备一台好点的电脑。建议买Dell的Latitude系列7470/7480,基本要i5以上的CPU,8G以上内存(16G更好),256G固态硬盘。估计市场价7000左右。

2. 准备个移动硬盘(2T左右)和优盘(16G),放资料。

3. 如果可以,买个24寸的显示器,对眼睛好。外加一套无线键盘鼠标。这个算起来1500可以买到了。

重点来了,看你能不能做到:

1. 数学和英语能力:

不求你有多高的水平,但是高中数学里的函数(

,三角函数,对数函数,

),数列,集合没有还给老师吧。如果可以能掌握线性代数,高等数学,离散数学,概率论与数理统计更好。英语里3500个基本词汇,各种时态,单复数等还记得吧。不懂数学,你无法理解程序是怎么工作的,不懂英语,你看不懂英语文档。而且你要习惯用英语去写东西,读文档。否则无法提升。

你没说你英语怎么样,也没说你学历,所以不知道你要多久才能学会。如果英语不好的话,这个有得学了。

2. 计算机基本操作能力

Windows系统至少要掌握,特别是命令行方式(也就是很多人说的所谓DOS方式),如果要长进一点,学点Linux也是必须的。至少要会徒手装个Windows,装个Linux,能帮妹子修个电脑(正经的修)。

Windows的话我不知道推荐看什么书,反正我自己都是靠折腾(在没有Ghost的时代,我基本1星期重装一次系统,最高记录1天装了7次)学会的,靠Google和百度提升的。

Linux的话,建议入CentOS的坑。可以看《Linux系统命令及Shell脚本实践指南》入门,先看前半部分足够了。会在Linux下登录,登出,文件管理,用户管理,权限管理及网络配置,服务管理就可以了。剩下的以后可以再看。

3. 编程语言

至少掌握一门主编程语言,可以从java入门。Java可以看《疯狂java讲义》(讲得比较全,但是深度一般),《java核心技术(卷I)基础知识》入门。

通过学习,你至少应该掌握:

Java的基本数据类型和基本运算符

Java的流程控制语句

数组

面向对象编程:类与对象,继承,重载,多态,内部类,抽象类,接口。

常用的java内置类库,安装 jar 包,import/package

集合/泛型:List, Set和Map及其实现类,背后的原理

异常处理

IO

JDBC

这个过程会很长,至少6个月以上。而且你会反复的看,反复的学,不止一遍。正常情况下你会学3边以上才能稍微有些理解。原因是很多概念只有做多了,才能有体会,如多态:你不理解继承的话,你就无法理解多态。理解了多态,你会发现这个玩意有什么用,然后你看到集合后可能学着学着会发现,原来多态在集合里用得这么多。

如果要从事web开发,那么HTML+CSS+JAVASCRIPT也是无法避免的。建议你到学习顺序

HTML->CSS->Javascript

至少要掌握:

1. 盒子模型。能把你看到的网页原封不动的Copy出来。如知乎的登录页面,你能用html+css能把它高仿出来,基本就可以了。

2. 常用的库,如Bootstrap,JQuery。当然Angular和React也可以试试,但是不建议你初学的时候就去练。

然后你就可以练JAVA EE了,从最基础的JSP+Servlet开始看,然后是框架,现在的话基本是Spring MVC+Spring+MyBatis的框架组合了。

JAVA EE开发学的话,至少要6个月。别和我说21天学会JAVA EE,那是针对有C#,PHP等其他语言开发基础,并且做过相当长时间WEB开发的人来说的。程序员有个特点,会了一种语言后,再学另一门语言往往会很快,如学了C++再学Java,学了JAVA再学C#,基本可以快速上手。

4. 数据库

至少掌握一种数据库,建议从MySQL开始学起。至少掌握:

1. insert, update, delete语句。

2. select语句:简单的select语句,到关联表,到复杂的查询。总之一句话,能把人话翻译成sql语句就行了。而且查询语句是sql语言的难点,会了select语句,insert/update/delete语句都不难。

3. 数据库设计。能把客户要的东西变成一个数据库。

5. 算法和数据结构

至少知道常用的排序方法,再不济也要会冒泡法排序,这个真的是太基础了,大牛别嘲笑,我说给初学者听。

数据结构的话至少要看看链表,栈,队列,树,知道他们是怎么实现的。

6. 其他

1. Git。程序员不会Git还好意思叫程序员?建议看廖雪峰的Git教程入门,自己百度吧。

2. 学习,整理的能力,建议尽快学会用markdown格式写作,这个快,30分钟就应该能掌握。

希望题主能坚持,希望题主能有毅力为梦想而努力,希望题主5年后能感谢25岁时那个那么努力的自己。

推荐阅读更多精彩内容