技术和算法的抉择

  上大学已经两年了,这两年来学到了不少的东西,在互联网的时代,每个程序员都不得不学习新的知识,以充实自己,避免被不断更新迭代的时代所淘汰。在大学里,每一个学习计算机的同学都在面临两个抉择——技术和算法,我们应该优先选择哪一个更合适?

  此处所谈到的“技术”是指一些在职场上常用到的专业技能,比如学习一些Java的开发,从JSP和Servlet到Spring全家桶;Golang的web开发到高并发的解决;服务器的一些部署,Docker和K8S(kubernetes的k和s之间有8个字母),shell脚本等;而算法是指一些算法类型和数据结构等用来竞赛和研究底层逻辑的知识点,比如链表、队列、栈、树和图等。

  这两年来,我一直在学习前者,对后者是有所懈怠的,虽然在大学阶段也有开设算法程序设计和数据结构课程,但我在这方面的欠缺是显而易见的。当前阶段主要在从事Java Web和Golang的后端开发,能够做一些Web端和APP端的开发,实现基本的功能和操作,现在已经参与过几个网站和APP的开发,在开发过程中,经常是在实现功能的路上学习和成长,锻炼自己的开发理念和开发思路,比如实现用户登录注册时,学会第三方发送邮件,短信验证码,数据库的增删改查等;实现搜索时,学习elasticsearch搜索服务器等,所学会的技能都是在开发过程中所能够运用在实战的。

  下面再说一下算法和数据结构,这两门课程在我们学校也是有开设的,但由于自己在这两门课程上花费的时间严重不足,理解也不是很透彻,最近也在狂补知识,还有一个主要的原因是在这两门课程在当下我所从事的开发过程中很少用到(只有在实现评论功能的时候使用过树的知识点),这类的知识点在开发过程中是不会直接用到的,这些知识点已经被各种类库封装,直接使用即可,不需要了解到数据结构和算法思想,开发过程中一般是以业务逻辑(实现的功能)为主,涉及的算法并不多。

  那么重点来了,技术和算法哪一个更重要呢?那么就请你好好分析以下的两个问题,仔细想清楚对自己的定位:

  我经常把互联网中的人类比成建筑工地的两种人,一种是在辛苦劳作,把一块块的砖头垒在一起,造就万丈高楼;另一种是在造砖头的路上越走越远,思考着如何去创造高质量且持久性更强的砖头;

  在武侠小说中有外功和内功两种,外功就像金钟罩铁布衫和厉害的剑法等,内功就像是九阴真经、易筋经这样的心法等,在武侠小说之中,大多数强者都是以内功心法为强;

  不知道你想成为哪一种类型,这其中,具有创造砖头能力的人属于对于底层理解很透彻的人,能够发明创造,而不是简单的使用,代表算法这一类;内功心法属于属于练功基础好,也属于算法这一类。总体来说,外功在没有强大的内功支撑下是很难有所成就的,没有砖头也是不能万丈高楼平地起的,在小的公司和简单的一些网站和APP的开发过程中是不需要数据结构和算法的知识的,也就是普通的码农所做的活儿,而如果你想要进军大佬级别,从事架构或者是一种更加底层的应用开发以供开发人员使用,或者想要到大公司工作,就不得不掌握算法和数据结构了(大公司的业务级别很大,是需要优化的)。

  以我这两年的学习经验来说,想要学习到这些职业技能,是很容易的,很多的知识和实例在网上都可以找到,但算法和数据结构就不一样了,它需要你理解很透彻,能够灵活使用,在后面的开发过程中,看到Java的源代码也是需要一定的算法和数据结构的知识的。对于考研和将要找工作的两种人来说,建议前者学习算法和数据结构更深一点,后者依情况而定,若想去大厂(BAT、字节跳动、华为等)也建议学习算法和数据结构,若想要去小公司一同成长的,建议学习一些实用的技能,能够解决开发过程中的问题即可。

    原文作者:wx5db4f6ca1b1bb
    原文地址: https://blog.51cto.com/14590379/2445811
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞