人工智能时代前沿技术社区

首页 > IT管理 > 热点

为什么每一位工程师都应该学习分析和编程技能?

“数据科学家是21世纪最具吸引力的工作”;“数据是一种新的石油”;“数据正在改变人类观察世界的方式”。现如今,诸如此类的话语不断涌现,不可避免地让人们心生怀疑:我们在选择专业或者职业时,真的做出了最佳选择吗?“我的专业不需要编程技能”;“没有必要去学习软件开发”;“如果会写代码的话,当初就选择报计算机专业了。”

作者: | 2019-11-13 17:16:23 | 来源:搜狐

“数据科学家是21世纪最具吸引力的工作”;“数据是一种新的石油”;“数据正在改变人类观察世界的方式”。现如今,诸如此类的话语不断涌现,不可避免地让人们心生怀疑:我们在选择专业或者职业时,真的做出了最佳选择吗?“我的专业不需要编程技能”;“没有必要去学习软件开发”;“如果会写代码的话,当初就选择报计算机专业了。”

事实上,以上这些话已经完全过时。因为在如今这个时代,竞争异常激烈,科技发展日新月异,只有保持终身学习和自学的习惯,才能紧跟时代潮流而不被淘汰。 作为一名工业和系统工程师,笔者早年间学习的分析和编程技能对于笔者的职业生涯受益无穷。因此,笔者强烈推荐非计算机科学工程师和专家们都去学习分析和编程技能,并且希望它同样能给你们带来一定帮助。

“连接人类、技术,与商业。” 作为一名工业和系统工程师,笔者的主要目标是将工程与管理联系起来,并且分析和改造其联系过程,或者创造全新的联系。具体来说,笔者的职责是寻找能够提高某一过程效率的人、材料、技术、信息和能源,并且分析如何才能整合起这些要素,使之更加有效。 “工程师热爱数字,并且乐于同数字打交道。” 不管这份热爱是否出于真心,但毕竟是他们的本职工作。现如今,几乎在每一项工程任务中,都会直接或者间接涉及到对数据信息的处理。

然而,只有当人们能够收集、理解、并转换数据信息时,他们才能对信息加以甄别地利用,取其精华去其糟粕。仔细观察下面这幅图,图中是一个DIKW金字塔体系。在这个金字塔中,从下往上每一层宽度依次减小,这就代表着将纯粹的知识转化为工作技能之间的距离。由于数据本身并不能直观地显示任何信息,因此必须用某种方式将其转化为更易于理解的信息。相比之下,真正的挑战还在于如何往金字塔最上端跳跃。

DIKW金字塔体系

在往DIKM金字塔上层跳跃过程中,主要使用到数据挖掘技术、机器学习,以及各种深度学习算法,比如线性回归、逻辑回归、K均值聚类、支持向量机、人工神经网络等。然而,由于处理过程中会接触到海量数据,因此如果选择人工处理,则不仅费时费力,而且效率低下,完全是一项不可能完成的任务。在这个时候,编程技能就能大放异彩了。在计算机程序中编写特定的算法,能够帮助人们更加快速高效地处理多而杂的数据集。实际上,即使成功开发出数学模型、预测模型、分类模型以及分析模型(仅列举一部分),并且也对它们进行了相关训练、测试和验证,这也只是所有任务中的一部分而已。

真正的终极目标还在于从中得出结论,获得深刻见解,收获知识,并且再将所有这些转化为自己的智慧。只有完成了这一终极目标,数据科学家和工程师才能成为其公司和组织的宝贵财富。而这,正是分析技能的强大力量。 “与取得研究结果相比,和别人分享它们同样重要,甚至更加重要。” 如果已经开发出合适的算法,并且取得了最后结果和重大发现,那么就已经完成了一大步。接下来还需要干什么呢?其实,还需要与团队成员互相分享和交流研究结果和发现。和朋友交流?人们刚开始听到可能会觉得这简直太容易了!然而在实际操作过程中,很多人却发现这是整个过程中最难的一步。其实,这与“少即是多”的原理是一样的。在用专业术语与别人交流研究结果和发现时,必须保证表达尽可能简洁明了,即使没怎么学过统计和编程的人也能理解。通常情况下,上司并不会详细问研究的各个过程,反而他会要求你逻辑清晰地解释和阐述最终研究结果。因此,这也是为什么大部分岗位招聘都明确要求,应聘者要具备强大的分析和交流能力。 作为一名非计算机科学工程师,笔者在自己整个学术生涯和职业经历过程中,亲身总结了七条学习分析和编程技能的益处。因此,无论你现在多大年纪,大学学什么专业,目前处于职业生涯的哪个阶段,都应该开始考虑学习分析和编程技能。

1. 提高逻辑思维能力 编写代码需要进行逻辑思维。从已知信息一直到目标结果,需要找出其中的逻辑链,并且考虑代码执行过程中可能存在的局限性和潜在错误。通过使用逻辑算子、While循环、For循环,以及条件语句,不仅能提高逻辑思维能力,也能增强编程、分析情况和解决问题的能力。

2. 提高系统思维能力 学习分析和编程技能也可以帮助提升系统思维能力,即理解万事万物都是相互联系的。各团队之间,部门之间,并非单独作战,而是相互合作,朝着同样的目标前进。因此在分析问题,解决问题时,必须同时就其可能对整个业务和组织产生的影响作出全局分析和评估,而非单独考虑你正工作的那一个部门。一句话概括,整体大于部分的总和。

3. 提高问题解决能力 在编写代码或开发程序来执行某一任务或解决某一问题时,就必须先将其拆解成更小的部分。在分析具体问题时,与直接分析整体而言,从细节着手其实会更加有效。因为这样不仅能帮助快速找出事物的根本原因并给予解决,而且还能具体而直观地展示出原本无法看到的细节之处。简言之,与“分而治之”是同样的道理。

4. 提高解决问题时的创造力 大家可能会发现,在大多数情况下,某一问题的解决方案可能不止一个。因此,在真正应用某一方案之前,必须对所有解决方案的有效性和可行性进行评估和比较。比如,其中某些方案可能涉及大量编码工作,其他一些则不需要很多,甚至其中一些编码工作还要求人们要有丰富的知识才能胜任。在寻找解决方案的过程中,人们可能会多次改变思路,不断分析使用的方案是否能够真地解决问题,并且寻求相应反馈和建议。最后,为了最高效地实现目标,人们通常会在这个时候充分发挥自己无限的创造力。

5. 提高对于过程的分析和理解能力 在知道自己想去哪之前,必须明白自己现在在哪。在分析问题时,理解自己处于哪一阶段必不可少。在目前阶段,哪些是输入信息、过程、决策、转换、交流、延迟、错误和结果?谁是这一过程的主导者?谁是利益相关者?谁又是最终客户?目标是什么?离这一目标有多远?这所有问题,在着手编码前或者编码过程中都必须思考清楚,只有这样才能让自己在分析过程和解决问题时更加得心应手。

6. 增强做决策时的自信 拥有坚实的分析能力和丰富的统计学知识,能够帮助更好地创建评估多种情景的决策支持系统,从而让人们基于目前的局限性来作出最佳决策。未来,当你需要向别人展示成果时,你会变得更加自信,并且应用统计学和数学知识来有理有据地进行阐述,而不再仅仅依赖常识和直觉,或者计算机的指令。

7. 脱离舒适圈 在完成任何一项全新的任务时,每个人都会经历自己的学习曲线。毋庸置疑,在某些阶段,人们可能会发觉自己陷入了困境。但是,这没关系,因为网上有那么多的资源可以给予你帮助。逐渐地,随着人们对某一问题的研究愈加深入,就会发现越是自认为见多识广,实际上越孤陋寡闻。因此,这就会极大激发人们的好奇心,激励人们去学习新事物,扩充新知识。在网络上,有着无数可用于不同目的的资源,其中包括各种程序包、代码库、算法、函数、程序、语言和软件等。当然,大家也无需为了成为下一个编程大师而去学习以上所有的资源,大家真正需要去做的是寻找出最符合自己目标的资源,加以甄别地去学习。

尾记

有些人说自己年纪太大,为时已晚,于是放弃学习分析和编程技能;也有些人觉得自己的职业生涯已经足够成功,没必要再去学习新知识。其实,这一切都只是借口而已。在当今世界和市场中,一切事物都在以空前的速度变化和发展着。目前,大部分工作都要求应聘者具备一定的分析和编程技能,或者至少会使用特定的电脑程序和软件。所以,当机会来临时,我们是否已经准备好迎接了呢?市场并不会因我们的需求而改变,真正需要迎合市场需求的,反倒是我们自己。 还在等什么,赶快开始学习吧!自己写的代码,并且能够有效运行,这种感觉真的很酷!