传说计算机科学是一门数学学科。 机械发明和数学理论为计算机概念和系统铺平了道路。
计算机科学的早期历史以查尔斯·巴贝奇(Charles Babbage),艾达·洛夫莱斯(Ada Lovelace),当然还有艾伦·图灵(Alan Turing)为名。 然后,您可能会惊讶地发现,直到1950年代,计算机科学这个词才真正出现在现场。
但是,从什么时候开始与计算机科学世界相关的事情变得容易了? 尽管世界各地的大学都专门为追求计算机科学而设立了系,但人们之间仍在争论"计算机科学"一词的实际含义。
然后是有关软件工程和计算机科学的辩论,这使问题进一步复杂化。 而且,不幸的是,辩论一直持续到今天。
但是,这正是为什么询问计算机科学家需要做什么的原因,就像是试图弄清埃隆·马斯克(Elon Musk)真正以谋生为目的。 每个人都认为他们确切知道这是什么,但没有两个人会给您相同的答案。
尽管如此,我还是要大胆地冒险一些人去过的地方,然后让我对成为计算机科学家意味着什么。 因此,让我们像星际飞船企业一样继续前进。
解决问题和语言能力
成为计算机科学家不仅要处理计算机和程序。 计算机科学家可以解决现实世界中的问题,并弄清楚这些问题是否可以通过计算解决。
他们参与开发使计算数据更经济的技术,他们创建语言并与之合作以找到解决方案,并参与构建和设计可为多种应用程序提供多种服务的计算机系统。
将计算机科学家视为可以将数学概念与技术融合并构建可以产生可行数据的系统的向导。 我想我们可以将他们形容为可以从混乱中创造感觉的个人。
这就是为什么当其他人说成为计算机科学家就是精通编程语言的原因–我不同意。 毕加索说:"我们的目标只能通过计划的手段来实现,在这个计划中我们必须热心相信,并在其中采取积极行动。 没有其他成功之路。'
同样,您可以将计算机科学家描述为艺术家,可以根据他们使用的工具类型来绘制不同风格的绘画。 谁听到过艺术家将自己限制为一支画笔的消息?
成为计算机科学家与成为程序员不同。 您不必局限于特定的语言-而是,作为计算机科学家,其核心就是要解决问题。
为什么透视总是很重要
正如我之前所说,编码人员和计算机科学家的操作方式之间存在巨大差异。 我不会低估编码员的角色,因为他们在计算机科学领域有自己的独特位置。 实际上,计算机科学家和编码人员都有助于推动技术的发展。
两者之间的区别在于前景。 任何一个值得他投入盐分的艺术家都会告诉您,您创作的作品取决于您的观点。 这就是为什么两个人看着相同的静物可以创建看起来完全不一样的构图的原因-因为其中一个人太靠近物体,而另一个人则距离很远。
这个世界的计算机科学家倾向于从更大的角度看待。 他们面临着规模和复杂性更大的挑战,并且对选择可用的工具来寻求可行的解决方案并不挑剔。
另一方面,具有单一语言或某种技术知识的编码人员更像专家。 他们非常熟练,但是会在积累的专业知识上表现更好。 一些编码员擅长Java开发,而其他编码员则是MySQL开发。
进一步将艺术比喻为一个编码者,可以说是一个艺术家,他是一位习惯于非常特定的艺术媒介或致力于特定艺术运动的专家。 相反,计算机科学家将是那种涉猎各种媒介和风格的艺术家,并且更致力于将自己的视野传播给观众,而不是遵循任何一种运动的严格性。
当然,编码人员和科学家的工作有些重叠,但是正是他们对事物的看法才使他们与众不同。
规模和复杂性有所不同
既然我们已经讨论了为什么观点在各行各业都很重要,那么让我们继续探讨复杂性和规模的概念。
想象一下一名电工在为灯布线,而不是一位在电网上工作的电工,最终将为整个城市供电。 如果您问他们以谋生为生,他们的回答将会类似,他们是电工。 但是,事实是,他们的工作在规模和复杂性方面存在很大差异。
同样,比较一个将小型家族企业的商品和服务推广到亚马逊等公司的在线网站。 两家在线业务都涉及为在线消费者和零售商品提供餐饮服务,但亚马逊每分钟处理4000笔交易。
告诉您所有这些的要点是,某些事物在现实世界中可能具有相似之处,无论是职称还是公司目的,但在数字世界中,它们基于操作和规模是千差万别的。
但是,这与成为计算机科学家有什么关系呢? 基于他们工作的规模和复杂性,计算机科学家有点像数字世界的亚马逊。 他们是更有可能在众所周知的电网上工作而不是在灯泡上工作的人。
成为计算机科学家意味着您必须从各个方面评估问题或挑战,并涵盖所有基础。 它的发明,理解,经验实验和许多其他东西都融合为一体。 关键是-计算机科学家将更多地参与处理复杂的挑战或解决需要解决的问题。
那么,您需要码农还是计算机科学家?
在一家招聘公司工作有其一系列优点-其中之一就是能够询问行业领导者和公司在其理想的计算机科学家候选人中正在寻找什么。
大多数人正在寻找对解决问题更感兴趣而不是专注于编码的人。 作为科学家,您通常会以了解业务需求问题的能力以及是否提出正确的问题来进行判断。
知道您问了多少有关您的个性和知识深度的问题,这真令人惊讶。 如果您迷上特定的语言或技术,那么您就不会有其他发展途径。
这不是一件坏事,但看起来您是一位编码器,非常专注于自己喜欢使用的一组特定技能,工具和技术。 但是,如果有人想聘请适合"可替代"标题的人员,那么您可能就不会成为他们的头号候选人。
考虑一下-如果作为编码人员,您会选择Scala作为您的选择语言,但是该公司正在寻找一个更专注于解决业务需求问题的人才,那么您将是尝试的优秀选择 方孔。
更不用说挑战任何问题的局限性了,这是人们在聘请科学家时往往会考虑的另一件事,这是理解边缘案例至关重要的地方。
在编程中,边缘情况(或拐角测试)是需要仔细检查值的情况,或更简单地说,它涉及测试算法或函数的边界条件等。您需要了解任何算法,方法的边界 或您提供的任何软件的功能,然后才能确定它可以在幅度谱的两端正常工作。
计算机科学家需要掌握在问题空间内正常工作的基础知识。 问题空间是解决问题的所有要素汇聚在一起创建解决方案的地方。 因此,您应该问自己的问题是-您了解数字世界中算法,设计,架构等的关键方面吗?
简而言之,人们正在寻找对挑战现状和推动发明与转化的界限感兴趣的科学家。 正如史蒂夫·乔布斯(Steve Jobs)所说,创新将领导者与追随者区分开。