5.4 塑造IT人的专业核心能力——《逆袭大学》连载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sxhelijian/article/details/86152254

返回到【全文目录

目录

5.4 塑造IT人的专业核心能力

读大学,重在思维能力的提高

计算思维是看家本领

设计自己的专业能力


5.4 塑造IT人的专业核心能力

我们的高等教育的传统是注重知识型的教育。在应试教育下成长起来的同学,其实很适应接受知识的学习方式。本书中一再提到的就是要改变这种以接受死板的知识为目的的学习,改变为接受生动的知识及目标为增长能力的学习,理论知识与实践能力完美结合,是我们的追求。

在对理论知识传授过份依赖的教育当中,造成了相当一部分同学对理论的轻视。这是理论知识教法、学法不当造成的后果,也存在着实践的严重缺失。我们呼唤“用实践打开体验的窗口”,其中包含着更高效地获得更多“间接经验”的期望。从深层次看,接受知识的学习也存在着畏难情绪,以及不自信的因素。不少同学在专业理论体系中稍一深入会吓一跳:这么多东西如何应付?理论体系似乎高深莫测,抽象能力似乎不可捉摸,设计能力提高上路途漫漫,何时才能到达西天取得真经?

实际上,不管我们的大学是什么专业,要对一门学科进行深入地学习,这样的问题都是不可避免的。但稍作安慰的是,作为阶段性的学习,并不是将所有知识倒进脑子才叫学习。学习方法对头,学习节奏稳住了,具备专业核心能力,并非想象中的那么难。

读大学,重在思维能力的提高

有人说,未来不需要学习了,百度一下不就全有了?觉得对大学略知一二的大学生说:“真不理解学校中开设的课程究竟是为了哪般?高等数学中讲的是几百年前已经有的内容,在专业课中,左算法,右策略,都已经在产品中实现,何必费时费力去学习?”还有同学在专业学习中初试身手后遇到了疑惑:“各种算法已经在软件库里实现,需要时直接调用就行,为何还又是设计又是分析地学个没完?”

面对这些问题,我想起了一百多年前说“人类该发明的东西已经全发明完了”的美国专利局局长大人。前人的成果已经是历史,我们以此为基础,面对的是更广阔的未来。在未来,还有更多的问题等待我们去解决,前人的错误需要我们去纠正,新的方向还等待拓展。在终身学习的年代,要看到这一点。对已有知识的掌握,正是要将我们带到能与前人对话的平台上来。在有限的生命里,而对无限的问题,我们需要站在前人的肩膀上,利用前人探索过程的启示,获得我们前行的方法指导。

面对无限的知识,通过具体知识的学习过程,最重要的是塑造出科学的思维方式。这是专业学习的终极意义。科学的思维方式能让人借助学习中的迁移性,“不学而知”更多的知识,还能得到前人未曾发现的知识。一位“见多识广”的人,遇到一个新事物,他在头脑中会马上想到另一个事物,建立两者之间的联系,从而也就部分地掌握了新的事物。这就是我们常说的“举一反三”。能够举一反三,前提是要有“一”,还要有将“一”变为“三”的生成器。“一”是我们已经学到的知识,而思维方式就是那个生成器。一个人的专业学习过程,是“一”增加的过程。学习不能靠“一”上加“一”的积累,而要靠在思维方式的指导下,让这些“一”进行化学反应,产生出更多的“三”。

学海无涯,我们已经完全没有可能掌握全部无穷尽的知识,去做一个百科全书式的学者。在大学中,却存在一种可能,当你把握住了一个核心,掌握了一种方法,未曾学过的可以不召自来,未曾见过的事物也并不会陌生。《读大学,究竟读什么中》一书中指出,读大学,读的就是一种思维方式。有这样的思维,在问题需要的情境下,知识自觉地来到你的脑中。

计算思维是看家本领

到目前为止,可以称得上是科学的思维方式大体上可以分为三种:

  • 第一种是以观察和归纳自然(包括人类社会活动)规律为特征的实证思维。实证思维的结论必须经得起实验的验证,以物理学的方法为代表,经过观察、假设、验证形成在逻辑上自洽(即不能自相矛盾)的结论,既可以解释以往的实验现象,又能够预见新的现象。
  • 第二种是以推理和演绎为特征的逻辑思维,以数学的方法为代表,借助于作为推理基础的公理集合和一个可靠、协调的推演系统(推演规则),要求任何结论都要从公理集合出发,经过推演系统的合法推理,得出结论。
  • 第三种就是以抽象化和自动化为特征的计算思维。计算思维中的抽象化与逻辑思维中的抽象化不同,不仅表现为研究对象的形式化表示,也隐含这种表示应该具备有限性、程序性和机械性。这三种思维模式各有特点,相辅相成,共同组成了人类认识世界和改造世界的基本科学思维内容。

计算思维概念的提出者,美国卡内基•梅隆大学周以真(Jeannette M. Wing)教授认为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计,以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。当我们必须求解一个特定的问题时,首先会问:解决这个问题有多么困难?怎样才是最佳的解决方法?计算机科学凭借其坚实的理论基础来准确地回答这些问题。

有人说过,“计算机革命是思维方法和思维表达方法的革命。”我们有幸为我们从事的学科代表着的一种最有生命力的思维方式而感到自豪。计算思维是一种递归思维,是一种并行处理。计算思维运用抽象和分解来处理庞杂的任务或者设计巨大复杂的系统,借此能选择合适的方式去陈述一个问题,能选择合适的方式对一个问题建模并使其易于处理。利用计算思维,可以按照预防、保护及通过冗余、容错、纠错的方式,从最坏情形恢复。计算思维利用启发式推理来寻求解答,在不确定情况下进行规划、学习和调度。计算思维利用海量数据来加快计算,在时间和空间之间,在处理能力和存储容量之间进行权衡。

计算思维在其他学科中已经产生影响。例如,机器学习已经改变了统计学,像自然语言处理之类传统上用形式语言处理的领域当前也变成了统计学家的地盘。互联网的发展造就了大数据的时代,各种组织机构需要精通计算机和数学的人才。类似地,计算生物学正在改变着生物学家的思考方式,计算博弈理论正改变着经济学家的思考方式,纳米计算改变着化学家的思考方式,量子计算改变着物理学家的思考方式。计算思维将不仅仅限于科学家,而会成为每一个人所拥有的思维技能中的一部分。

作为IT学子,由此也要看到,计算思维除了有支撑我们专业学习的功效之外,也将能够用于指导我们做好其他方面的工作。例如,在面对一个复杂问题时,我们采用分解的方法进行处理。整个的问题就是一个由“输入—处理—输出”构成的系统,又可以分解为多个小的“输入—处理—输出”子系统。这种分解的方法在软件设计中适用,其实也是我们在处理很多问题的时候采取的策略。递归描述、并行处理、分治算法、分离、冗余设计、容错纠错等,在计算机科学中常见的方法,也成为了处理其他问题的一般性思维方式。我在前文中谈到计算机类专业学生的适应性时,只讲到了行业以及行业的辐射面之大,再加上这里所讲的计算思维的指导,更显出了计算机类专业万金油的特征了。

设计自己的专业能力

在大学里,专业知识要通过课程传达,从事专业工作所需要的能力,也体现在课程里。我们关注能力的养成,具体地,作为一个计算机专业人士,应该具备计算思维能力、算法设计与分析能力、程序设计和实现能力、系统能力等专业能力。除此之外,还需要具备可以概括为职业素养的各种一般性的能力

计算思维能力主要包括形式化、模型化描述,抽象思维与逻辑思维能力。计算机是按照存储程序的方式工作的,计算机工作的过程就是运行程序的过程。要利用计算机解决问题,前提是要将解决问题的方法编制成程序。需要人分析问题,由人确定解决问题的方案,在此基础上才能用计算机的指令描述求解步骤,最终获得问题的解,这就是写出程序、运行程序的过程。由此可以看出,问题求解最关键的步骤不是最后的写出程序,而是最初的分析,以及中间的设计,这是计算思维能力发挥作用的地盘。形式化方法来源于数学,直观地讲就是要用数学符号去描述问题,并且导出问题解的结构,称为是建立了问题的模型。形式化去除了问题的表象,而专注于问题的实质,使问题的着眼点进入抽象世界。借助于数学可以进行严格、严密的变换、推理,得到的解决方案是可靠的。举一个非常简单的例子,要编程序解决一个“百鸡百钱”问题。我们可以列出一个方程组来,在方程中用xyz之类的符号代替了公鸡、母鸡和小鸡的数量,这是一个符号化的过程,将有形的实体替换成了抽象的符号,之后求解过程的设计就可以建立在这组方程上了,这组方程就是问题的模型。脱离了具体的形态,不用再想着公鸡寂寞了得找母鸡玩之类的,与问题实质无关的鸡零狗碎,在严格的逻辑思维基础上,既能方便地编写出程序,也能保证其求解质量。

解决更复杂的问题,例如让机器人下棋、自然语言处理、大规模集成电路设计等等问题,必须以形式化作为开端,依靠逻辑思维去设计解决问题的方案。时至今日,将形式化方法用于软件和硬件系统的描述、开发和验证,已经成为解决计算机科学和软件工程领域中核心问题的关键。由于计算机系统在工作中不能够直观地看到其内部的运行形态,无法通过直接观察获得感性认识,习惯形式化、符号化成了计算机类学生在入门学习中必须跨越的一步。

算法的概念在计算机科学领域几乎无处不在,在各种计算机软、硬件系统的构造中,算法设计往往处于核心地位。要想成为一名优秀的计算机专业人士,其关键之一就是建立算法的概念,具备算法设计和分析能力。算法的优劣通过其“复杂性”来衡量,包括了时间复杂性和空间复杂性两个方面,指的是计算机执行算法需要的时间和占用的内存空间大小的度量,这样的度量要用数学的方法给出。对于同一个问题,精妙的算法可能能在几秒钟之内得到解,而蹩脚的算法,理论上有解出的可能,但等到解出之时,地球末日已经到了;有的算法可以在手机之类的内存和主频都受限的移动计算设备上顺畅运行,而解决同样问题的有些算法在服务器上运行也很吃力。用好算法解题胜过买更好更快的计算机,这是其经济性所在;好的算法能更快地完成任务,在很多领域,抢得先机比金钱更重要;用户每Google一次,耗能相当于烧开半壶水,IT界兴起了“绿色计算”的浪潮,好算法可以节约运行时间、减少耗电,有助于我们保护好人类共同的唯一家园。好算法还应该是简单和可读性强的,这也给系统的可靠性提供保障。对于计算机类专业的学生,能读懂算法,会利用已有的算法解决问题,能根据问题设计算法甚至发明出新的算法,是算法能力进阶的几个步骤。算法强,是一项具有核心竞争力的优势。

程序设计与实现能力是计算机类专业学生必备的基本能力,也是衡量一个计算机类专业学生是否合格的最基本的标准。大学的专业学习从程序设计开始,而实际上,绝大部分的毕业生的工作也从程序设计开始,会不会编程成了是否能进入这个行业的门槛。学会程序设计的过程,也是理解计算机系统内部工作机理的过程,对未来与计算机相关的任何工作,都不失其意义。软件和硬件从计算机体系结构的角度讲并未严格分离,即使从事以硬件开发为主的计算机工程领域的人员,也离不开程序设计。诸如系统运行维护等工作,可能并不要求利用某种语言编制程序解决问题,但也会常常用操作系统提供的外壳(shell)指令编制一种特殊的指令序列去完成批处理任务。除了程序员,IT行业中的大多数岗位,如测试员、项目经理、系统架构师、系统分析师等,要胜任这些工作,程序设计功底也是必需的,这些岗位也常由程序员岗位转型而来。程序设计是在整个行业中处于最外层的活动,但不少大学生在提高程序设计能力方面一味地强调了程序设计语言的学习,过分追求并止步于语言使用的技巧和学习过的语言的数量。这并不是一种有效的学习方法,提高程序设计的能力是根本的途径。程序设计能力的提高建立在实践基础之上,培养方案中的各门课程,抽象的如离散数学,更直接的如算法与数据结构、操作系统、编译原理及其他如数值分析、计算机图形学等等,实际上都是为程序设计服务的,是程序设计的“内功”的来源。使用计算机语言写出程序的“一招一式”要会,更要练好内功,一出手写出来的就是好程序。

计算机学科发展到今天,早已经从对单一问题的求解发展到对一类问题的求解,从软、硬件分离发展到两者界限模糊相互融合,从一机多终端发展到主从式结构,从独立微机的普及发展到网络系统,再到建立机群形成强大计算能力的年代。专业人员需要具备系统分析、开发和应用的能力,这样的能力概括为系统能力。所谓系统能力,包括用系统的眼光、系统的观念、系统的结构看待由人、软件、硬件形成的整个计算机系统,要能在整体与部分之间,在不同的抽象级别上切换自己的视角,解决不同的问题。具备系统的观点并不容易,这更加显示了其宝贵。如何培养和提高学生的系统能力,也成了目前国内最新的教学改革热点。

列举出这么多专业能力,会给学习者生出诸多的不适应来。能吓得初学者不敢入门,唬得在学者后背发凉:具备这样的能力,岂不要了小命?这样的能力,并不是一朝一夕就可以具备的,并不是上了四年的大学就可以学到的。再强的学习能力,也得给自己留有时间去学习、实践,让二者相互促进,相互融合。再为读者宽心的是,并不是每个人都要具备所有的这些能力,而是与自己的职业定位有关。例如,志在做核心技术创新工作的人,应当在计算思维、算法分析与设计能力方面奠定好的基础,甚至大学毕业后可以选择深造,获得深入学习和实践的更好的机会;而志在工程性质的工作,尤其是以应用项目开发为目标的大学生,前述的能力并不必追求有多深入,首要的是有能写出良好代码的程序设计能力,以及可以概括到系统能力中的,熟悉软件开发规范、质量保证方法等知识和能力。

大学生要具备这些能力,载体就是大学要修读的各门课程。各专业的培养方案对应培养目标,有针对性地开设了相应的课程。例如计算机科学与技术专业开设的算法方面的课程要深一些,而软件工程,则在软件体系结构、软件工程组织方面多加考虑。简单的办法,当学生的,照单全收。对于能够尽早明确未来发展方向的学生,则可以在培养方案基础上结合自己的实际有所发挥,在专业选修课,及课外学习中塑造自己的特有能力结构。

只强调专业能力容易将人导入误区。一个人真正的成功,以及是否能够有机会过上幸福的生活,其他的基本能力不可或缺,比如健康的体魄,熟练地运用英语等。团队合作、沟通、诚信、敬业、自信等属于职业素养一类的能力和品质,更是决定一个人事业成败的关键。只是这样的话题不在此处深入了。

返回到【全文目录

猜你喜欢

转载自blog.csdn.net/sxhelijian/article/details/86152254
5.4