如何衡量一个人对技术框架的熟练度?

在日常开发中, 作为开发者大多数时间面对的是技术和业务, 在这篇文章里, 我主要想说说作为开发者, 对一项技术应该如何合理的去把握.
假象一下, 现在我们要学习一个新的技术框架, 可能是Spring boot也可能是React, 或者是Redis, 我们应该如何切入?
现在姑且从三个大的角度对技术的熟练度进行划分

  • 应用
    • 简单场景的应用
    • 复杂场景的应用
  • 设计
    • 框架设计的初衷
    • 框架的核心概念
    • 框架的设计思路
    • 框架的设计模式
    • 框架的设计思想,原则和哲学
  • 实现
    • 核心模块的实现细节
    • 一些模块实现的奇技淫巧

应用

简单场景的应用

很不幸, 人往往是在框架或者特定的环境下做事的, 长此以往人会形成特定的习惯行为模式,这种特定的习惯会形成一个有陷阱的舒适圈.
在实际的工作中, 我们往往知道一个东西是如何使用的就是够了. 比如说这样一个例子, 现在要页面要实现一个新增用户的功能, 基本上需要写存储过程, 写DAL层, 写Service层, 写页面层(包括验证), 然后做相应的测试. 要完成这个例子基本上就是在一个框架下完成的, 每个公司都有自己相应的框架, 不同之处就是名称不一样.
在这样的场景下, 我们知道这个api是如何使用的就足够了, 我们也必然会变成一个api熟练工.
长此以往, 一年下来如果只是做这种类似的功能, 对自己能力的提升是没有任何帮助的, 换句话说你表面上有的只是一年的经历, 实际上是一个礼拜的经验. 但这事对个人来说只能说是常态, 但对组织来说是必须, 因为一个组织需要的是分工, 分工必然导致一些工作是简单的重复和可替代性, 这种模式下的做事方式是具有可预见性的

复杂场景的应用

复杂场景一般是指两种情况

  • 假设有模块A, 由项目组A负责, 模块A会被很多系统调用, 模块A依赖于模块B(项目组B负责), 模块B依赖于模块C(项目组C负责). 这里的复杂度可以细分为两种
    • 模块依赖的复杂度, 这里模块依赖会形成一个有向无环图, 如果是一个团队负责这些所有模块, 那么这个复杂度仅仅存在于团队内部.
    • 如果是不同团队负责不同的模块, 那么就是组织之间沟通的复杂度. 这种类型的复杂度是一种玄学, 往往会伴随着如下名词或短语出现,“集成”,“扯皮”, “等他们数据准备好”, “被他们block住了”
  • 假设模块之间的关系是固定的, 那么随着用户数量的上升, 这个框架在性能方面是否还能扛得住? 量变会引起质变, 在其余什么都不变的情况下,仅仅是用户量的提升, 理论上会导致系统扛不住. 这里会有一个很自然而然的问题, 这个框架或者系统的极限是什么? 遗憾的是, 只有大公司才有会遇到这个问题, 对于大部分公司开发者而言, 是没有这样的实操经验的.

总结

在这个层次上,我们所需要就是会用就可以了,至于为什么要这么用,就不是很清楚了. 还真别说,这招在中小公司很管用.

设计

框架设计的初衷

框架的核心概念

框架的设计思路

框架的设计模式

框架的设计思想, 原则和哲学

实现

核心模块的实现细节

一些模块实现的奇技淫巧

如果觉得我的文章对您有用,请我喝杯☕️吧。您的支持将鼓励我继续创作!
迷途书童 微信 微信
迷途书童 支付宝 支付宝