客户端

技术沉淀方法论:积累轮子

所在版块: 原创 2018-01-11 11:01 [复制链接] 查看: 2705|回复: 0
轮子,在程序猿世界中通常指的是代码框架或代码库,比如Java世界中的Spring,PHP世界中的Yii,前端世界中的React等等。关于轮子,在技术圈有一句名言“不要重复造轮子”:你费力实现的代码,早就有极好的解决方法贡献在开源社区。这几乎是每个程序猿入行被告知的第一条准则,它虽然提升了程序猿的专业性和开发效率,但也束缚了程序猿的技术成长。这几年面试过的很多程序猿脱离了轮子,根本写不出代码,比如有些人连最简单的冒泡排序都写不出来。所以对于轮子,我们需要辩证地对待。

轮子本质上解决的是技术问题,它是与业务无关的纯技术实现。但是在具体的业务场景中,轮子又要能嵌入业务逻辑,解决实际的业务问题。所以轮子的核心就在于它对技术与业务的边界洞察,也就是它的技术抽象程度。技术抽象程度越大,它能适用的业务场景也就越多。但是,随着抽象程度的提升,轮子的使用效率和运行效率会下降。

举个例子,假设我们现在写一个静态的首页,上面有Banner区,导航区,最新内容区和热点内容区。由于这些区域都是HardCode,所以它只适用于当前这个业务场景。为了能适应更多的业务场景,我们把这些区域都做成了可配置化。于是一个首页轮子就造出来了。但是它还只适用于包含这些功能区的首页实现,如果想让它适应其他类型的业务,比如列表页,我们就要做进一步技术抽象,扩大轮子业务边界。在此过程中,这个轮子的配置项也就越来越多,变的越来越难用。

技术抽象程度和使用效率就是轮子的内在矛盾,技术圈的各种轮子都是针对某一领域问题,在这对矛盾之间实现的一个折中解决方案。所以面对轮子,程序猿应该去了解三个问题:1. 轮子是在哪个领域做的技术抽象;2. 对该领域的抽象程度;3. 使用效率和运行效率。

对于这3个问题,一般1,3会了解的比较多,但只认识这两点最多也就是知道在什么时候会用,以及怎么用。如果只求实用,这样也就够了,但如果想要提升技术功力,就必须了解2。因为轮子的核心是对技术业务边界的洞察力和抽象设计。这是程序猿需要具备的核心能力。

最后总结下积累轮子的内涵。积累轮子并非停留在应用层面,而是要去理解轮子的技术内核,提升程序猿对技术业务边界的洞察力和抽象设计能力。当面对一个具体问题时,我们可以敏锐地从技术视角来解构问题,在积累的轮子库中快速检索出解决此问题的技术方案。并且,在没有合适轮子的时候,我们有造轮子的能力。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码关注微信公众号

QQ|Archiver|手机版|小黑屋|mwt-design ( 沪ICP备12041170号-1

GMT+8, 2024-5-19 11:10 , Processed in 0.061508 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回列表