请教大家如何提升研发能力

2023-01-09 17:08:50 +08:00
 onice
大部分岗位其实是开发,并非研发。开发是使用现成已有的解决方案,完成业务需求。

比如需要处理 exel ,有相关的库。需要生成 pdf ,也有相关的库。

工作中大部分时候,我们都在使用已有的库,然后参考库的文档,编写能够实现业务需求的代码。

那么回到库的本身,我理解的研发是开发这些库本身。

然后我发现一个现象,就是:如果让我实现业务需求,某个需求我没做过,我就会去搜索。看看已有的解决方案是什么,用了什么库,代码怎么写。

但是,反过来,如果让我实现库的本身,我就不知道如何下手了。这个时候,能够搜索到的资料往往也很少。本科学的课程,也只是让我理解这些库的内部原理,但还不足以达到自己能创造这些库。

比如实现分布式框架,中间件这些基础设施的本身。

请教大家如何才能提升自己的研发能力呢,换句话说,就是让自己不依赖这些库,有创造这些库的能力。
950 次点击
所在节点    程序员
4 条回复
w292614191
2023-01-09 17:23:09 +08:00
在实际业务中练手
DingJZ
2023-01-09 17:38:39 +08:00
1. 只说提升创造库的能力
copy ,处理 excel 、需要生成 pdf 的库等等你想学的,反正已经有人写了,分析他,解构他,照他的写一个。

2. 另一个角度来说,这些需要的其实是对相关业务的知识,你用他的库实现了一个功能,这个功能是个业务含义的功能。你掌握的是这个业务以及需要的知识。
他实现了一个生成 pdf 的库,生成 pdf 就是他的业务,大家做的业务不同而已,对应的需要的知识范围也不一样,这很正常。
netabare
2023-01-09 20:27:29 +08:00
可以从简单的库开始。

举个不恰当的例子,比如说 compiler ,要实现一个复杂语言的很复杂吧,但是简单的,LL(1)的文法解析,手写可能有点复杂,但用生成器的话基本上大家都会,一个只有 int 和最简单几个语言结构的,大概就是本科生大作业的程度。
那么,在这个基础上,就可以观察一下自己想要做什么方面的扩充,然后去针对性地学习和扩展功能,比如说,更多的基本数据类型、结构体、OOP 、类型检查、编译到特定的机器上,之类的。

像是数据库或者 pdf 库之类的,大概也是类似的内容吧。

而且如果把功能拆分开来然后逐个审视的话,op 也许会发现,其中有许多功能已经有别人做过了,比如说对命令行参数的解析,甚至连 pdf 解析这件事本身也是别人做过的。

那么就可以问一下自己,实现这个项目的目的是什么呢,如果是为了短平快,那么自然可以别的类库都用上,如果是为了学习,就可以自己去寻找各种材料,比如说 pdf 的 spec 或者一些简单的类似项目的代码,来参考学习。

这样的话,就可以从简单的开始,一点一点把项目往复杂里做,也可以先依赖第三方库,在自己写出了自己的版本后把这个库给替代了。

我觉得最重要的大概是两个能力吧,一个是「解决问题的能力」,看 op 的介绍,在这方面应该没有问题。那么第二个能力,就是,组合和拆分,也就是说,把一个复杂的问题拆分成许多小问题,再把小问题拆分成更具体的任务…之类的,把不同的知识点组合起来,然后形成一个可以去做的项目,这样的能力。
solitude2
2023-01-10 16:26:11 +08:00
我觉得更难的是,要有强烈的动机,或者说自我驱动去思考然后输出成落地效果。思考才是 core

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/907659

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX