正确的理解将是你通往最终目标的唯一路径,时刻明确你正做的东西是否和你的最终目标一致,是你得以最快进展的保障!
曾经面试过一个在MTK公司做过的朋友,他看起来很有经验,并且他自己说他亲自写过1万行以上的代码,他在简历上写到他如何如何的出色。于是在面试的最后,我想请他写一段小程序,题目很简单,大概的要求是请他写一断程序来"为一个链表排序"。
我问他,“题目清楚吗?”他说“清楚。”
我又确认了一次“有什么问题吗?”他问:“用冒泡算法可以吗?“可以”
他又问“可以用C++写吗?”我回答“可以的”
然后,他很爽快的回答“我明白了,十分钟就能写好”。
于是十五分钟之后,我看他写的程序,我完全不明白他怎么会写成那样,他完全没把我的题目理解成我想要的那样。首先他所写的程序里没有链表,也没有定义数据结构。而是定义了一个数组,他用COUT将一个指针数组里的数据打印了出来,这完全不是我要的啊!
他花了十五分钟的时间写的程序没有一行与我所期望的一致!最后我只能对他说,对不起,您不符合我们的需要。
朋友们,请您想想看,如果是您,您会任用他吗?你一定会回答不,是的,这样的曲解需求,只会是南辕北辙无法完成目标的。我举这个例子并非是想教您如何去面试,而是想强调,对于需求的理解能力,比编程的能力本身更重要!因为如果一个人都不知道自己要干什么,那他做的事,怎么能够达成他的目标呢?
曾有朋友报怨,“我知道设计需要有面向对象的思想,可是我跟本不知道如何划分我的模块才好,这样可以那样也可以,我完全没有头绪,所以我干脆就直接写程序算了,可是越写越乱,越写越复杂,直到最后,我最终才明白我这样做是徒劳,代码没有任何逻辑性可言,无法进入到维护期,不断的重写,甚至有些逻辑越来越复杂以致于我无法继续下去了。” 我告诉他,“在设计的时候,如果你先想一想,我要让我的代码为我做什么?我要实现什么,才可以让它们干这些事情并且目标明确?不断的记住这些,就不会走弯路了。”
朋友,如果你要设计程序,请记住这两点:
1. 花点功夫,去正确的理解你的需求
2. 不断的明确你正在做什么