当技术已经产品,我是程序员,尽管工作三年,但是在初级的路口徘徊。一直在考虑,如何去做好技术这件事情?如何去区分业务和技术,又如何去融合业务和技术,从而来提高我们的工作效率?一直很困惑。

 

今天,我跟同学去爬北高峰,突然有所感悟。如何去融合业务和技术。前几天,我偶尔在看看《Java特种兵》(谢宇),一本很nice的书(学java读者可以推荐去看)。其中,有一部分内容是程序员也应该懂点数据库。其中一个观点是可以将数据库当作一种产品。那么,我将问题就归纳为:你如何去熟悉这款产品?如何才能说明你已经了解这款产品?同理,java也可以当作一种产品,那么,你又要如何去理解?如何表示你已经理解?同理,自己公司的一款产品,你应该如何去深入理解,如何去优化你的产品?当时,我并不是很理解。

 

最近买来了李林峰的《分布式框架与实践》(值得读一本书,作为对分布式框架知识结构整理,很推荐)。翻了他的目录结构。终于明白,原来分布式框架基本上做了这些事情。无论使用的框架是dubbo,还是其他。他可以将分布式框架这一块的产品,做一种抽象。你只要理解这些抽象,就可以明白基本上所有分布式框架所做的事情。这又让我想到了mysql。我们有如何去深入理解它呢?对,就是明白关系数据库的抽象。例如,事务,查询计划,数据存储引擎。这三样,其实无论在mysql,sqlserver,还是oracle都是存在的。同时,又明白通用的一款产品,可以做不同的设计,尽管流程上是一样的,意图上是有差异的。

 

最后一点,是对数据结构和算法的理解。其实,没有数据结构这种东西。我们生活中的需求,就只有排序和查找这两件事情。排序,可以根据某个特征排序,为了做好这件事情,我们就要考虑各种事情,他们怎么存的,这就有了数据结构。就出现了堆排序,快排,桶排序,归并排序等等。查找,这个是更加需要考虑存储结构的。存储结构的好坏,导致不同查询的效率。这就有出现数据结构。例如O(lgN)的bst,O(1)的hash等等。最后的抽象,也就排序和查找。他们的实现原理,就是他们的存储结构和算法。worths大神总结:程序 = 数据结构 + 算法。以前,总以为你写了sql(相当于算法),就可以不考虑性能。但是,你不明白存储结构,你的性能就有点瞎。

 

没有具体去解释,如何去熟悉产品!但是,这里已经足够一部分。技术可以当作产品,产品当作技术。抽象是个好方法。接下去,可以会写一些我对这个理解的实战。如有更多的想法和意见,可以在评论处交流。

08-31 06:21