先弄清楚从事这个行业可以做哪些岗位:
从事IT行业就都是编写代码的程序员吗?其实不是这样的。IT行业有很多职位可以选择,包括但不限于研发、测试、运维、产品经理、设计、算法、DBA……平时所说的程序员基本上都是指的研发岗位,这个岗位对技术的要求也是最高,而且加入同样毕业找工作实力相差不大的情况下研发的工资往往是最高的。不过,这些不同的岗位内部又有很多区分,下面我会挑一些介绍每个岗位的工作内容和内部一些基本的划分。
- 研发岗
研发岗的工作说白了就是写负责编写调试代码的,天天熬夜写代码指的就是这些人。这个岗位大体可以分为前端开发和后端开发,当然也有全栈(fullstack)开发、运维开发、Devops…
一个产品一般来说是分为前端部分和后端两部分,比如一个网页,前端部分就是和用户交互的部分,后端则是整个网页的后台逻辑和数据的组织方式,后端往往更加体现业务逻辑。(有些公司的一些项目往往把前端做的富丽堂皇后端却烂的一匹,这样比较容易骗到投资人的钱)
前端开发:前端开发又可以分好多种类,比如按照产品类型分可以分为web前端开发、app前端开发、桌面端前端开发;按照技术的不同又可以分为React开发,Vue开发……
后端开发:后端按照语言可以分为java开发、c++开发、python开发、node.js开发、Go开发……每种开发类型要求的开发语言不相同,一般做后端开发最好了解至少两门语言会比较好。其中国内大部分大公司用java的比较多,但Python和Go在最近几年开始流行起来。论述各个语言的差异不是本篇讨论的范围。当然,后端开发也可以分为ios开发,安卓开发等。
- 测试岗:
我就不用课本上的专业的话来论述这些岗位的作用了,做测试主要就是利用一些测试工具和框架对研发人员开发的软件进行测试,比如白盒黑盒测试之类的,说白了就是个研发找bug,也有一些公司会提供测试开发这个岗位。对测试人员的代码水平要求不高,以前带我的领导直接和我说你就把测试当成编程傻瓜就可以。测试基本上就是测出程序员的Bug,然后提交给程序员要他们改。这里有一片测试人员用的技术栈文章,贴出来分享给大家:
三年软件测试技术栈梳理blog.csdn.net
- 运维
运维人员和公司技术人员的划分在小公司不是很明显,在大公司可能就会分的很清晰了。运维一般做的工作就是当软件测试没毛病后负责把产品部署到生产环境上去给用户实际用。这里面就包括了自动化部署、服务器性能、网络吞吐、服务器压力监控、数据库性能、数据管理等一系列的工作,小公司有时候网线啊,网络啊,服务器啥的都是运维负责,甚至再小的一些公司这些工作会直接摊到研发的身上。不过做为研发人员,运维技术栈中很多还是对于研发来说也是要必须会的,比如Docker、nginx、git、tomcat、k8s……运维不多说,同样也分享一篇运维的技术栈,提供给对这个方向有兴趣的同学:
运维-技术栈 – 清风木 – 博客园www.cnblogs.com
需要一提的是,有些人认为开发测试运维在IT行业三足鼎立,这是最主要的三个职业了。三个职业又相互交叉,形成了包括测试开发、运维开发、运维测试、全栈开发等不同的岗位,每个岗位要求的技能树不相同。但是,随着技术的发展和公司业务的需要,对IT从业人员的技能要求也越来越多,fb甚至要求全部开发都是全栈开发。只能说程序员还是学无止境的。
产品经理、算法、实施……严格来说已经和IT相隔比较远,但也是计算机从业人员可以去做的工作,这里简单介绍以下:
产品经理:主要负责产品的设计和业务需求的对接,完全不需要代码基础都可以做,比较适合女生。一般都是给程序员提需求,给程序员安排活干,安排不好容易得罪程序员,哈哈,漂亮小姐姐除外~感觉产品经理还是比较牛逼的,想象张小龙,微信的设计者,哈哈。
算法:算法工程师,对这个职业我了解不多,但是对学历的要求比较高,很多公司都是要求博士学位去设计改进一些人工智能算法之类的,比如计算机图像识别,产品推荐算法啥的,工资很高。
实施:实施这个行业,我认识一些学编程学不进的一些同学去做这个职业,说白了就是产品售后,进公司以后教给你一些基本的软件使用方法和一些安装方法,技术要求很低很低。
DBA:DBA这个主要是管理数据库,对数据库原理和一些数据库软件比如Oracle,Mysql,Sqlserver要求比较多,基本不需要变成知识,不过了解一门比如python的脚本语言会比较好。
2. 对前后端开发人员所需要的技术栈有个大概的认识
首先,明确你的方向,你是想做一个后端开发还是前端开发or全栈开发。我现在分别介绍以下从事这几种开发作为一个小白所需的技术栈和学习路线。
首先介绍作为一个研发人员都建议掌握的一些基本内容
- 版本控制工具:git –用于协同管理代码和代码的历史记录
- 终端使用
- 基本的数据结构和算法
- github使用
- SSH
- HTTP/HTTPS协议及其接口
- 设计模式
- 编码和常用加密解密原理
- linux的使用
- Json,XML等数据结构化工具
web前端开发
从事前端开发需要了解的技术如下:
- 网页基础知识:HTML语言,css,javascript,dom
- js库:jquery
- 包管理工具:npm , yarn
- css预编译:Less,SASS
- css框架:Bootstrap
- 构建工具:webpack
- 前端框架:React,Angular,Vue
- ……
后端开发
从事后端开发所需要的技术如下:
- 选择一门语言:C C++ Java Python Node.js Go ……
- 熟悉一种数据库使用:Oracle,Mysql,Postgresql ……
- 选择对应语言的一个框架:比如Django(python),Node.js(Express.js),Java(SSM)
- 缓存工具:Redis
- 接口风格:Restful
- 通信协议:HTTP/WebSocket
- 消息队列:RabbitMQ
- web server:Nginx,Apache、
- 容器:Docker
- 操作系统:进程/线程,多进程/多线程,同步/异步,并发/并行,进程间通信,锁,内存管理,I/O 相关知识……
- 其余的包括但不限于网络,编译原理,数据库,微服务架构,分布式存储等各种知识……
由于自己的经验有限,以上也就只是列出了一些涉及到前后端开发所需要的基本的知识,其中黑色粗体的内容是入门开发行业所必须的内容,而全栈开发的要求就是至少以上的这些内容都是需要有所了解和掌握的。当从事开发过程中,大家会有更多的内容需要去学习和掌握。
3. 我是一个小白,我该怎么从完全不会到找到一份开发的工作呢?
我想,很多想入门这个行业的新人都面临一个这样的问题,甚至是一些本科院校的专业学生,毕竟学校教的东西和工作的内容是不一样的。下面我就分别从非本专业学生和本专业学生两个角度来介绍一下入门的步骤:
我不是该专业:
如果你是一个非科班出身的从来没有接触过计算机方面知识的人,对于你们来说,转向计算机这个行业会稍微有点难度。不过要相信,只要功夫深,铁杵也能磨成针,什么工作只要不笨并且有一根好学的心,然后在一个行业里泡的时间够久,就总会有收获的。在学习之前,确保你的有一定的英语基础。
对于非科班人来说,由于可能没有科班学生那个时间和机会了解很多基础的知识,建议先从语言开始入手,选择一门语言然后跟着教学视频试着做出一个项目,能够让刚开始就产生成就感,有利于日后向外扩展学习。语言的话建议从简单点易于上手的语言比如python入手,最近几年python靠着人工智能的发展也风生水起,Python同时也由于它快速开发简单上手的特点深受一些公司的欢迎。并且市面上已经有了成体系的python教学资料,方便初学者学习和掌握。
我自己是一名从事了多年的前端老程序员,小编为大家准备了新出的前端编程学习资料,免费分享给大家!
如果你也想学习前端,那么帮忙转发一下然后再关注小编后私信【1】可以得到我整理的这些前端资料了(私信方法:点击我头像进我主页有个上面有个私信按钮)
这里,建议大家跟着一些学院的教学视频开始学起,教学视频不一定要去机构花几万块钱学习,大家完全可以去某宝上面搜相关视频,几块钱就搞定后,后面就下载下来慢慢看,推荐的学习路径是这样的(以Python为例):
- Python在电脑的安装和对这门语言的基本认识,了解环境变量是怎么一回事
- Python语言的基本认识和语法介绍吗,pip包管理工具使用
- 在IDE pycharm或者visual studio 上使用python写helloworld程序
- Html、Css、js一些基本语法的学习,学会写一些简单的静态页面
- 数据库Mysql学习使用,了解数据库相关概念,知道数据库的增删改查
- Django框架的使用,尝试跟着教学视频做出一个购物或者博客之类的网站,在这个过程中对框架有个大概的认识
- 在项目的开发过程中使用git做代码管理,学会使用github
- 学习项目在linux的部署,熟悉使用uwsgi工具,进程管理supervisord或者systemctl,nginx服务器部署
当完成了以上学习后,对于找到一份实习工作不是什么问题,当然,这些也只能算是一些简单的花拳绣腿罢了,如果想让面试官对你的技术和能力信服口服,尝试由一个点引出一个面,向周围更深的内容学习:
- 系统的学习操作系统,了解进程/线程,多进程/多线程,同步/异步,并发/并行,进程间通信,锁,内存管理,I/O 相关知识
- 系统的学习数据结构,了解队列(Queue),栈(Stack),数组(Array),数列(List),树(tree)等相关概念
- 系统的学习计算机网络:了解网络OSI七层参考模型,了解HTTP、TCP、UDP、ftp等相关概念
- 学习C语言这门高级语言中偏底层地语言可以帮助你了解其他语言的原理,并且了解向java面向对象和其他面向过程序言的区别
- 理解一些常用语言的内存分配原理
- 学会Docker的使用,学会使用一门web框架,比如React
- 学习数据库的性能优化原理和方法
- ……
技术的掌握往往是多多益善,只要你掌握的越多,就越能让面试官对你的技能有所肯定
本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/205331.html
如有侵犯您的合法权益请发邮件951076433@qq.com联系删除