如何技术探索与实践?一个上海自由开发者的碎碎念

半个架构师
2025-12-13 01:33
阅读 708

大家好,我是阿哲。坐标上海浦东,和女朋友合租在世纪公园附近的老小区里——没错,就是那种楼下有煎饼摊、隔壁大爷养了只总冲你叫的柯基、房租3500但物业费比房租还贵的地方。从大厂裸辞做自由开发者已经两年了,目前主要接前端项目,偶尔也捣鼓点区块链的边角料。

上周五晚上十一点半,我正窝在沙发里调试一个 React 组件,突然收到一条微信:“哲哥,有空聊聊吗?有个面试题挑战想请你帮忙看看。”
发信人是我前同事小李,现在在一家 Web3 初创公司当技术负责人。我回了个“OK”,顺手关掉 DevTools,心想:又来了,这年头连“面试题”都要加个“挑战”后缀,卷得连题目都开始 PUA 候选人了?

但说实话,那一刻我心里其实有点慌。


一切始于去年十月的一次“翻车”

时间倒回2023年10月。那会儿我刚结束一个为期三个月的电商后台项目,客户爽快结款(感动到差点哭),我也难得有了两周空窗期。女友小雨看我整天躺平打游戏,忍不住吐槽:“你不是说要搞点新技术吗?再这样下去,简历上除了‘熟练使用 Vue’就只剩‘擅长泡面’了。”

被戳中痛点。那天晚上我翻出 GitHub,看着自己半年没更新的仓库,忽然意识到:技术探索不能只靠“收藏夹吃灰”

于是我给自己立了个 Flag:用一个月时间,搞懂一个和前端结合的区块链应用,哪怕只是做个 demo。

目标定得挺美,现实却很骨感。我先是看了三天 Solidity 教程,结果写出来的合约连部署都失败;又去研究 Web3.js,结果连 MetaMask 的 provider 都调不通。最崩溃的是某天凌晨两点,我对着控制台里一串 Error: invalid address 发呆,小雨从卧室探出头:“你是不是又在跟电脑谈恋爱?”

我当时真的很焦虑。自由职业者没有团队兜底,技术断层就意味着收入断流。更可怕的是,我发现自己陷入了典型的“伪学习”陷阱——看教程、抄代码、跑通就扔,根本没有形成闭环实践


转机:一场“面试题挑战”带来的顿悟

回到上周五那个深夜。小李发来的题目是这样的:

“请实现一个前端页面,用户连接钱包后可查看其持有的 NFT,并支持通过链上签名验证身份,完成一次安全的登录流程。要求考虑私钥保护、重放攻击防御、以及用户体验优化。”

乍一看,这不就是我去年想做的 demo 吗?但这次不一样——它被包装成一个“面试题挑战”,背后其实是一套完整的工程思维考察。

我花了一小时帮他梳理思路,过程中突然意识到:技术探索的正确姿势,不是“我要学区块链”,而是“我要解决一个具体问题”

于是第二天,我决定重启自己的项目,但换了个玩法:

  1. 以终为始:先定义一个最小可用场景——比如“用户用钱包登录我的个人博客,解锁隐藏文章”。
  2. 拆解依赖:前端(React + Wagmi)、智能合约(OpenZeppelin 的 ERC721 + 签名验证)、后端(用 Next.js API Routes 做中间层)。
  3. 安全优先:绝不碰私钥!所有签名操作交给 MetaMask;后端验证时检查 nonce 防重放;敏感操作加二次确认。
  4. 记录过程:每一步都写进 Notion,包括踩的坑、查的文档、Stack Overflow 链接。

这次,我不再追求“学会”,而是追求“能讲清楚”。比如为什么用 EIP-712 结构化数据签名而不是原始消息?因为前者能防止跨协议钓鱼攻击——这个知识点,我在面试时被问过三次,每次都答得磕磕巴巴。


实践中的“安全意识”:不止是技术,更是习惯

说到安全,很多人觉得这是后端或安全工程师的事。但作为前端开发者,尤其是在涉及区块链这种“钱”的领域,你的每一行代码都可能成为攻击入口

举个真实例子:我最初写签名验证时,直接把用户地址和时间戳拼成字符串发给后端。后来在审查代码时发现,如果攻击者截获这个请求,完全可以伪造一个未来的 timestamp 重放请求——因为后端只校验了签名有效性,没校验时间窗口。

于是立刻改用 nonce 机制:每次登录生成唯一随机数,存入数据库并关联用户 session,验证时必须匹配且未使用过。虽然多写了十几行代码,但心里踏实多了。

还有一次,我在本地测试时把私钥写进了 .env 文件,差点 commit 到 GitHub。幸好用了 husky 配了 pre-commit hook 检查敏感词,才避免社死。现在我的 .gitignore 里光是屏蔽密钥的规则就有八条。

这些细节看似琐碎,但安全意识的本质,就是把“万一”当成“一定会发生”。毕竟,在链上,一笔错误的交易,可没法 Ctrl+Z。


面试题挑战?其实是自我检验的镜子

最近我发现,很多公司在招前端时开始加入“区块链集成”相关的面试题。比如:

  • “如何在前端安全地与智能合约交互?”
  • “用户钱包连接后,如何防止 XSS 导致资产被盗?”
  • “如果 MetaMask 未安装,你的降级方案是什么?”

这些问题,表面考技术,实则考工程素养。而我自己,正是通过模拟这些“面试题挑战”,才真正把零散的知识点串起来。

上个月,我帮一个朋友内推,HR 问:“你之前做自由职业,怎么保证技术不落伍?”
我直接甩出了自己的 Notion 笔记链接——里面详细记录了从“看不懂 ABI”到“独立部署合约+前端集成”的全过程,还包括性能优化、错误边界处理、甚至国际化适配(因为海外用户多)。

结果?对方当场约了二面。虽然最后没去(薪资只给到 22k,而我当前月均收入稳定在 28k+),但至少证明:系统化的实践记录,比一百个“精通”标签都有说服力


给同样在路上的你:几点真心话

写到这里,窗外的煎饼摊已经开始准备早市了。小雨刚起床,迷迷糊糊问我:“你又通宵了?” 我笑着摇头:“没有,就是在写一篇关于‘别瞎学技术’的文章。”

回顾这两年自由职业的经历,我想分享几点感悟:

  1. 技术探索要有“锚点”:不要泛泛地“学区块链”,而是找一个你能交付的小产品作为载体。哪怕是做个 NFT 头像展示页,也比看十遍教程强。
  2. 安全不是附加项,是默认项:尤其涉及钱包、签名、支付等场景,从第一天就要把安全设计进去。记住:用户的钱包,不是你的 playground。
  3. 面试题是很好的练习靶:把它当成真实需求来对待,写文档、画流程图、做异常处理——这样练一次,顶别人刷十道算法题。
  4. 允许自己慢下来:我花了三个月才做出第一个能跑通的 DApp demo,期间无数次想放弃。但自由职业的好处就是:你可以按自己的节奏成长,只要不停。

最后:技术人的浪漫,是亲手点亮一盏灯

有时候我会想,为什么非得折腾区块链?前端框架更新那么快,光是 React 新特性就够学了。

但转念一想,技术探索的乐趣,就在于亲手把“不可能”变成“我做到了”。就像上周,当我终于在自己的博客上实现“用钱包签名登录,解锁一篇仅限持有特定 NFT 的读者可见的文章”时,那种成就感,比接一个高价外包项目还爽。

小雨看到后笑着说:“所以你现在是用代码谈恋爱咯?”
我回她:“不,是用代码守护信任。”

毕竟,在这个充满漏洞和攻击的世界里,我们写的每一行安全代码,都是在为数字世界砌一块砖。

如果你也在路上,不妨从今天开始:选一个小目标,写一行安全的代码,记录一次真实的失败。
不用急,慢慢来。反正,煎饼摊每天早上六点准时开张,而我们的探索,才刚刚开始。

评论 0

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