高级程序员之抽象能力模型

本文通过故事讲述了高级程序员大熊在锐哥的指导下,理解抽象能力、设计模式及其在软件开发中的重要性。锐哥强调,抽象能力是识别事物本质特征的能力,体现在设计能力、数据结构理解和设计模式应用上。他提出程序员的技术能力模型:编程语言30% + 抽象能力(数据结构50% + 对现实事实的抽象理解能力10% + 设计模式能力10%)70% = 100%。讨论了面向对象设计、数据结构和设计模式在软件开发中的作用,强调了良好的抽象思维对于编写高质量代码和设计稳定系统的重要性。
摘要由CSDN通过智能技术生成

 

每一滴雨水里,都有海洋的气息;每一颗石子里,都有沙漠的影子。所以诗人才说:一支三叶草,再加上我的想象,便是一片广阔的草原。走在秋日的田野上,我想起一位诗人对老托尔斯泰的叩问:一切成熟了的都必须低垂着头么?

转眼三个月过去了,大熊在公司工作表现得非常好。干好本职工作之外还经常帮其他同事解决技术问题,并且经常在业余时间主动帮助项目经理整理文档,很用心地研究项目需求的每一个细节。大熊从锐哥那里学习到的知识每次都总结在自己的一个小本子里,抽时间就温习一遍,尤其锐哥讲过的“上善若水”水的特性对大熊的影响尤为深刻,每看一次都领悟到很多新东西。几个月下来大熊长进和成熟了很多,并且技术也提高得很快,又得到了同事的好评。

软件公司里程序员流动性非常大,由于项目组小组长责任心不够,编码质量差,更没有一个好的编写架构,以至于项目第一阶段上线出现很多严重Bug,给客户造成非常大损失,所以项目没做完就离职了。大熊竟然被项目经理提拔为项目小组长,带领3个新人继续做项目。这使他心里忐忑不安,不知怎样做才能更好地、保质保量地完成项目,才不至于重蹈覆辙?

时间:11月01日 08点 星期六 地点:锐哥家 人物:锐哥、小蔡、大熊

周末一大早,大熊又风风火火地跑到锐哥家,一进门就扯着嗓子喊开了:“锐哥,小蔡在不?”“嘘~小点声儿,小蔡还没起床呢,让他多睡一会儿,这几周复习功课把他累坏了,前几天刚考完清华大学的工程硕士。”“哦~看,锐哥我给你带什么来了?”大熊拿出一个卷轴,从里面取出一幅画。“啊~~郑板桥四季竹碑拓!太好了,大熊你从哪儿搞到的?”锐哥情不自禁地兴奋起来。“锐哥真厉害,一眼就认出是郑板桥四季竹。是我父亲出差到陕西,办完事后绕道到北京来看我,我看到他带了这幅画,知道锐哥喜欢书画,我就慢慢地磨叽,终于从老爸那里‘磨’过来了。”

“太好了,非常感谢你。听说郑板桥的‘四季竹碑’在道教祖庭楼观台,是陕西非常著名的名胜地,还有老子炼丹炉、上善池和老子亲手种的银杏树什么的,都很有名!可惜没亲身去过。”

小蔡被锐哥的惊呼吵醒,晃晃悠悠地从屋子里走出来。一脸还没睡醒的样,揉了揉眼睛道:“大熊拿来的这幅画真不错,我就知道中国水墨画比西方画有生命力,但说不出来为什么,似乎水墨与所画之物有很大的联系?”

锐哥:“呵呵~何止是有联系,是联系得非常密切。记得在情商里提过,老子的‘上善若水’。最好的东西是莫过于水了,水的品质非常高尚,它可以居卑处危。低下的地位,一个小河沟它都可以过去;又能容百川,有巨大的力量,天下之至柔,驰骋天下之至坚。中国画是用水墨,水蘸了墨,虽然没有涂颜色,它会使你感到春天的绿、秋天的黄、冬天的白。只有黑白,从宇宙角度来讲,它也逃脱不了黑与白。

“当欣赏画的时候,你也不能只看到黑,更要注意它的白。老子哲学里有,知其雄而守其雌,知其白而守其黑,笔墨加上宣纸就是黑和白,笔墨到纸上它的渗透过程,是水在起作用,这个水是中国画的生命,而这个水墨,又渗透到宣纸的后面。而油画,你拿个油画笔在那儿画,它能渗透到油画布后面去吗?油画笔是化工产品,它没有那种生命的联系,而中国的笔墨纸,存在着生命的内在联系,它到了纸上,水墨是那样的融洽,升华出那么多美的东西,那种独特游离的意境,使你能体味一种精神力量,所以说中国画也是哲学的,了解大自然才能了解中国画。”

大熊:“锐哥说得很好。郑板桥的画看上去是不错,不过我却不清楚它到底好在哪儿?”

锐哥笑道:“你看他画的竹子生动、有感染力、清新、俊逸。他画竹经过了认识和体现的三阶段:看竹、体会竹、写竹。意思是说在画竹过程中,心中之竹已经不是眼中之竹,笔下之竹又不是心中之竹。这与西方很大的不同。比如说,你如果叫西方人画个西瓜,眼中是西瓜,和心中西瓜一模一样,画出来的西瓜和西瓜一模一样,光线都没差。眼中之瓜即心中之瓜,即笔下之瓜。他画的西瓜会产生食欲。

“而中国人徐渭画的葡萄,你会产生食欲吗?不会。他以饱含水分的泼墨写意法,几个叶子,潇洒跌宕,水墨酣畅,葡萄珠的晶莹透彻之感,显得淋漓酣畅,非常有神韵,可不会产生食欲。能够引起人们食欲的画有可能不是太好的画,能够引起人们精神感发的绘画才真正有意味。中国画有一种游离,它非关乎理,都要和理有所游离才是高手。你看水墨间寥寥几笔便承载出非常丰富的内容,再看中国的诗词(诗中有画)和文字(象形,文字类像)无不都包含了很大的深意,因为‘简易’才有承载了大量的信息!它反映的是事物存在的本质,这是一种高度抽象的境界,直接反映所对应对象的本质。这是西方文化所不能及的。”

听着锐哥慷慨激昂的解说,小蔡和大熊也感到非常兴奋,都有一种对中国传统文化的无比自豪感。

锐哥话锋一转继续说:“这种抽象能力是认识事物从现象到本质的能力。就像上面绘画所说的那样,如果你只是停留在‘见西瓜是西瓜,见葡萄是葡萄’的层次,客户说什么,你就做什么,在设计上让你怎么做你就怎么实现,代码质量和结构也就很难得到保障,从来不过问为什么,也不去想是否满足了用户哪些方面的需求。这样可能只能解决了表面问题,可能会引起返工。

“认识到本质,才能让你的程序具备更大的灵活性和扩展性。在软件开发中,抽象能力体现为对问题域的理解能力,对领域模型的抽象。合理的抽象也是代码重构的前提,每一次重构,都是向更好的抽象迈进了一步。这是一个优秀高级程序员所应该具备的能力。”

小蔡:“我知道抽象是从众多的事物中抽取出共同的本质特征,而舍弃其非本质的特征。例如苹果、香蕉、葡萄、西瓜等,它们共同的特性就是水果。得出概念的过程,就是一个抽象的过程。在C#语言中也有抽象(abstract)类和接口(interface)。”

锐哥:“是的,人对世界的认识,实际上就是一个不断‘抽象’的过程。这种抽象思维就是在不同中找相同,在变化中找不变。把这些相同的和不变的东西理解为共性。而共性的东西是能够共用的。

“提高抽象思维的能力就是提高抽取不同事物的共性的能力,不同的事物不仅仅是包括现实中具体的事物。引入到编程语言里:抽象类是一类事物的高度聚合,而接口是定义行为规范。聚合(抽象abstract)<——>分解(接口interface)。例如,狗是牧羊犬、黑贝等所有狗类的抽象;而对于“叫”的动作,狗也可以叫,鸟也可以叫,这便是行为需要按照接口来完成。合格的高级程序员应该具备很强的设计能力,而设计能力是结合了数据抽象和代码抽象以及语言映射能力到现实问题的解法的能力。

程序员的技术能力模型

“编程语言30% +抽象能力(数据结构50% + 对现实事实的抽象理解能力10% + 设计模式能力10%)70% = 100%。”

大熊:“技术能力模型?太棒了,听锐哥这么一讲,让我有了技术提升的方向,感觉抽象能力太重要了,那么具体体现在哪里呢?”

锐哥:“抽象能力就是发现事物之间相同点或隐含联系的能力。抽象能力具体体现为设计能力:

“将用户的需求提炼抽象为计算机描述→设计一个高效扩展的系统架构→应

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值