当技术已经产品,我是程序员,尽管工做三年,可是在初级的路口徘徊。一直在考虑,如何去作好技术这件事情?如何去区分业务和技术,又如何去融合业务和技术,从而来提升咱们的工做效率?一直很困惑。 java
今天,我跟同窗去爬北高峰,忽然有所感悟。如何去融合业务和技术。前几天,我偶尔在看看《Java特种兵》(谢宇),一本很nice的书(学java读者能够推荐去看)。其中,有一部份内容是程序员也应该懂点数据库。其中一个观点是能够将数据库看成一种产品。那么,我将问题就概括为:你如何去熟悉这款产品?如何才能说明你已经了解这款产品?同理,java也能够看成一种产品,那么,你又要如何去理解?如何表示你已经理解?同理,本身公司的一款产品,你应该如何去深刻理解,如何去优化你的产品?当时,我并非很理解。 mysql
最近买来了李林峰的《分布式框架与实践》(值得读一本书,做为对分布式框架知识结构整理,很推荐)。翻了他的目录结构。终于明白,原来分布式框架基本上作了这些事情。不管使用的框架是dubbo,仍是其余。他能够将分布式框架这一块的产品,作一种抽象。你只要理解这些抽象,就能够明白基本上全部分布式框架所作的事情。这又让我想到了mysql。咱们有如何去深刻理解它呢?对,就是明白关系数据库的抽象。例如,事务,查询计划,数据存储引擎。这三样,其实不管在mysql,sqlserver,仍是oracle都是存在的。同时,又明白通用的一款产品,能够作不一样的设计,尽管流程上是同样的,意图上是有差别的。 程序员
最后一点,是对数据结构和算法的理解。其实,没有数据结构这种东西。咱们生活中的需求,就只有排序和查找这两件事情。排序,能够根据某个特征排序,为了作好这件事情,咱们就要考虑各类事情,他们怎么存的,这就有了数据结构。就出现了堆排序,快排,桶排序,归并排序等等。查找,这个是更加须要考虑存储结构的。存储结构的好坏,致使不一样查询的效率。这就有出现数据结构。例如O(lgN)的bst,O(1)的hash等等。最后的抽象,也就排序和查找。他们的实现原理,就是他们的存储结构和算法。worths大神总结:程序 = 数据结构 + 算法。之前,总觉得你写了sql(至关于算法),就能够不考虑性能。可是,你不明白存储结构,你的性能就有点瞎。 算法
没有具体去解释,如何去熟悉产品!可是,这里已经足够一部分。技术能够看成产品,产品看成技术。抽象是个好方法。接下去,能够会写一些我对这个理解的实战。若有更多的想法和意见,能够在评论处交流。 sql