开云体育 开云官网开云体育 开云官网开云体育 开云官网之前就有想过写一篇关于这个问题的长文,因为还有工作,慢慢写了有两天,很多观点都会带有个人知识水平的局限性,如果有说错的地方,请大方的指出来,或者您也可以写下你在这个行业的领悟,我最后希望这篇文章能帮助高考的孩子或者大一大二不太了解的新生或者有意从事计算机方向的人的一本入门指南。接下来,我会从就业人数、著名公司、产品代表、门槛、工具、技能、业内现状和发展前景,从软件和硬件两个大方向分别描述,至于非技术方向类似于产品,推广运营我并不是特别了解,不敢瞎说。请大家积极分享同时提提意见。
指在计算机领域里,需要接触到电路底层的工程师,实际上在电气领域,在电方向上分为强电和弱电,强电指高压传输,电动机等高电流作为能源动力领域,弱点就是指微电子方向的信息处理领域。计算机硬件工程师的工作范围在弱电,主要内容主要有PCB设计(印制电路板),ic(芯片)设计,FPGA工程师。往上还包括涉及针对特定硬件做系统开发维护的嵌入式工程。
PCB工程师的工作就是设计一个高速稳健的交通网络,把电路板上各个功能不同的模块连接起来。他们的工作环境如下所示。
FPGA全称叫现场可编程逻辑阵列,就是理解为一个可以编程的硬件。传统意义上的集成电路是定制化的,针对特定的需求设计特定的电路板。而fpga可以通过熔断机制来动态修改电路的结构,达到动态编程的效果,简单点说,针对一块FPGA,你可以把他烧制成视频编码器,也可以烧制成无线wifi通信模块。虽然这些算法都可以通过软件实现,但是硬件实现的效果算法成本更低。开发语言常用的有VHDL(硬件描述语言)。
IC工程师就是设计一个高效运算的大脑,涉及到流水线机制,超频,最重要的是解决纳米级别下电流扰动问题,最大的制约因素也是材料工艺问题。
以上三种岗位其实在现代学术分支类还是属于EE下的子类,事实上从事这个方向的人也大部分是学习电子电路工程的同学。这个专业的特点就是强者通吃,全球唯二的两家芯片公司intel、AMD。而且他们的核心竞争力并不是芯片设计能力上,而是在制作工艺上。现在在移动终端统一江湖的还有英国Acorn有限公司设计的ARM芯片,它只是提供一个解决方案,设计图纸,具体的制造还得是华为,三星自己开场设立。但是同时又有很多小众领域,比方说无人机,安全门等等你又需要做专门的PCB设计,所以硬件工程师也是有市场需求基础的,但是也不多。从技能需求来看,要求数学知识扎实,逻辑严密,电子电路知识更多,类似工具反而并不是显得那么重要。从未来的发展前景来看,随着智能硬件物联网的推广,会有一波大红利。
主要是针对特定硬件移植一套操作系统,类似于linux,VxWorks等,甚至于自己开发一个只能满足需求的未知系统,你需要读管脚信息,读时序。但是大部分还是使用成熟的系统移植,自己写系统一来太慢,二来肯定很多坑。相对来说在这个层面上的人都是大牛。或者做一些驱动开发,比如说,每年让无数游戏宅剁手的最新NVIDIA显卡,都需要这个级别的工程师来做相应的显卡驱动。
薪资水平绝对高,起薪百万级别,入门门槛也绝对高,业内最强不是在研究所,而是在公司。
在基于已经能跑的机器上做开发,比如说,操作系统已经提供了最基本的文件管理,内存管理,CPU管理的情况下。你在此基础上做特定应用的开发。普遍打交道的语言工具是C。本人实验室其实是这个方向的,有过军工和国企的一些项目,从这层往上,到架构师之前,本人至少都接触过一些。能说点自己的感悟,而不是查资料了。
做嵌入式应用开发最蛋疼的不是开发而是调试,在这一层做开发会有各种奇葩问题,比方说你昨天还跑得好好的,今天可能就崩了,可能是硬件问题,虚焊?电容击穿?电路板电流扰动?也可能是软件问题,野指针(很少有系统做了虚拟内存,你所有操作都是在实际的内存空间上操作的),内存溢出。
薪水来看,起薪比较低,今年华为给的算是不错了,能到16K,但是随着你对业务的熟悉,工资是没有上限的,最终达到的升级状态就是系统级别嵌入式工程师。
传统的桌面应用软件类似于office,浏览器啊在PC端上运行的软件。主流的开发框架有Qt,MFC,现在还比较强势的一些桌面应用领域就是微软的office和桌面游戏公司。以及基于微软的C#的开发应用,基于QT的C++开发应用。其他的不是特别了解,但是给我的感觉就是这个市场不怎么活跃,招人很少,身边也没有认识的人走这条路线。经知友私信补充,这个行业的薪资并没有随着互联网浪潮而有大幅度增长,该知友在.NET平台下使用C#开发,有5年的从业经验,15年的薪资水平在11k左右,后来转行去了android,当然这可能只是个例,有很多厉害的人我们可能不知道,先谢谢这位知友知友了。
从google发迹以来,基本上所有新兴的巨无霸公司,facebook,bat,amazon都是依赖于互联网的发展,依赖于这群互联网应用工程师。同时他们也就是在网上自称为码农的这个群体。他们这个群体应该能占到计算机领域70%以上的研发人员。
广义的前端就是指呈现在用户视觉的领域,直接可以让用户感受到的开发,往下会细分为web,andoroid,ios。
web前端指在浏览器(包括手机和pc浏览器,或者是webview控件,甚至于搭载JS引擎的任意环境)上运行的一系列应用。
传统意义上的前端主要是指网页,html,css,js那一套了,或者再加上html5,css3。但是最近几年前端发了很多变化。
这个方向是这几年的大热门,随着机器性能的提高,v8引擎的普及,虽然js和c,java的运算效率还是差上很远,但是目前来看对于呈现展示内容已经基本够用,所以,近几年出现了各种叛逃,比如说cocos2d-js来做游戏,react-native来做客户端啊。同时,随着大量人才的涌入,特别是这两年,大量的前端框架,解决方案让你感觉跟不上时代,讲真,两年前还是JQuery的天下,现在你不知道Vue,Angular都不好意思打招呼。同时由于机器性能的提高和V8引擎的强劲有力,脚本语言的另一个优点就是无须编译运行,导致了它可以实现一个其他语言无法做到的事情---动态更新,可以在app不发版的情况下动态的大幅度更改它,进一步的增加了JS的需求量。
薪资比起前两年来看涨了不少,而且市场需求量也很大,基本上任何应用都没有完全脱离web的框架内。门槛也不算高,但是往下深入一样会有很多东西要学。
android是一个基于linux内核开发的开放源代码移动操作系统,由Google成立的Open Handset Alliance(OHA,开放手持设备联盟)持续领导与开发,主要设计用于触屏移动设备如智能手机和平板电脑。iOS(原名 iPhone OS,自 iOS 4 后改名为 iOS)是苹果公司为移动设备所开发的封闭源代码操作系统,所支持的设备包括 iPhone、iPod touch 和 iPad。
目前看来,智能机市场上,android的市场份额在四分之三以上,ios占了大概五分之一,剩下的都是什么塞班,winphone我们应该不用考虑,你应该也不会想做这个的。虽然android和ios市场占有率相差悬殊,但是android工程师和ios工程师基本上能维持相同的人数,所以你如果想从事移动端开发,就业市场来看的话,没有很大的区别。
相应来说,可能android的入门成本门槛比较低,java相对于Object-C,swift来说还是比较流行的,同时,相对于iOS(mac电脑+苹果手机+一年100刀的开发者账号)的起始1.5W的投入来看,可能android的竞争会更激烈一些。
由于android的开放性,基于开源的linux开发,所以业内会有很多公司针对于android做所谓的“深度定制”,“适合国人的智能手机”等,那就导致了android的各式各样,不同的手机厂商在某些细节方面又有不同的理解,倒是android开发最大的一个问题就是适配。同时由于android的权限开放性,他会有很多可以hack的地方,针对android的木马病毒(360管家)很多,你要考虑到的东西会很多,不过目前来看,android的每次发版,安全性也越来越好,权限管理也越来越规范,以后会越来越好。而iOS的封闭特性,相对来说被发现的漏洞少(并不是不多,我个人觉得绝对比android多),但是每次爆出都是大新闻,它的开发相对来说规范很多,有很多成熟的解决方案,他的主要问题其实是iOS审核这块,大部分的公司都有过app被appstore毙过的经历。
另外,最近苹果公司也在推swift,如果你要做iOS,由于各种历史问题,OC并不能完全弃掉,但是swift也会成为你求职的考点或者亮点,通过同事的反应来看,swift比OC更爽,它更愿意做swift。
后端开发指的是,在为前端提供数据支撑的一个大的总类,包括数据库,业务逻辑处理,数据处理等。主要的开发语言分两个方向编译型语言,java,c/c++等,他的特点就是运行效率高,相同机器配置的情况下能支撑更大的访问量,适用于超高并发度,比方说淘宝后台是java,网易游戏腾讯游戏是c++。另一种就是以php、python等解释性语言,他们的特点就是开发效率高,无需编译,写完就能运行,主要针对一些运算量不大的中小型网站,比如说你的个人博客,管理后台。
特意把它从后端中拿出来,主要是他的开发任务比较少,但是同样很重要,当数量量达到一定程度,数据库服务器都有上千台的时候,就需要专业的人士做做数据维护的工作了,它的工作难度一样很多,容灾备份,热替换。而且目前的趋势都是服务化,组件化,虚拟化,一样有各种难题有待于你去解决。但是从市场需求来看,只有大厂才会招专业的运维工程师,创业公司100台服务器以下的小公司一般都是托管到各种云,然后由后台工程师兼任。
也就是那些经常说自己是业务狗的丝码农,觉得不做架构设计比较low,他们主要的工作就是实现pm的工作需求,比方说双十一来了,pm说,这个要添加一个抢红包的功能,然后后台业务狗就忙起来,要解决高并发下的死锁啊,重复请求啊,带宽啊各种功能,当然也需要前端,但是前端并不需要考虑复杂的并发性问题。而如果这些业务狗在处理高并发问题上有所建树,那么他们就能一步步升级为架构师。那个时候就可以把丝码农的丝去掉了。
一个产品或者一个新的功能需要上线,必须要经过完备的测试,测试工程师目前其实有两种,一种是纯测试,另一种是他的升级版测试开发工程师,它能在测试的过程的顺手把小bug改了而不需要返工。好的测试开发工程师工资也可以比做开发的工资高。
而且你们也不要小看测试这个东西,不要以为你只会点点鼠标看看对不对这么简单,合格的测试工程师需要熟悉各种测试工具,能自己写测试脚本,能找到bug,而且还能知道为什么会出现bug。这个工种一般也都是大公司才会配置的,对于小公司来说,一般就是开发人员自己也是自己的测试人员。
同样一个产品或者一个新的功能需要上线,不仅需要要经过完备的功能测试,还有一向就是安全性测试。而由于安全性测试可能需要的知识比较多,所以又会有一个单独的工种来这个。
或者你们也许更喜欢叫他们黑客(坏孩子),白帽子(好孩子)。他们游走在法律的边缘,或做着侠士的行为而不为人所知,或调皮捣蛋想整一个大新闻,更有甚者违法牟利。但是必须指出,他们确实互联网圈子里最有创新精神,反抗精神的人,当然我不是说的那些连脚本都不会写的工具小子了。我指的是阿桑奇,中本聪(主要是技术吊,思维吊,但是没做啥好事)。他们是IT圈的,耶稣基督,精神偶像。必须指出,走安全工程师这条路必须得先走一条边缘线,要想有最好的防守你得先知道别人是怎么进攻的。薪水来看并不是特别有竞争力(不包括黑产)。从业人员这几年很多看到的情况是好孩子越来越多,但是中国的大环境不是特别好(乌云都被关了)。
从这里往后,已经算是程序员界的高富帅了,可以称的上是半个科学家。架构师的工作差不多已经基本脱离代码了,他的主要工具从VIM,EClipse变成了word,ppt。他主要觉得技术选型,针对大容量高并发的问题制定解决方案。基本上他们都是由后台工程师升级打怪升上来的,好像听闻业界也有前端工程师升级为了CTO做架构的,但是毕竟还是少数,node的效率还是差了很多。
这类人,基本都是大学参加ACM竞赛拿过奖,或者本身思维逻辑严密性高,数学基础扎实,算法牛逼。如果你是一个数学系或者物理系的优秀毕业生想转IT,这个可以作为你的主要方向。这个算是建筑系里的学院派,从学校毕业之后就直接达到了这个等级,起薪很高。
它的作用就是从一堆数据中挖去你你想要的信息。打个比方,给你2008年到2016年所有的房屋成交量,房屋成交价格,土地成交量,人口增长,银行贷款利率变化等等很多信息,让你预测明年房价变化情况。他们就是干这个的,这个工作分三步走,爬数据,建模,写算法验证。
爬虫工程师,就是从各种国家统计局网站,链家网站爬去数据,存储为结构化的数据。
写算法验证,大部分数据挖掘工程师好像都是用python,工具比较多,语法简单。
难点其实不是在写代码部分,而在于建模,如果设计一个有效的模型来量化这些数据间的联系。其中的影响因子权值就是他们的生命价值所在,所有他们会光荣的把自己称呼为“调参侠”,顾名思义,就是天天调整参数,让模型运算结果来匹配实际情况。
薪水很高,一般统计分析局或者大公司才会招人,而且还可以独立创业,像是知乎很有名的团支书,拿数据打脸的那种牛逼轰轰的人物。
另外再而外介绍一下量化交易,量化交易是指以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,极大地减少了者情绪波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的决策。这个是计算机丝和高富帅融合的比较成功的一个新的工种,通过一个优秀的交易员建立一个理论交易模型,再有程序员实现代码,这个算是数据挖掘领域比较直接的变现交易,著名的知乎英国五毛,Lightwing(李轶睿)就是从事这个方向的,他们的薪水是按照日来的,关键也在于模型建立,而且都是通过技术面分析,确保收益,比如说从10块钱涨到了10.1块,即便它很可能涨到11块,他们也可能就会卖掉(算法策略),然后通过超高频率的买卖来确保收益,比如说虽然每次买卖只能赚一毛钱,但是他一天内买卖了几十手,而且大部分都赚了,总的收益可能也会有1块,所以量化交易也有叫高频交易的.
我好久也没看过这方面的书了,可能理解有误。大家经常看到的siri,或者聊天机器人之类的都是属于这种东西。他的本质还是一个有限自动状态机,在一个状态下在很多因素的影响下走向下一个状态,理论上你把你在三维世界所有的输入都考虑进去,而且都分别定义了相应的输出,他是可以做到人工智能的。但是这样写出来程序会非常大,电脑跑不动。我个人的理解,基于计算机简单的01唯一向性,真正意义上的人工智能还是蛮难实现的。比如说之前非常火的李世石大战阿法狗,在这种特定的应用下,输入很简单,围棋上的落子16*16,状态也很简单,2的16*16次方,在这个复杂度下,肯定也是没办法枚举的,他们会有降维算法各种算法来聚类他们的状态。
我们上面所说的数据挖掘会有一个调整参数的过程,而在深度学习领域,他会添加一个正向反馈,让你的参数由机器自动调整,让他计算的结果去自动匹配实际的结果。这个就是所谓的机器学习,就是把人为调参的过程让机器自动完成。
此外,人工智能,深度学习,数据挖掘并不是分开来看的,他们会存在一定程度上的重合。他们其实真正的难点实在各种降维算法,概率论,退火等数学领域。所有说他们算是半个科学家也就是这样原因了。
这个才是普遍意义上的互联网的算法工程师做的事情。比方说,我要求一个数的平方根,现在我们编程很简单,只需要sqrt()就可以了,但是你如果看过这个的源码,你就会惊呼,感兴趣自己去搜,他并不是用牛顿莱布尼兹公式做的,它比牛顿牛逼多了,能提高100倍的效率。这只是一个很简单的例子,在实际应用中,当遇到大运算量的时候,就是他们该出场了。这部分功能其实大部分也是由后台工程是自己担任的,但是不排除大公司类似google,fb会特意招ACM来做算法支持,起薪很高。
在这里我特意提一下效率工程的头面担当,游戏引擎工程师(目前国内主要使用开源的unity3d)。主要做3D渲染,需要在计算机图形学方面有较高建树。类比于工业皇冠上的航天发动机一个级别。游戏开发只是一个特定方向的开发,,一样有客户端,web端,pc端,后台,数据库运维等。并没有需要单独拿出来一个讲。不过游戏开发工程师一般来说都是比较累的,但是同样薪水也是高,阴阳师团队今年估计年终奖拿100个月我都不稀奇。
这个也算是吧。比如说,美国电子工程协会,3GPP协会。他们主要是制作各种标准化协议。这个级别太高了,在特定领域,全球估计也就几十个人能做的了主吧。工资多少,人家应该都不在意这个东西。而且大部分还都是国家拨款或者公益组织拨款,反正不是盈利性质的。比如说,TCP/IP协议制定,5G协议制定。我也不知道他们从拿招人,可能是大学教授或者行业领袖吧。
这个超级吊,这个是先驱,未来的计算机,至于他们干嘛的,怎么做,别问我,我不知道!!!
随着互联网产业的高速发展,随着各行业快速智能化号角的吹响,我们正大踏步迈入工业 4.0 时代,计算机作为一种普适的计算设备已经逐步融入了我们生活的每一个角落。无论是电脑、智能手机、Pad、智能手表、智能头戴设备还是各类挂上“智能”字样的家用电器,它们的本质其实都是计算机 + 一些外部显示、交互的界面。
今日我们的社会,已经和计算机密不可分,除了生活中无处不在的计算机,各个其它专业领域也越来越依赖于计算机——物理、化学、生物的模拟实验离不开计算机,数学的问题求解很多时候可以借助计算机,统计的模型计算也需要计算机,甚至在海外的很多高校“计算机+化学”、“计算机+人类学”、“计算机+数学”、“计算机+航空航天”已经成为了新的热门专业。
如果我们身边的亲戚、朋友的孩子表示希望学习计算机相关专业时,我们应该怎么给他们解释计算机专业呢?
计算机专业最早起源于欧美国家。在欧美地区,除了在一开始我们提到的近些年出现的“计算机+X”这种交叉专业外,计算机专业一般被分为“计算机科学(更偏向于理论和应用)”和“计算机工程(更偏向于结构和系统)”;在另一部分国家,这一专业被称为“信息工程专业”、“信息学”专业(注意其不同于国内的信息管理与信息系统专业)。在欧美国家,计算机相关专业在本科阶段更多的是在训练数理、工程构建等工程学科的基本能力,特别是在高年级阶段(第三、第四年),再扎实基础的前提下,欧美大学还会积极鼓励学生找到兴趣,自己选择喜爱的专业子方向的课程,进一步进行学习。
而相较于海外在本科阶段进行“基础+兴趣导向”的专业设置方式,国内的计算机专业的设置则更明确的展示了专业培养后输出工种的差异,对专业方向进行了固定划分,相关专业被划为了“计算机科学与技术”、“数字媒体技术”、“网络工程”、“嵌入式工程(物联网工程)”、“软件工程”、“信息安全(信息工程、网络空间安全)”等常见专业,以及“大数据”、“云计算”、“计算机仿真(虚拟现实)”等名称比较赶时髦的专业。国内的计算机相关专业的专业设置在第一年主要训练数学能力、程序表达能力,第二年到第三年主要为计算机方向基础课程,第四年的课程一般为国内研究生课程的导论课(但是大多数学校的实际情况是学生大四除了做毕业设计,就不在学校上课,而是找实习工作去了)。
在开始说计算机专业学什么之前,我们先明确一下,计算机专业理论上是不应该教“Photoshop 等设计软件使用”、“Excel、Word 等办公软件使用”或“如何打游戏”的。
对于计算机专业学什么,我们可以从社会对于计算机专业同学的预期来看。为了满足企业对于计算机人才在工程上的要求,也达到进一步进入科研机构进行研究工作的基本水平,计算机专业的同学,在学完计算机专业的时候,应该要做到对计算机的体系结构、系统设计如数家珍;应该对利用计算机进行问题求解(算法能力,数据处理能力)达到可熟练应用的水平;应该对应用软件设计思想,合作流程、方法与工具有较为深刻的认识;应该对计算机相关法律法规、伦理道德有充分的了解。
相应的,计算机专业的本科同学会在以下几个方向开展相关课程的学习(课程名仅供参考,各学校因师资和侧重差异各有不同,如有更多欢迎补充):
是不是发现我没有提到程序语言?对于计算机专业的同学们来说,程序语言的学习是必要但是也是最为不重要的。对于一个计算机专业的同学来说,在上大学前最好能做到就掌握 1~2 门程序设计语言(但是就现在国内的教育情况来看,这个过程可能需要放在大一完成);而在掌握 1~2 门程序设计语言的基础上,计算机专业的同学就应该要做到举一反三,找到各个编程语言的共性,在某一场景需要学习一门新的程序语言并且进行应用时,能做到 24 小时搞定一门新程序语言的基础运用的能力了。相比与程序语言的使用,上面提到的这些学习的内容中的思想与方法要重要很多。
很多同学(特别是低年级刚入学的同学)学习计算机专业的时候,是在用一种背单词的方式。很多同学考前就努力的开始拿着书背概念、拿着笔记本背老师划的“重点”、拿着同学的作业背代码。这其实都是对于自己很不负责任的学习方式,试想毕业后的你如果去工作或者去做研究,还有什么考试可以考吗?只会背,不会自己写代码,而且还没有人给你划重点之后,你怎么开始你的工作?你做研究怎么可能有办法下手?
计算机专业与其他的工科专业一样,需要最多的是理解和实践,而不是记忆。在学习每一门课程的时候,我们都要问自己,“这门课程学习的知识来源于怎样的问题”、“学习了之后,我是否可以解决这些问题”、“我是否可以把这个知识运用到别的东西上,解决新的问题”。如果你弄明白这些知识的来源问题,并且可以试着用学的知识去重复一下前人解决问题的过程,你就已经基本学到了这个知识;而如果你可以进一步发现同样的知识可以被运用去解决其他的新问题,并且真的通过实践验证了这个知识的可拓展性,你就算是对这个知识真正学得深入骨髓了。
切记!切记!学工科一定得用脑子想,而不是记忆,计算机专业是其中的一个典型代表,用心学、努力想才会有好的结果。
除了上面这些希望能对大家能有所帮助的信息外,我还不得不提醒同学们——我们国家的计算机相关专业在教育方面的发展水平还处于初级阶段,选择相关专业后,成就自己人生依然不能靠学校和老师,核心还得靠自己。
现在的互联网上学习资源很多,上面那些排名世界顶尖的学校也在互联网上开设了大量计算机专业相关的课程。Coursera、计蒜客、Udacity 一类的平台上也有很多的计算机专业课程可以加速同学们的成长,帮助同学们在学校的第一课堂之外更好的学习好计算机专业,为自己的未来创造更多的可能性。
硬件:简单的说,看得见摸得着的都属于硬件。比如一台电脑,就包括:显示器(屏幕),键盘鼠标,还有里面藏着的CPU、内存、磁盘、网卡等等。
:看不见摸不着的,以信息、代码、程序等形式存在,运行在计算机硬件上的东西。比如:电脑上都要安装的操作系统,QQ或者微信,浏览器打开的网站……
硬件不是飞哥的专业(所以别喊飞哥帮忙攒机,不会!另外很多程序员可能也都不会,或者不愿意不精通……),所以我主要再聊一聊软件里面的分类:
科学:其特点是以研究而不是解决具体问题为目的,不解决具体的问题,产出主要就是论文。比如:二级制的加减乘除、数据如何快速查找、加密和压缩等。
计算机科学飞哥一样不熟,所以这里再详细讲讲软件工程。按开发的各种阶段,又可以分为:
需求:弄清楚说明白究竟要做一个什么软件出来!干这事的人现在通常被称之为“产品经理”(公司内部)或者“甲方”(公司外部)。细分的话又还可以包括:美工(把产品界面弄漂亮点)和UI(界面布局更合理更人性)……这个岗位其实不需要什么计算机专业知识,当然懂一点更好,免得提一些莫名其妙的需求被程序员打,^_^
:把需求以代码的形式实现。干这活儿的,就是大家都熟悉的“程序员”(或者“码农”“代码民工”)。这是最核心技术含量最高的岗位,有兴趣了解的同学先点个赞,我们再后面细说。
测试:开发出来的代码不一定——好吧,我承认,是肯定有问题(被称之为bug)的。所以在正式交付/上线之前还需要测试。干这活儿的被称之为“测试人员”,就类似于工厂里面的质检员,把不合格的产品给找出来。这个岗位又可以分为:人工测试和自动化测试。人工测试就像普通用户一样拿着鼠标点点点,几乎不需要任何技术含量;自动化测试其实就可以算是程序员了,他一样要写代码,所以技术含量也不低。
支持:软件开发完成,就需要部署(发布),可以是打包压缩成光盘,也可以是发布到服务器网站/APP上线;一般部署/发布之后,还需要监控其运行情况,比如有时候访问量过大,服务器挂了,就要采取一些(不更改代码)的措施,这些岗位都被称之为“支持”,其技术含量高于人工测试,略等于自动化测试。
:这个稍稍有点抽象。简单的理解,它其实就是把现实生活中的数据搬到计算机里面处理。比如淘宝,其实就是一个大商店,只不过这个商店里面不放具体的商品,而是展示商品的信息,比如名称、图片、价格、销售情况等等。整个淘宝,本质上是数据的:
系统应用:其核心业务不是数据的增删改查,背后也不需要大型数据库支持。典型的就是工具类软件,比如绘图的Photoshop和CAD,以及各种游戏。其实这种应用的技术含量更高,目前我们国家超级多的应用,各种APP,但都不属于这一类。╮(╯▽╰)╭
因为互联网的蓬勃发展,现在的应用通常都会把大量的运算放在服务器端(由此衍生了“云计算”的概念),用户的电脑上只响应做简单的界面操作。
服务器你可以简单来理解为放在“机房”里面专门为我们提供服务的电脑。很多服务器通过网络组合在一起,就被称之为“云”(估计是因为大家一直“云”的图标表示互联网,呵呵,如下图)
码字不易,尤其是制图,o(╥﹏╥)o,大家可以看得出来,浓浓的直男风,但我真的尽力了。
人工智能(AI):这个说起来就高大上了,简单的说,普通的程序,是固定的呆板的指令,非常详细具体的指示计算机一步一步的怎么做;但人工智能,是想方设法让计算机自主决策,大家可以理解为“机器人的思维”,外行看起来黑科技一样。但其实从计算机诞生开始,就一直有这方面的研究。而且历史上已经有五次浪潮,最近的一次代表事件就是AlphaGo战胜围棋世界冠军,其本质上是硬件运算能力、算法优化和大数据收集的结晶。
大数据。又是被神话或者说“新瓶装旧酒”的一个东西。还记得我们前面提到的“数据库”不?本质上就那么个东西,不过强调能存储能处理的数据很“大”而已。但目前,大数据是AI的基础。现在的AI的“机器学习”,学习的样本就是大数据。
云计算。这个真没啥好说的,还记得前面说的“服务器”么?在服务器上的运算就被称之为“云计算”,在这个概念出来之前,大家也都早这样做了。
物联网。其实也就一个“概念”,就是要把“物体”用网络联系起来。比如现在的快递,你可以随时查看它到哪儿了,这马马虎虎就算是物联网的一种应用。但它背后的本质,还是IT信息化。
因为这些东西,落地(产生商业价值)的太少,大多还处于“科研”阶段,又比较虚,所以卡学历卡得非常厉害。
哈哈,是的,我就是黑律师/包工头/创业狗/老码农/教书匠……的大飞哥,有想学编程的,欢迎加我们的(一起帮·源栈-有意向-2),等着你哟!
你是计算机专业的?好厉害啊!帮我修下电脑好吗?这个梗估计学计算机的都能懂
近年来,因为产业高速发展,计算机专业毕业生的就业情况却尤为突出——被认为是“最有钱途”的专业之一。
学习这门专业,可不仅仅只会修电脑,而是可以掌握一门过硬的技术,工作前途无可限量,能够短时间内完成财富的大量积累。
翻开本科专业目录,考生、家长会看到计算机是个大类,计算机专业类包括计算机科学与技术、软件工程、网络工程和信息安全等七八个专业。
其中,最核心、最基础的专业就是计算机科学与技术,也是各院校计算机系招生的主要专业(也有很多院校按计算机大类招生)。
本专业是计算机硬件与软件相结合、面向系统、更偏向应用的宽口径专业。通过基础教学与专业训练,培养基础知识扎实、知识面宽、工程实践能力强,具有开拓创新意识,在计算机科学与技术领域从事科学研究、教育、开发和应用的高级人才。
计算机学科的特色主要体现在:理论性强,实践性强,发展迅速按一级学科培养基础扎实的宽口径人才,体现在重视数学、逻辑、数据结构、算法、电子设计、计算机体系结构和系统软件等方面的理论基础和专业技术基础,前两年半注重自然科学基础课程和专业基础课程,拓宽面向。后一年半主要是专业课程的设置,增加可选性、多样性、灵活性和方向性,突出学科方向特色,体现最新技术发展动向。——资料来源
计算机科学 computer science(简称CS)是研究机器自动计算本身的性质、规律和问题的一门科学。该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等人类如何与程序沟通(人机互动和人机界面)。比如,人用发音操作计算机,叫做虚拟鼠标;人机互动包含行为互动,比如人在家通过眼神的移动,来通过计算机打开电视,空调等。
计算机工程 computer engineering(简称CPEG)是研究计算机系统及其应用技术的一门科学。涉及电气工程和计算机科学领域,从设计的计算机处理器,个人电脑、服务器和超级计算机到使用计算机这个工具来解决一些应用上的问题,如程控机床、车辆监控、工业和家电监控系统等。
综上,计算机科学是一门研究信息以及如何利用计算机去处理信息的学科。计算机科学融合了工程,科学,数学,经济学,音乐,语言学等等。2000到2010年间十种发展最快的职业中,有七种与计算机有关。
CS大体可以分为三大类,分别是研究理论层面的、系统软件层面的还有计算机应用层面的。
计算理论是学计算机的基础。多年以前,计算机系很多都是包括在数学系的。要选择这个方向的学生,需要具备比较高的数学功底和电脑基础性语言的知识储备。由于所涉及的研究领域比较枯燥和难懂,申请这些方向的人比较少,申请难度不是很大。
(8)数据库系统( Database System):用户使用数据库的计算机软件/硬件资源的集合。即采用了数据库技术的计算机系统
(9)大规模计算中的I/O: 在大规模计算中实现计算机主机与外围设备进行信息交换的技术。
(1)科学与工程计算:这个范围很广,简单说说就有:生物信息处理,天气预报等
设计与开发,就是传统意义上我们说的『程序员』,俗称『码农』,负责撰写代码的人员。设计与开发又可细分为架构师、web前端、web后端、算法工程师、数据库工程师、手机程序员等。
架构师的职责是开展软件的整体架构设计,站在顶层的角度,对软件的开发、未来发展方向等具有决定性影响力,例如软件采用什么体系结构、选择哪种技术方案、由哪些功能模块组成等等。一般来说,架构师都是由资深程序员或者业务骨干晋升得来的,在软件开发团队中处于领导性地位。
发展前景:架构师需要强悍的技术实力和深厚的技术积累,是精英程序员,因此月薪很高,好的架构师更是天价。
我们用浏览器打开一个网站,例如,会呈现出一个界面显示出网站的所有内容,这个网站界面,就是 web 前端工程师写出来的,主要是用于人机交互。Web前端开发技术包括三个要素:HTML、CSS和JavaScript,这些都是计算机语言,学习起来并不难。web 前端入门容易后面进一步提升比较难,需要有美工、工业设计等等学科的支撑。
web后端工程师主要实现业务逻辑, 提供接口给前端使用,或者说是给前端提供数据。例如,网站页面,肯定属于动态的,要实时更新的,不能说让前端工程师写死,那整个网站永远都没有变化的话,用户怎么能忍呢。所以这就需要后端工程师,也就是服务端工程师做数据处理并把数据提供给前端用于显示出来。前端与后端,类似于计算机显示器和计算机主机的关系,计算机真正的运算是在主机(后端)当中进行的,运算完毕后,把数据输出到显示器(前端)显示出来。
算法工程师是完成特定问题求解的工程技术人员,例如深度学习算法、机器学习算法,数据挖掘技术,自然语言处理技术,分布式计算等等。举个例子,很多门禁采用指纹识别或者是面部识别技术,如何根据拍到的一张图片,让计算机『认识』出具体是哪个人,这就要涉及到面部识别算法,这个,就是算法工程师的职责。
发展前景:非常好,超出你的想象。选择人工智能算法工程师起薪已经到了50万年薪的级别,而且发展前景特别广阔。当然了,这个专业对数学、计算机等专业知识要求很高。
几乎所有的软件都需要有数据库的支撑,完成结构化数据和非结构化数据的存储、访问和修改等操作,这都需要有数据库工程师的支撑。基本的数据库软件包括 MySQL、Oracle 等。『双十一』的时候,一大堆人同时在淘宝上买东西,我们有的时候就会发现网页很卡,或者抢购的时候网页卡住付不了款,就是因为同时在线的人太多,数据库并发能力有限,使得网页响应不了请求。解决这个问题,就是数据库工程师的职责所在。
主要是完成 Android 系统,和苹果 iOS 系统软件的设计开发。在手机几乎普及化的今天,手机软件开发成了当前的热门。Android 手机开发主要用 java 语言,iOS 系统软件开发主要用苹果自有的swift 语言。
软件写完后,总是会有很多漏洞或者 bug 存在,为了找出这些缺陷,需要软件测试人员采用各种方式对软件进行全方位测试,确保交出去的软件足够强壮,不会轻易遇到 bug 后崩溃导致计算机蓝屏。随着技术发展,现在软件公司主要采用一系列的自动化测试工具对软件缺陷进行测试。
这个就是负责软件的界面美化,主要有美工完成,另外随着行业发展,也需要美工人员需要一定的计算机编程能力,设计好界面持续模板后,由前端工程师调用即可。这个工作,最适合学美术的人员来完成。
客户往往是不知道自己的需求的,例如一家餐厅要设计一套智能化管理软件,以提升管理效率。那么软件的主要任务是什么、都有哪些功能模块组成、软件界面是什么样子、软件如何迭代滚动优化,这些内容,往往甲方自己提不出来。这个时候产品经理的作用就发挥出来了,产品经理的主要职责,就是把用户的需求转化成程序员们能听懂的语言,并讲给他们听。行业知识是产品经理最重要的能力,产品经理可以不会编程,但一定要能懂行业,或者是拥有能快速了解行业的能力,例如地产、、财会、餐饮、制造业等等行业,产品经理要能够快速了解行业并提出基本的解决方案。
发展前景:和架构师差不多,在软件行业里拿头筹。例如微信的张小龙,就是个产品经理。
运行维护的检查。一个大的公司网站或者软件系统建立并运行起来后,有可能会遇到很多故障或者 bug,就需要由运维人员完成日常的运行维护工作,公司越大,运维工程师就越重要。例如银行、电信部门等,这些大的软件系统绝对不能故障停机,一旦停机,所有人的电话就打不出去,银行取不出钱,转账等交易也会停止,就有可能导致不可弥补的损失。按照咱们的日常经验,我们很少或者说几乎没有遇到过电信部门服务器死机的情况吧,这背后就是运维人员的功劳(当然设计与开发人员也很厉害,写的软件很强壮,几乎没有 bug)
在信息化时代,最重要的就是个人信息安全。网络安全工程师就是负责完成网络的漏洞发现、修补、病毒木马查等工作,确保安全无虞。有盾就有矛,和网络安全工程师做对手的,就是黑客,主要做信息窃取、篡改、劫持等事情,黑客又有白帽子和黑帽子之分。
发展前景:对技术要求很高,而且学无止境。当然了,收入非常丰厚。这个行业经常游走在法律的边缘,据我对行业的了解,好的黑客/网络安全工程师,年薪百万是起步。