算法练习
从「想通了码不出来」进阶到「想通就能码出来」,我们需要足够熟悉编程语言,需要足够多的编程实战经验。团队制定一个活动帮大家进阶:每周二、周四集体刷 leetcode 每日一题,周五总结分享。
但 leetcode 太注重代码时间、空间效率,会有以下问题:
- 对递归不友好,写递归容易内存占用过多或者堆栈溢出,
- 对函数式不友好,写
map filter reduce
不如写循环效率高, - 为了提高效率,用技巧略去一些中间步骤,例如本应该是「输入->树->字符串」,会通过技巧把「树」省略掉,
这些都会引诱人写烂代码。因此团队先达成一致:刷题的目的是锻炼大家把思路快速转化成代码。我们要追求高效的思路、清晰的代码,不要追求技巧和捷径。
之后还讨论了一个问题:
如果我们已经达到了「想通就能码出来」,后续的目标是什么?
后续努力的方向有 2 个:
- 看问题要看清本质,用最直接的招式给问题致命一击;
- 了解产品现有功能及发展趋势,能够在架构上考虑全。
先设计再编码
我们在整体框架上有设计,但开发页面或者组件时,我们大都直接上手就写,边写边想,边写边重构。由于大家的习惯、经验不同,最终大家写出的数据流千差万别。我们需要寻找一种图,它能够表达组件之间的数据流。大家用这个图来思考设计、表达设计,然后一起 review,简化数据流,之后再动手编码。
转管理岗
转管理岗是不是都是这个过程?
- 技术独挡一面
- 带几个新人做产品
- 团队扩大,变成 manager
我是这么走过来的,但我相信一定存在别的方式,只是我不了解。
我经历过以下几个阶段:
- 技术独挡一面,工作得心应手。
- 上面分配几个新人,让你带着一起做。觉得带人真费劲,还不如自己帮他们做了。
- 带出了几个得力助手,编码靠他们,自己每天分分工作、发发邮件、开开会就行。
- 焦虑感袭来:我这样下去会不会完蛋,万一有人离职,或者更严重公司开了我怎么办?
- 继续上进,抽空学习、抽空写代码,确保团队任何人走了,自己仍然能 hold 住项目;确保自己的技术能力是领先的。
- 关注范围从前端到产品,再到后端。