牛耳教育吧 关注:340贴子:1,580
  • 0回复贴,共1

什么是软件开发中的设计思维?

只看楼主收藏回复

最近跟一些HR闲聊,发现大多数人虽然工作2到3年基本也没能有基础的设计思维,或者说最多还是停留在编码熟练阶段,离真正能够独立完成一个大系统开发的设计能力来说差距甚大。
那么如何在2到3年的时间,能够从基本的编码能力过渡到具备基础的设计思维和系统模块的设计能力,就是作为程序员必须要考虑的问题。

从基本的编程思维谈起
对于软件程序,大家都比较容易理解是由算法+数据结构组成的。编程本身也是完成现实世界到抽象模型世界的一个转换,即通过抽象的设计符号加上最终的代码实现来完成对现实世界问题域的描述。
对于编程思维来说,可以理解为两个方面内容的映射。
其一就是需要将现实世界的描述流程化,步骤化和可操作化,在这个过程中你需要处理考虑将重复的东西抽象为循环,将业务规则抽象为分支和判断等。
其二就是需要将现实世界问题域中的问题或对象抽象为具体的数据结构。
一个人编程能力本身的好坏,或者说编程思维能力,重点其实是体现在这种映射能力,也可以称这种映射能力为数学建模能力。

从编码到设计思想
当从编码到设计的时候,大家常说的是面向对象的分析和设计思想。而这个里面的关键可以理解为抽象。抽象即能否从不同的东西中找到共性的内容,抽象出共性的基础类或接口,抽象意识一方面是增加了你代码的可扩展性,这也是最基本的设计模式中谈到的意识。
抽象的思想不再是简单的自动化,而是形成了归纳演绎的逻辑。抽象不仅仅是解决了可重复的问题,同时解决了可复用的问题。
设计思想里面的第二个关键我将其理解为分而治之,其核心仍然是面对复杂问题的时候如何进行分解再集成的解决思路,里面的重点首先是分解,分解后再通过接口进行集成,同时组件和接口设计要满足常说的高内聚和松耦合思想。

编码是一个技术活,需要大量的脑力活动,但是很多人却可以把编码做为一个体力活,我在这里想继续强调的是如果编码是一个完全的重复体力劳动的话,那么所有工作就一定是可以自动化掉的,在这个时候你原来所有的工作没有任何的价值体现而被完全替代。比如你现在的工作应该完全被类似低代码开发平台,人工智能所替代。
只有当你意识到该懒的时候需要懒,该自动化时候需要自动化的时候,你才可能逐步有抽象和复用的意识,逐步能够真正驾驭你手里面的工具和技术,而不是被工具领着鼻子走。


1楼2022-06-14 15:22回复