设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 IT综合资讯 查看内容

编程:思考或打字,思考和打字

2013-11-12 09:54| 发布者: joejoe0332| 查看: 2383| 评论: 0|原作者: 冯欣伟|来自: 伯乐在线

摘要:   ”如果你思虑不周,你也许会认为编程只是一行一行把代码语句敲进电脑里。“——Ward Cunningham 在《程序员修炼之道:从小工到专家》中的序言提到。   软件开发包含很多需要深入思考的内容,诸如设计、解决问题 ...

  ”如果你思虑不周,你也许会认为编程只是一行一行把代码语句敲进电脑里。“——Ward Cunningham 在《程序员修炼之道:从小工到专家》中的序言提到。


  软件开发包含很多需要深入思考的内容,诸如设计、解决问题、找出最佳算法,学习新语言,重构混乱的代码,使其变得整洁而优雅等等。


  当你尝试去做一件你从没做甚至从来没有人做过的事;或者你以前做过,但毫无疑问不想再犯类似的错误,而需要去思考一个更好的方法;或者你尝试去理解其他人写的代码以便修改;或者你正在查找一个讨厌的BUG。所有这些都会占用大量的时间,但最终并不会产生很多代码。


  同时软件开发中也有许多需要大量打字而不需要过多思考的工作。比如当你很清楚需要做什么并且如何做时,但是在工作完成之前,你需要编写大量的代码, 因为你之前做过类似的东西,所以仅仅需要再做一遍,用另一种脚本,适应另一种屏幕,另一种报告,另一种除了思考之外的所有东西;或者工作中大部分需要思考 的工作已经有人为你做好了,他给你提供了程序线框图,精确向你描述这个程序看起来的样子,给人的感觉以及数据的流动,或者提供了详细的API说明,所以, 你要做的事仅仅是把这些思考的结果敲进屏幕同时确保不要犯太多错误。


  调试程序是思考型工作(Debugging is thinking)。而修复BUG、使其通过测试、发布主要是输入型工作。早期的设计和开发,决定使用的技术并设计框架,是艰难的思考型工作,而基于此开 发三个、四个或100个的适应屏幕或报告的程序是输入型工作。用户体验和原型设计是思考型的工作,而将其实现(包括CRUD、适应不同屏幕的配置)却是输 入型工作。找到一个酷的移动应用点子是思考型工作,而实现它却是输入型工作。解决一般的业务问题需要大量的编码,而通过软件优化业务流程去需要大量艰难的 思考。


  所以,思考型工作的人和输入型工作的人做着不同的工作,并且需要用不同的方式管理。

 

  有时候编程就是在打字输入


  ”我们首先是打字员,然后才是程序员。“——Jeff Atwood, Programming Horror


  许多业务程序本质上是很肤浅的。大量的数据库表和文件充斥着大量的元素和数据,大量的增删改查页面、报表相互之间有许多的相似之处;大量的集成工作 把不同属性的不同点映射统一,从而使其满足约束并在操作上独立对待。功能需求上冗长的列表,通过一大堆的问题确保每个人都理解需求,许多细节描述用来备忘 和追踪。银行、保险、政府、会记、财务报表和账单、库存管理和ERP系统、CRM系统,企业内部应用、簿记系统、记录系统等等都是如此。许多在线门户和商 店也一样。一些维护型工作,如平台升级、系统集成和移植、税收变化等也是如此。


  你是在建造一幢房子、一座桥、一个百货商场,或是改造其中之一。大项目经常不断滋生各种问题,通常要花费大量时间去解决。很多输入型工作需要做,但是其中有一部分之前已经做过很多次了,那些工作涉及类似的问题,所以你可以应用熟悉的模式、被证明可靠的工具和工作方法。


  “我昨天看了你电脑程序的源代码,它看起来很简单;只是打了很多字,其中一半还拼写错误。还有,别再让我抱怨你那过渡使用的冒号了。” —— 《The Pointy Haired Boss sees some actual code


  一旦设计确定,绝大部分工作都被充分理解并考虑了所有的细节,剩下的就是管理和协调程序员去把这是代码敲出来。这是一种经典的项目管理流程:预算、计划、跟踪成本和调整、管理计划。这是关于逻辑、规模、一致性和效率的问题,确保工作在正确的轨道上运行。

 

  思考!思考!思考!


  其他的问题,比如设计一个游戏引擎、交易算法、物流或在线风险管理系统、优化一个实时控制系统,这些工作需要的思考都大于输入编码。这些系统有着高 标准、非技术性需求(可扩展性、实时性能、可靠性、数据完整性和正确性)和复杂的逻辑,但是他们集中在解决一系列紧密结合的问题。只有很少一部分聪明的程 序员可以思考那些问题并实现。当然,编码工作仍然需要去做,特别是“外围”部分,框架、管道、布线方式等,但是核心的部分通常只有非常少量的代码,尤其是 在抛弃失败的试验和原型之后。


  这就是软件的奥秘所在,有版权或专利的算法和设计的洞察力是一个成功系统的核心。这种工作需要花费大量的时间去研究、需要无数次的设计原型、需要解决问题的能力,要么需要过硬的技术,要么需要深刻的领域知识,又或者要求二者兼备。

 


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部