提高软件开发的理解力和掌控力

力之源泉在于理解。

理解的重要性

  • 从与主管、客户、产品经理和项目经理沟通的角度来说,需要能够理解他们说话的语境和背景,从而推敲其真正的意图;需要理解他人的需要和意图;表达只有在理解的基础上进行才是有效和有份量的;这里的理解指“自然语言层面的”。

  • 从熟悉业务和产品的角度来说,需要能够理解现实中的事物、事务以及相互的关联,并简明扼要地绘制出来;这里的理解指“分析语言层面的”。

  • 从开发程序的角度而言,需要对所要处理的事物的性质和规则有深入的了解,能够理解抽象的概念、模型和设计思路。这里的理解是“计算语言层面的”。

  • 在实际工作中,需要在有限的时间内处理潮涌而来的大量事务,理解不断涌现的各种新的思想和技术以及新的发现,在必要时作出恰当的反应和行动,包括优先处理重要紧要的事情、需求和项目,适当的忽略和放弃。这即对一个人的理解和表达能力提出了“速度”和“敏捷度”的高要求。

软件开发的核心基本能力是理解和表达事物的能力。 纵观软件开发活动,无非是在持续不断地理解话语、理解事物、理解事务、理解软件设计与实现、表达自己的观点、完成所学所能中完成的。

对于初级工程师来说,执行力和具体做事情会很重要;对于高级工程师,设计规划和把事情想清楚更为重要。

理解软件

  • 分而治之。复杂任务往往是由简单任务通过多层次组合而形成的;将复杂任务进行分解,分解到每个子任务都在能力掌控范围内。
  • 系统思考。 仅仅理解复杂事物的子部分还不够,需要以系统思考的视角,去理解事物组成部分的关联,事物存在的支撑机制。见树亦见林。
  • 抽象模型。 将事物赋予概念,对事物关联建立简要的模型进行处理。对事物的理解从具象的形式到抽象的意义。比如圆形意味着阻抗低;锁意味着隐私;房子意味着庇护;门意味着可授权的入口;盆意味着开放性容纳等。
  • 科学规律:学习和探索事物的性质和运行规则集合。比如数学性质;物理学定律;适当的缓存能提升效率。

分而治之 - 系统思考 - 抽象模型 - 科学规律 , 是逐步往上,从部分看到全景,从具体深入抽象,从理论到实际的方法总论。

日常工作

软件开发

软件开发的首要任务是深入理解业务。从用户角度来看,是场景、需求、功能与体验;从系统设计角度来看,是模块、接口与交互; 从底层实现角度来看,是流程、规则、数据、影响范围。

软件开发讲究模块化、分而治之,很多开发者可能只管理一小部分,但用系统思考的视角看到各模块交互的全景图是非常重要的。

项目掌控

通常是指互联网企业中存在的多项目并行情况。比如一个项目在提测中,一个在预发中,两个在开发中,涉及的点也比较多,还有两个正在全力赶过来。如何提升多项目的掌控力呢?

从项目经理的角度来看,每个模块的职责在于: 1. 完成预先评估的任务和工作,为整体流程和功能质量提供保障; 2. 在适当可接受的时间范围内完成,保障项目进度,减少延期时间。

  • 优先级与预先评估。仔细查看各项目的联调、提测、预发、上线时间,确定优先级,错开时间;留出缓冲余地。此时,并不涉及实际开发,而是涉及到评估。 评估意味着:1. 需求理解; 2. 现有实现; 3. 改动点评估; 4. 任务拆分与工作量评估; 5. 时间评估。 评估性的活动,与编程是同等有挑战的事情。

  • 充分开发自测。 要提升联调效率,要充分评估到改动点和开发自测,否则联调和提测的问题找上门来,一样让人吃不消。比较理想的情况是,自己的改动点都在掌控之中,只要部署好了,关注项目进度即可。

  • 时间管理。 为改动点比较大的项目安排整段的时间,专注地解决问题。减少不必要的任务间切换。

  • 申请资源。 再能干的人,多个项目同时挤压过来,也是很可能扛不住的。要及时申请资源,并说明充足理由。 很多事情,需要在做之前就想好。


交流沟通

  • 深入理解事理,下足功夫,准备充分,有说服力;

  • 语气和方式委婉柔和。

  • 换位思考。从对方的处境考虑问题,理解对方的立场和视角。


心境

  • 适当地运动、休息和饮食,保证健康的身体状况; 
  • 放开心灵,观察和探索整个的世界,深入细致地去理解和分析事物。
  • 克服急于求成的心理,把事情想清楚再行动。

猜你喜欢

转载自www.cnblogs.com/lovesqcc/p/10474078.html