答案是:能。
但可能性有多大?英语和数学不好怎么办?如何才能转行成程序员?
先看一个数据:中国目前的程序员总数大概为万;而科班出身,即本科或研究生是计算机专业的程序员大概为40万。
也就是说:外行人不仅能转行做程序员,而且现在从业的大多数程序员都并非科班出身。
学会写程序能从事哪些技术岗位?程序员这个词算是一个统称,百度百科上给的定义是:程序员(英文Programmer)是从事程序开发、程序维护的专业人员。
具体能从事的岗位大概有:
一、开发工程师
包括:前端开发工程师、后端开发工程师、算法工程师、移动开发工程师、软件开发工程师、嵌入式开发工程师等。
不严谨的说法是:前端是用户看得见的,比如浏览器的图片、文字;后端是用户看不见的,比如后台数据。前端开发工程师是写代码给浏览器看的。后端开发工程师是写代码给服务器看的。
编辑搜图算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
一个不恰当的比方,算法工程师就像是科学家,做完研究之后把研究结果交付给后端开发工程师应用。这个岗位对数学和逻辑思维能力有很高的要求。
移动开发工程师跟前端开发工程师类似,移动开发工也称为手机开发,或叫做移动互联网开发。是指以手机、PDA、UMPC等便携终端为基础,进行相应的开发工作。
软件开发工程师一般指从事软件开发职业的人。软件工程师跟一般程序员的分别,在于一个程序员的工作是按照指定的规格进行编码,而软件工程师的工作则需要设计和规划。
嵌入式开发是指在嵌入式操作系统下进行开发,包括在系统化设计指导下的硬件和软件以及综合研发。
二、技术管理者
包括:主管、经理、技术总监、CTO等。
技术管理者都来源于一线,每7~10个技术人员中有一个技术管理岗位。
对于一线技术人员来说,有了3-5年经验之后转管理是一个比较好的契机。
三、架构师复合开发工程师
包括:前端架构师、后端架构师、全栈(前端+后端)、后端+算法等复合开发工程师。
架构师跟普通开发工程师的区别是:开发工程师做的是一线的工作,而架构师更多的情况是作为技术储备,类似专家的角色。他们不是把系统架构搭建好之后就没事了,普通技术人员解决不了的疑难杂症都会交给架构师解决。
架构师比管理者数量更少,通常5~6技术岗位中配备一个,小公司里面多由CTO或经理兼任,大公司会有专门的架构师,底下不带人。
四、测试开发工程师
测试:查找软件缺陷;开发:开发工具、平台系统。
厉害的测试开发工程师既能测试又能开发。因为互联网时代不像从前软件刻盘卖的时候,需要把产品测试得非常完善才推出,而是可以在线快速修复bug,迭代版本。
五、运维工程师
负责日常维护,确保整个服务的高可用性,同时不断优化系统架构提升部署效率、优化资源利用率提高整体的ROI。
简单来说就是保障业务长期稳定运行(如网站、游戏的服务器),同时保障数据安全可靠(如用户名密码、数据)。
六、DBA(数据库管理员)
一般意义上的数据库管理员是一个负责管理和维护数据库服务器的人,数据库管理员负责全面管理和控制数据库系统,包括数据库的安装、监控、备份、恢复等基本工作。
在大公司会专门设置DBA,而在小公司里由通常开发工程师代替。
程序员需要多少英语和数学基础?说起转行做程序员,很多朋友就又要问了:程序员是不是英语和数学都特别好?总的来说,根据岗位和等级的不同,所需要的基础也不一样。
对于程序员来说,英语的主要用途有:
1.阅读英文原文的手册、资料和论文。
2.用英语进行日常工作交流,包括文字交流和语言交流。
需要英语基础的情况有:
1.工作中使用到比较前沿的技术或者框架,因为相应的技术文档、论坛都是英文的。
2.在外企工作或者工作内容主要是服务外企。
3.算法工程师对英语的要求需要至少达到GRE水平。
数学主要用途:
1.逻辑思维;
2.算法,特别是计算机的算法;
3.机器学习或者人工智能中的计算模型。
需要使用的情况
1.前端开发工程师和移动开发工程师,在不涉及3D以及图形学的前提下,需要的数学基础最少。
2.一般的后端开发工程师需要掌握常规的算法和离散数学等知识。
3.算法工程师还需要掌握机器学习或者人工智能中的计算模型。
那么前端和后端工程师适不适合新手转行呢?其实,转行初级的前端或后端工程师,你所做的动作是使用一个普通的框架,学大众化的技术,理论上不需要英语基础都可以学会的。
当然,在任何情况下,有良好的英语基础总比不会强。
所以,对于想转行做程序员的伙伴来说,可以先转行成为前端工程师,再逐步提高自己的英文水平和学习后端或算法工程师的知识。
这里并不是说前端工程师的工作简单,而是相较于后端工程师,其知识对于外行人来说更直观更便于理解,也更容易成功转行。
如何才能成功转行?那么想要转行成为程序员该怎么做呢?这里给大家推荐一个“五步法”。
这五步分别是:
1.确定要从事的职业
2.根据职业确定技术栈
3.用6个月左右的时间学习基础知识
4.刻意练习
5.求职就业
1.确定要从事的职业
在转行选职业的时候有一个策略:选择薪水还不错,但有一定技术门槛的工作。
对于转行者来说前端工程师是一个不错的选择。数量大、需求大,而且门槛相对比较低。
在这里我们把“五步法”再发展一下:找工作或转行时,选择需求大、上限高、有一定门槛的岗位(这个门槛你得够得着)。
需求大,意味着工作容易找;上限高,意味着有精进的空间,可以干很长时间,甚至一辈子;有一定门槛,则不是谁都可以做,竞争人数相对少,可替代性较弱。
2.根据职业确定技术栈
技术栈:IT术语,某项工作或某个职位需要掌握的一系列技能组合的统称。
不论是不是程序员,我们都会遇到一个问题:“想要在某个领域上有所提升,该学什么?”
用游戏来打比方,技术栈就类似游戏中的职业技能树,法师有法师的技能树,战士有战士的技能树,不能“点错技能”。
那么就要了解自己要从事职业的技术,就像有了一张地图,知道自己要去哪,要干什么,就可以把好钢用在刀刃上,把自己的时间、精力、金钱用在需要和重要的事情上。
3.用几个月左右的时间学习
通常来说,报班培训学习的话,需要4-5个月的时间。
但对于已经工作的伙伴来说,可以选择线上学习,不会给自己造成经济压力,影响生活和学习的状态。
建议在正常上下班之外,每天花3~4小时学习。这样大概需要学习8~10个月的时间。
4.刻意练习
刻意练习包括:实战和面试刷题。
刻意练习,指有目的性地大量重复性地练习,并获得反馈。其核心包含:要有特定的目标、主动练习、专注、走出舒适区、大量的重复性练习、获得到反馈并调整、巨量时间的投入。
5.求职就业
学习练到什么程度能去找工作呢?两条标准:
1.能过面试
2.能干活。
保证自己能过面试和试用期。我们找工作时还经常有一个思维误区:“没有工作经验能转行吗?”当然可以,要不然咱说了这么多不都是废话了吗。
其实,“没有经验”只是用人方委婉拒绝你的借口,人家不好意思明说你技术不行。只要技术过硬,没经验也能转行。
人这一辈子最幸运的事,大概就是做着自己喜欢的事,还顺便把钱赚了。
愿你之后的每一次选择,都是不断接近梦想的勇往直前,而不是被生活所迫的无奈之举。共勉!