本来我是想谈目标的重要性的,结果QQ群里偶然聊起,大家都正在焦虑着“不知道怎么定目标”呢。所以我就看门见山的讲一讲:转行做IT,大致有哪些方向。
IT(Information Technology)是一个很大的概念,通常来说,可分为:硬件和软件两大部分。
通俗的说,硬件就是那些看得见摸得着的一些东西。比如CPU、硬盘、内存、网卡、路由器之类的。硬件的生产(比如把CPU做出来),这一块我们就不要管了,飞哥也不懂。
但很多同学在学习C语言,又不知道C语言能干什么,所以我这里说一下:C主要用于非常底层的、和硬件紧密结合的编程领域,目前最常用的就是“嵌入式开发”。开发出来的产品,我们日常生活中最常见的就是各种“智能设备”,比如扫地机器人,这算是比较高大上的了;其实更广泛的领域是各种“工业机器人”,比如流水线上的机器臂之类的。
说到机器人,这里还得澄清一个概念,大家不要觉得只有那种科幻片里的“人形机器人”才是机器人。其实只要由程序控制的各种设备,都可以称之为机器人,它的本质就是由程序控制的硬件。(飞哥的定义,理解就行,不用那么严谨,O(∩_∩)O~)大量工业上使用的机器人完全看不出来“人”的样子,就一个机器,该什么模样就什么模样。
要玩这一块,就需要对计算机的硬件、底层运行原理有比较深入的理解,程序开发的思维是非常“机械”的,就是说你得像电脑一样思考,大致就是:
除了C语言以外,更底层的还有汇编,更加原始,这玩意儿飞哥几乎已经忘得干干净净,就不再多说了。
因为说到机器人,很多同学肯定会想到AI(Artificial Intelligence),人工智能。AI 不是机器人,你一定要把它和机器人联系起来,只能说它可以是机器人的“大脑”。AI 是属于软件领域的,但这一块,飞哥还是不懂,所以也没什么好说的了。
飞哥同样不懂的,还有“大数据”和“云计算”。“不懂”是一种谦虚的说法,(¬_¬),我觉得他们就是一些概念的炒作。
借了人工智能大数据的东风,python现在非常火热,很多同学用python写“爬虫”玩。这玩意儿呢,飞哥有些话不好说,得罪人,哈哈(为了大家的前途,我还是实话实说,大家觉得不对,就当是个屁)。爬虫这些,都是玩剩了的,除了google、百度,还有bing,以前不知道多少所谓的“垃圾站”“采集站”都是用爬虫采集数据。不只是python能爬数据,几乎所有的主流语言都可以爬数据,python做爬虫,主要还是因为它的库比较好。
好了,不多说了,说多了怕露陷,我对这一块确实没怎么上心,仅供参考仅供参考!
OK,终于可以说飞哥擅长的领域了:软件工程。
注意,是软件“工程”,不是软件开发。他们的区别是什么呢?我们这里又要引入两个概念:计算机科学和软件工程。
我尽量用通俗的语言,首先解释一下“科学”和“工程”的区别。
科学,强调的是通过观察和思考,发现其规律和原理,至于这些规律和原理,能够具体做些什么,who care?
而工程,强调的是利用现有的技术手段,解决一个具体的问题。底层的原理,我们知道更好,不太清楚呢,也无所谓,只要能用就行。
举个例子:科学家一直在探索宇宙,什么引力波暗物质,这些东西究竟有什么用呢?不知道!科学家不考虑这些,就像那句话说的,“你为什么要登山?”“因为山在哪儿。”这就是科学家的精神,不计成本不求回报地探究事物的本源。所以科学家一定要政府社会进行资助,因为他们做的绝大多数事情,都是赔本的。
那为什么“知识就是生产力”呢?因为除了科学家,还有另外一种人:工程师。工程师负责把科学研究成果转化为有用的、可行的产品或服务。这是一群非常“实用主义”的人,当然也是一群非常聪明的人。没有他们,我们很多很多的科学成果都无法转换成生产力。
比如:水可以分解为氢气和氧气,氢气和氧气可以燃烧产生热量而且不产生废气,这就是科学知识。学过化学的人都知道,但直到现在,仍然没有什么用——我们的最主要能源还是石油不是水。
又比如,燃烧是物质的剧烈氧化反应,这是科学。在很长很长很长一段时间里,人类并不了解这一点,但这并不妨碍我们使用火利用火,烧饭取暖战争破坏……
我说这么多,可能有细心的同学察觉到了:好像是在贬低科学,吹捧工程?
哈哈哈,聪明!
矫枉必须过正。因为现在,鼓吹科学蔑视工程的风气,在程序员中非常流行。自黑或者黑别人什么“码农”“民工”“搬砖的”,一说“底层”“原理”“数据结构”就膝盖软了或者牛逼哄哄……其实很多人都是一知半解不明觉厉。
首先,大家不要觉得“应用很简单,原理才复杂”。不一定!这个世界,“原理很简单,应用才复杂”的例子太多太多了。譬如我上面提到的“水作为清洁能源”的例子,类似的例子不胜枚举。因为“投入实际应用”,有非常非常多的要求。比如造汽车,原理多简单啊,“四个轮子加个沙发”,但为什么建国这么多年,我们把卫星都送上了天,直到现在国产车都还比不过进口车?类似的还有大飞机、特种钢、甚至什么精子种子……包括计算机,你看到过国产品牌的芯片么?计算机芯片的原理其实非常简单,就二极管集成电路而已,但“知道原理”和“把东西做出来”甚至于“把东西做好”,完全是两个概念。
其次,大家要克服“只有知道了底层原理,才能把东西做出来(做好)”的思想。是的,我用的“克服”,因为这个观点可能非常非常的难以接受,尤其是你已经被“原理派”各种断言轰炸之后。计算机之外,我举了使用火的例子。其实这样的例子非常多,即使科学昌明到今天,我们对这个世界的认识仍然是非常有限的。最典型的就是我们人体,很多的药物,其机理究竟是什么,没人知道——但经过临床检验,有效!OK,我们就可以用它了。比如你生了病,一个是经验丰富的临床医生,一个是药理学研究的权威,你更相信哪一个?临床医生对药理学的研究肯定不如这个“权威”啊——我突然想到,你不会选这个药理学权威吧!
((´-_-)-_-)-_-)
我还是直说吧。“术业有专攻”,“生也有涯,而知也无涯”,在你有限的生命中,你必须选择一些东西,同时放弃一些东西。这也是我们这篇文章的目的:要确立你的目标。回到这个具体的问题上来,无论是选择计算机科学,还是软件工程,都没有问题。问题在于:你干着软件工程的活,操着计算机科学的心。就会闹很多笑话,比如说“他就是因为不懂数据结构和算法,所以代码的可读性太差了……”
看这篇文章的同学,多半是野生程序员,如果要走计算机科学这条路,我建议还是老老实实地考研考博做学术,未来真正的“龙芯”就靠你们了!
否则的话,还是奉行“实用主义”,往“软件工程”这一块靠比较好。其要义就是:利用现有技术成果,高效的完成工作,实现需求。一切以“实现”为目的,至于底层原理要掌握多深,视具体的需求而定。
除去前面提到的“硬件编程”,通常意义上的软件工程,按产品形态,大致可分为以下几种:
好了,大家就可以根据自己的兴趣,选择合适的方向了。
为什么我说“兴趣”?很多同学问过我,学什么“好就业呢”“前景好呢”“工资高呢”……
几个原因:
1、发展趋势这玩意儿,飞哥确实看不准。别说飞哥,诺基亚都看不准,不然她也不会垮台;微软也没看准,不然她一开始就开源,怕现在都没Java什么事了;JavaScript现在火得一塌糊涂,当初也就一个实习生花了不到两周写出来的个玩意儿……所以,有人(尤其是培训机构)告诉你什么什么有前(钱)景,自己留个心眼。
2、一门技术的前景好不好,和个人的发展关系不大。昨天(还是前天?这时间过得哟……)还有同学在QQ群里说:“.NET的招聘岗位比Java少好多……”是,确实如此。但这能说明什么呢?Java的岗位多,但学的人也多啊;甚至我们还可以反过来想,因为学Java的人多,所以Java的岗位才多(好招人啊)!无论如何,对个人而言,岗位多,学的人也多,有什么竞争优势呢?相反,有些很偏的语言,因为学的人不多,反而工资可以很高(当然,工作也有点不好找,至少流动性差)
3、一味追热门,有可能跌得很惨。根据我短短的十年开发经历来看,技术的“热度”是周期性的波浪线的,火得快的凉得也快。不要你看到什么火了,辛辛苦苦的学了半年,(⊙o⊙)哦,妈逼已经拔凉拔凉的了……
4、语言其实是相通的。入门的时候,学哪门语言,和你以后工作用哪门语言,真没什么关系。我培训的时候,学的是Java Web(JSP),前几份工作用的都是ASP.NET,再接下来vb、Java、C……各种乱七八糟的语言技术都用过了。回头想来,一开始的纠结真的没有什么必要。
最重要的,是兴趣。
兴趣驱动,是最强大的,也是最愉悦的。
找到自己的兴趣,并以此为生,是一件非常幸福的事情。
+++++++++++++++
很长了,暂时先写到这里。下一篇计划写:《确立你的目标(二)初心》
老生常谈,欢迎大家评论留言,让我知道你们知道了什么最想知道的是什么,我才能更好的写完这个系列。
同时,本人所有文章均可以自由分享,但请注明来自:一起帮 《编程那些事》之菜鸟入门,谢谢!O(∩_∩)O~
多快好省!前端后端,线上线下,名师精讲
更多了解 加: