For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
这里我所说的编程工作很难,实际上与编程语言毫无关系。为了找出其中的原因,暂时假设我们完全不使用计算机。你无需告诉计算机做什么,但你需要告诉你的朋友该做什么。别作弊,也不能告诉你的朋友自己看着办,你必须为他们做所有的决定。
你会发现,你需要花费大量时间才能解释清楚关键的背景信息。你的朋友需要了解程序需要处理的现实问题,以及你认为该程序应该提供哪些功能。你必须解释清楚所有的缩写字母和术语,而且还需要讨论各种外部因素。
你的朋友需要知道所有可能出现的情况,需要处理的细节非常多。
同时,你还需要考虑不同功能的状态两两组合,用户可能会尝试的各种动作,以及所有可能出现的事件,你需要与朋友讨论大量的极端情况。
向你的朋友解释清楚这一切的难点有好几个。首先,你必须掌握所有的实际细节;其次,你必须了解程序在每种情况下应该执行的操作;再者,你必须通过朋友能够理解的方式来传达所有的信息。这意味着你必须有条理地组织这些信息,以确保便于理解。
请注意,到目前为止,我们甚至还没有提及计算机,当然也没有提及编程语言。理解需求,掌握程序应该做什么以及组织表达方式,这些都是非常艰巨的任务。
描述与规格
我们很容易搞混描述与规格之间的区别,这是一个我们经常会踏入的思维陷阱。如果你只有一段描述(“红色汽车”),则你可以测试实际情况是否符合该描述(“是红色,但不是汽车”),但是这段描述并不足以传达如何制造一辆汽车。而这就是规范的用途。
创造事物需要做出很多决定。如果记录下每个决策的结果,就会得到一份(杂乱无章的)规范。编写程序的时候,你需要做出这样的决定,因此仅凭描述还不行,你需要一份规范。在看到一段描述(“列出文件”)时,我们很容易认为这是一个规范,因此我们觉得应该能够告诉计算机执行该动作。但实际上,这中间有大量的决定需要考虑(“文件应以什么顺序列出?每个文件一行吗?”)
在编写程序的时候,你拿到的规范常常只是一段描述。计算机无法“绘制矩形”,它必须知道这个矩形的显示位置、大小以及颜色。在编写这段代码的时候,你会发现很多尚未做出的决定。做这些决定需要付出很多努力。我们经常会弄错引发这些工作的缘由,将其归咎于编程语言,但其实这只是因为我们很难根据一段描述创建规范。
计算机本身
下面,说回计算机。开发软件不仅仅是了解软件应该做什么,并将各种想法转变成代码。计算机本身也有很多程序必须解决的问题。你的程序必须在硬件和网络上快速地运行。程序需要处理机器故障。而工具和协议的复杂性导致该领域所要面对的问题更多。这些困难都不是由向计算机解释做什么的过程引起的,它们也是需要解释的事情。
另外,你需要在脑海中运行某些程序。有时逻辑很容易理解,但有时你无法将一系列的事件和状态尽数塞入脑海中。为了正确理解程序的详细信息,在出现错误的情况下修复程序,你需要了解各种情况下程序本身的状态。
编写代码的过程,可以让你清楚地掌握程序的工作方式。然而,程序永远不会停止变化。你会发现错误、添加新功能或修改现有的行为。即便程序最初的组织方式非常有效,但也不意味着它的结构永远正确。你需要花费时间组合各种情况,考虑未来的需求,并在出现意外的时候收拾烂摊子。
人员合作
很多时候,我们需要与其他人合作编写程序,而这也会带来挑战。
所有的团队成员都必须各司其职。为了他们之间不互相妨碍工作,你必须进行分工。为了建立合理的分工,首先你需要了解程序的结构(请参见康威定律)。
如果你有多个团队,则情况会更复杂。每个团队都有不同的目标,因此你必须权衡各个方面。有时,某个决定非常利于其他团队,但会阻碍你的工作。设身处地为他人着想,并找到合理的妥协方案是非常艰难的工作,但必须完成。
在大型项目中,没有任何一个团队能够了解整个系统,更不用说一个人了。但是,你依然需要弄清楚系统的各个部分是如何设计的,又是如何组织到一起的。这比你自己承担起整个设计还要难。
虽然与人打交道并不是真正意义上的编写代码,但也是开发软件中非常重要的一部分。
合肥达内IT培训免费试听课程火热报名中,带你轻松入行,26大课程全国45个城市,129家中心均可就近学习,学完后,达内老师会帮助进行面试辅导,在面试前,就带你跨过可能存在的坑,让你入职更加顺利。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请添加3216764521学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。