差不多十年前,当我从培训机构出来(只能说是“出来”,没毕业,就学了半年)的时候,我也有类似的困惑和焦虑。
后来我报名参加了“软考”,中级,软件设计师,花了四个月的时间,过了。(很多人不相信,但这就是事实,参加:自由飞:如何通过自学找到一份开发的工作?)
这么多年过去了,回头想想,这些知识,有用么?我想了很久,做个总结吧:
其实用不到,但也很难说没用。
用不到,真用不到。什么算法,什么数据结构,我干这一行都快十年了,一次没碰到过。当然,你可以说我是搬砖的,是码农,但以此为标准,有几个不是搬砖的,有几个不是码农?
其实啊,很多同学迷茫,不知道怎么提高。如果你安心做技术,安心打工,很简单,去看一下网上的招聘启事。比如关键字:JavaScript 10年工作经验 年薪50万……,把筛选出来的招聘要求看一看,就知道你的奋斗目标了。弱弱的问一句,里面有没有要求:精通数据结构和算法的?
真要实实在在的用这些知识,大概得是写数据库(不是增删改查用数据库,是用C/C 写数据库软件本身),写操作系统,写游戏引擎,写编程语言本身,等等。我把这些,归类于“计算机科学”。
但实际上,我们绝大多数人,都不是干这个的,而是利用现有技术框架,将具体的业务需求予以实现,比如做个APP,开发一个网站,或者桌面软件之类的——我把这些,归类于“软件工程”。
但“计算机科学”和“软件工程”,有没有高低之分呢?或者,更实际一点,待遇上有没有明显区别呢?是不是“真正的程序员”就比“码农”更有钱更牛逼更高人一等呢?
呵呵,两个办法:一是你自己去招聘网站查一查;另外,还有很多搞计算机科学的,招聘启事上都在查不到,他们都待在大专院校研究所之类的地方,他们的待遇,呵呵,应该能猜到吧?
一句特别俗的话:工作没有高低贵贱之分,都是为人民服务。
接下来我就说说,搞软件工程的,做各种应用项目的,题主说的这些理论知识,究竟有没有用。
用处还是有的。
首先就是*了,或者,别人说这些的时候,不会听不懂不会心虚了。
其次,这些知识能帮助你对一些具体问题的理解。比如了解了编译,你就可以瞬间明白“JavaScript是脚本语言,解释执行”是什么意思;比如知道“树”这种数据结构,你就可以很快明白为什么使用数据库的索引就可以迅速提高数据的查询速度;比如知道“指针”的概念,就可以迅速的理解C#里面引用类型/值类型,引用传递/值传递的意思……
所以,正儿八经的说,也不能说这些知识没用。
但是,这些知识也不是很多同学想像的那么有用!
至少,没学过这些理论知识,你还是一样可以明白编译/解释,一样可以明白索引的机制,一样可以理解引用和值……甚至,都花不了多少时间,我一个小时就可以给你讲明白。
那么,这里就有一个问题,我们谁也不能说知识没有用;然而,“吾生也有涯,而知也无涯。以有涯随无涯,殆己”,这里有一个产出/效益比的问题。
这个问题,其实也可以用一个计算机/软件工程上的术语来解释:封装。知道“面向对象”的同学,一定知道“封装”,但为什么要封装呢?为什么“封装”是面向对象的第一大特征呢?封装,隐藏实现细节,暴露调用接口,它的魔力究竟在哪里?
其实啊,就是节省你的精力。摆脱细节实现的纠缠,在更高层次上进行思考,从而更高效的解决具体的业务问题。
比如,你可以直接调用:
alert("封装就是好!");
而不用从二进制开始实现在屏幕上弹出一个小框框。
更何况,你去深究alert()背后究竟做了多少事,也没有任何意义。就算你一根筋要深究下去,那从浏览器内核,到操作系统,到内存调用,到二进制……你究竟要深究到哪一个程度为止呢?
我也是从一个什么都不知道的菜鸟,这么多年一步步这样走过来的。
我非常明白,作为一个初学者,对于未知领域的敬畏和好奇,对“更上一层楼”的期望和迷茫,但什么“码农”“底层”,以及“编程=数据结构 算法”的说法,确实误导了很多很多人。
篇幅所限,我尽量简单点吧,题主的问题,可以有以下几种办法:
1、最傻的一种,像我一样,参加一次软考。把所有软件开发相关的理论知识一网打尽,不需要怎么精益求精,有些地方,走马观花囫囵吞枣也没多大问题。具体到考试,“60分万岁,61分浪费”。这条路呢,确实踏实,但总觉得有点笨,效率不高。
2、功利型的方法:不要管别人怎么拽名词怎么*,像我前面说的,网上找到你期望的职位,看这些职位的要求,然后按照这些要求往前拼就行。听哥一句话,搞JavaScript,动不动就扯什么数据结构的,十有八九*犯的居多。
3、以兴趣为导向,一个点一个点的突破。比如你确实对数据结构和算法有兴趣,纯粹的就是感兴趣,太简单了,买一本《数据结构和算法》看一看嘛,多简单的事?真有兴趣,不存在看得懂不懂的问题,看不懂也要想办法看得懂——就像打游戏一样啊!有这个兴趣,我特么的废寝忘食夜以继日想方设法排除万难,也要搞定它。做不到,嘿嘿,你所谓的兴趣很值得商榷啊。
大概也就说到这里啦。其他类似的、相关的,欢迎关注知乎
最后很煞风景的加个推广,两个QQ群:
飞哥办了一个IT培训班,http://ASP.NET全栈开发,线上全程直播,可以免费收看;线下拎包入住,按周收费。如果你有兴趣了解一下,可以加QQ群:729600626(一起帮·源栈·有意向)另外一个QQ群:716207562(一起帮·老码农-4),也不说啥交流啦,就吹牛灌水,老码农小菜鸟打发时间聊聊天O(∩_∩)O~
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved