我对技术探索与实践的看法

郑思远
2025-12-14 20:03
阅读 301

说实话,写这篇文章的时候我正窝在出租屋的床上,MacBook Pro 放在腿上烫得不行——这已经是本周第三次因为调试一个莫名其妙的渲染 bug 而熬到凌晨两点了。作为一个刚毕业的大专生,半年前还在为简历上“无项目经验”发愁,现在居然能在一家远程办公的 Web3 初创公司里混口饭吃,甚至开始参与区块链相关的前端模块开发,说不感慨那是假的。

我不是科班出身(大专学的是软件技术,但课程水得像白开水),也不是天赋异禀。能从“连 Git 都不会用”的小白,到现在能跟后端讨论 Merkle 树结构、给产品经理解释为什么“链上查询不能像数据库那样随便分页”,全靠这几年死磕+踩坑+复盘。今天想聊聊我对“技术探索与实践”这件事的真实体会——不是那种高大上的方法论,而是夹杂着报错堆栈、deadline 压力和自我怀疑的血泪史。


一切始于一次“被迫”的探索

事情得从去年10月说起。当时公司接了个新需求:要做一个 NFT 资产展示页面,支持用户连接钱包后查看自己持有的 ERC-721 资产。听起来简单?但问题在于,我们之前只做过普通 Web 应用,突然要对接以太坊主网,还得考虑 Gas 费、交易确认、重试机制……产品经理轻描淡写地说:“就加个连接钱包按钮嘛,你们前端搞搞就行。”

我:?

当时真的想砸键盘。我连 Metamask 的 RPC 是干啥的都搞不清,更别说处理 eth_call 失败、nonce 冲突这些事了。但没办法,团队就三个前端,两个在搞核心 DApp,剩下一个就是我——新人,好使唤。

于是,我开始了为期两周的“地狱式自学”。白天上班修 Bug,晚上回家啃文档。看 Ethereum.org 官方指南看到眼皮打架,跑 Hardhat 本地节点跑出幻觉,甚至一度以为自己电脑中病毒了(其实是 Infura 的 API 限流返回 429,我还以为是网络攻击)。

但正是这次被“逼上梁山”的经历,让我意识到:技术探索从来不是“有空才做”的奢侈品,而是解决问题的刚需。你不可能等所有知识都准备好了再开工——项目可不会等你考完 Web3 工程师认证再上线。


资源?别被“免费”骗了

很多人一听到“自学”,第一反应就是“找资源”。B站、YouTube、freeCodeCamp、MDN……资源确实多到爆炸,但问题也在这儿:信息过载反而让人瘫痪

我记得刚开始学区块链时,收藏了至少 20 个教程链接,结果一个都没看完。为什么?因为大部分内容要么太浅(“三分钟带你入门区块链!”),要么太深(直接讲零知识证明的数学原理)。中间那段“能落地干活”的知识,反而最难找。

后来我悟了:真正的有效资源,往往藏在项目的 issue 区、Discord 群组、甚至 Stack Overflow 的冷门回答里

举个例子:我想实现“用户断开钱包连接后自动刷新页面状态”,官方文档只说了 provider.on('accountsChanged'),但没说如果用户直接关掉 Metamask 插件怎么办。翻遍 GitHub issues,终于在一个角落发现有人提到可以用 window.ethereum.on('disconnect') ——但这个事件在某些旧版本插件里不触发!

最后解决方案是组合监听:

// 监听账号切换
window.ethereum.on('accountsChanged', (accounts: string[]) => {
  if (accounts.length === 0) {
    // 用户锁定了钱包或切换了账号
    handleDisconnect();
  }
});

// 监听显式断开(部分插件支持)
if (window.ethereum.on) {
  window.ethereum.on('disconnect', () => {
    handleDisconnect();
  });
}

// 保险起见,加个定时轮询(虽然不优雅但管用)
setInterval(() => {
  if (!isWalletConnected()) {
    handleDisconnect();
  }
}, 10000);

你看,这种“脏但有效”的方案,教科书里绝对不会写。但它就是真实世界的代码。

所以我的建议是:别盲目囤积教程,遇到具体问题再定向搜索。把 80% 的精力花在读源码、跑 demo、复现 bug 上。GitHub 上那些 star 很高的 repo,clone 下来跑一遍,比看十篇博客都有用。


求职?技术深度才是硬通货

说到求职,我得自曝一下:我投了快 50 份简历才拿到第一个 offer。很多 HR 看到“大专”直接 pass,有些公司连笔试题都不给发。那段时间特别焦虑,天天刷 LeetCode 刷到怀疑人生。

但后来我发现,比起算法题,很多中小厂更看重你能不能解决实际问题。于是我调整策略:不再海投,而是针对每家公司定制项目。

比如应聘这家 Web3 公司时,我提前做了个小 demo:用 Next.js + Wagmi + RainbowKit 搭了一个 NFT 查看器,还能显示 OpenSea 上的交易历史。虽然功能简陋,但代码里体现了我对以下问题的思考:

  • 如何缓存链上数据避免重复请求?
  • 如何处理不同链(ETH/Polygon)的切换?
  • 如何优雅降级(当用户没装钱包时显示友好提示)?

面试官看到后眼睛都亮了:“你这个数据缓存策略跟我们生产环境很像啊!” 就这样,我过了技术面。

求职的本质,是证明你能为团队减少风险、提升效率。而深度实践过的项目,就是最好的证据。你不需要精通所有技术,但你要能说清楚:“我在什么场景下用了什么方案,为什么选它,遇到了什么坑,怎么绕过去的。”


实践中的权衡:不是所有新技术都值得追

当然,我也踩过“为了新技术而新技术”的坑。

有一次,领导说:“咱们试试用 IPFS 存 NFT 的 metadata 吧,去中心化嘛!” 我热血沸腾,立马研究起来。结果部署完才发现:IPFS 的内容寻址虽然 cool,但国内访问速度慢到哭,用户打开图片要等 10 秒+。更糟的是,一旦文件 hash 变了,链上 metadata 就失效了——根本没法热更新。

最后我们妥协了:核心元数据仍放中心化 CDN(带版本号),IPFS 作为备份。虽然不够“纯”,但用户体验保住了。

这件事让我明白:技术选型不是炫技,而是平衡。要考虑:

维度 中心化存储 IPFS
访问速度 快(CDN 加速) 慢(依赖节点)
可更新性 高(直接覆盖) 低(hash 不变)
去中心化程度
国内合规 未知

在真实业务中,“够用就好”往往比“理论上完美”更重要。这也是为什么我现在看新技术,第一反应不是“哇好酷”,而是“它解决了我当前哪个痛点?成本是多少?”


远程办公下的技术成长:自律与协作

在家办公听起来很爽,但其实对自学能力要求极高。没人盯着你,也没人随时问“这个咋搞”。上周五晚上,我就因为一个 React Context 的 re-render 问题卡了四个小时,最后发现是 Provider 嵌套层级错了——这种低级错误,在办公室早就喊同事过来瞅一眼了。

但好处是,远程逼你学会高效沟通。我们现在团队用 Notion 记录所有技术决策,每次 PR 都要写清楚“为什么这么改”。比如我优化了区块数据的 polling 逻辑,PR 描述里就得说明:

原方案每 5 秒全量拉取,导致 API 调用过多。新方案改用 WebSocket + 增量更新,API 调用量下降 70%,且延迟更低。附性能对比图(文字版):

  • 旧方案:5s/次 × 100 用户 = 500 次/分钟
  • 新方案:连接建立 1 次 + 事件推送 ≈ 20 次/分钟

这种习惯,倒逼我把每个改动都理清楚逻辑,反而加深了理解。


结语:技术是手段,不是目的

回看这一年,从连 npm install 都会报错的小白,到现在能独立负责区块链前端模块,最大的感悟是:技术探索的价值,不在于你知道了多少概念,而在于你用它们解决了多少真实问题

区块链不是银弹,资源不是越多越好,求职也不是学历决定一切。真正重要的是——你是否愿意在 deadline 前夜,顶着黑眼圈一行行调试代码;是否在报错 UnhandledPromiseRejectionWarning 时,还能冷静查日志而不是摔鼠标;是否在搞定一个棘手 bug 后,忍不住截图发朋友圈(然后秒删,怕被打脸)。

技术这条路,没有捷径。但每一步踩过的坑,都会变成你下一次起飞的跳板。

对了,刚收到消息,产品又提了个新需求:“能不能让用户一键 mint 多个 NFT?”
我:行吧,今晚继续肝。

(写于 2024 年 6 月的一个凌晨,Mac 风扇呼呼作响,咖啡凉了)

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝