『No16: 如何快速熟悉一个项目』

image.png

大家好,我叫谢伟,是一名程序员。

最近比较忙,一方面是换工作,一方面是熟悉新的环境。一言难尽。

今天的主题:如何快速熟悉一个项目

之所以讲这个话题,主要是最近新入职,因为是创业公司,不像大公司里的节奏,给你时间学习,创业公司需要你快速的融入环境,快速的熟悉业务代码,快速的实现需求。坦率的讲,能力不足的时候会给你带来焦虑。

综合下来,当下,我还是喜欢创业型公司。


所以,我就遇到里这个问题,入职三天,第一天就开始分配任务,好在完成了需求,虽然需求不是很复杂。但是快速熟悉了项目,切入进了项目内。

我把自己的方法整理出来,希望对大家有帮助。

主要是后端代码为例

1、具备最小知识集

这一点主要说明的是,你应该要有些基础,写过些代码,不管是自己私底下接触,还是仿照别人的例子,你大概要熟悉一门编程语言,知道后端大概会接触些什么技术。

  • 数据库操作

在这之前,你要会用一种类型的数据库,不需要精通,初级的知道CURD 其实都还OK,但是这样的水平可能会让你写的代码或者设计的业务比较不堪,所以,关于数据库尽量需要知道更多的知识,比如数据库的三大范式,索引、外键、主键、数据库关联等

  • 编程语言

不管实际上你入手的项目是不是你熟悉的编程语言,至少你要熟悉一门编程语言,假如你要熟悉的项目的编程语言刚好是你会的,那么你熟悉起来当然是更得心应手了。假如不是你熟悉的编程语言,其实也都好OK,因为我见过许多程序员,编程语言都不是最重要的,只要熟悉了一门,这种技能迁移的能力,在程序员届实在是太常见了。

  • API

知道 http 请求的主要过程,知道 http 的动作。

看得懂API:方法、参数、响应值。

更高一点的需求,会用 swagger 编写 API

...

初级的后端技术就这些东西吧。

2、跑通代码

跑通代码意味着你大概能知道这个项目最后的结果是咋样的。

比如说这是一个后台管理系统,你可以看API 文档,大概知道提供哪些接口。

假如又提供了前端,那更好,你可以看看网站,网页点击点击,看看网络请求是调用的哪个API. 触发的动作是什么,响应又是什么。

跑通代码,你可能也可以看到,整体的部署流程是什么样的,比如如何部署的?容器?镜像?最后又是如何自动的部署到服务器上的?

假如代码没跑通,那么你可能依赖没搞好,或者设置没搞好,或者需要走的步骤你没执行?

总之,跑通代码很重要。

相同的道理,有时候,你使用某个开源项目,某个具体的用法文档上写的不是很清楚,这个时候有可能你需要看看开源项目的测试文件,有可能你只是摘抄几个测试文件中的函数,自己运行起来,再修修改改,然后你可能就搞懂了具体怎么用了。

3、项目使用里哪些第三方库、结合官方文档使用第三方库

  • 绝大多少项目都需要依赖已有的成熟的第三方库:节省时间成本

跑通代码这一步,应该就已经会有下载第三方库的步骤了。

这些第三方库,不需要你使用的非常6, 你只需要知道如何使用即可。怎么知道如何使用?

1、看官方文档
2、看不懂就Google 搜一搜能看懂的例子,但只是作为辅助手段,最主要的还是文档
3、拷贝文档例子,自己实验下,发现问题,有时候你看到的以为会,其实不一定真会,让代码跑起来很重要
4、换个例子,结合自己的历史经验和现有的文档,看看能不能换个例子再实现一下,能不能更优化了你之前的想法,提供了更好的解决方案

4、梳理项目结构

项目结构,讲究的是如何组织的代码层级结构,体现在最终的效果上就是代码文件是如何组织的了。

我之前非常崇尚领域驱动 DDD

项目的组织也一度按照的是 DDD 的指导思想:

  • Domain 领域层
  • Infra 基础设施层
  • UI 用户UI 层
  • Application 应用层

不过当然不是所有的项目都和你想象的一样,受历史的原因,项目的组织结构往往受第一个写这个代码的人的影响,一定程度上反应了第一个写这份代码的人的编程风格。

好,这里当然不是讲述个人编程风格问题。

好的项目组织:

  • 好看:

这是第一印象,什么叫好看呢?项目组织清晰,一看就知道,哪部分是干什么的,实现了什么样的功能。

  • 可拓展:

特别是作为一个初始阶段的项目,会频繁变动,这个时候拓展性、可维护性的项目一定会给你解决掉诸多的问题。

  • 低耦合

即相互之间的依赖少,即可实现功能。低耦合性对于不断变更的需求的初始项目来说,爽的一笔。

总之,就算你不熟悉具体的代码内实现什么样的功能,仅仅看项目结构,你大概也能猜出来这个文件内的代码大概是实现什么。对我来说,这就是好的项目组织结构。

假如遇到的项目组织,确实不是上文讲的那么优雅,那怎么办?

  • 你确定需要待这家公司?确定。好,你的机会来了。你可以进行重构。重构意味着你对代码需要非常熟悉。假如你有这个任务,相信我,你能熟悉这个项目的。

好,这节主要是梳理项目的组织,知道哪块负责什么任务。

可能光看还不容易明白,不利于思维的呈现。那怎么办?

  • 笔记本上写写画画,流程图搞起来
  • 思维导图画起来

假如还是不懂,那怎么办?

兄dei, 问问会的人罗。

面子是最不值钱的玩意,不懂就问

5、仿照项目实现另一需求

简单的说

  • 仿照或者优化项目结构
  • 借用相同的技术栈,自己寻找类似的例子,从头到尾的实现:自己设计、自己编码、自己测试,体量可以比真实的项目小很多,但核心的功能还是要实现,数据量不一定相当。一句话说:麻雀虽小、五脏俱全
  • 讲出来:结合你自己实现的这个需求,编码完成之后,讲出来,相信我,会对你有好处的。

好,本节大概这样,最重要的是第五条。

再会,我是谢伟。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,263评论 25 707
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    X先生_未知数的X阅读 15,967评论 3 119
  • 文:代大鸿 在之前的时间里,志愿者工作只在电视和网络上见过,今天有幸第一次参加了园区党工委组织的“创文城市...
    壳壳巷阅读 277评论 0 0
  • 记得刚刚上大学的时候那个激情澎湃,暗暗告诉自己,毕业一定要干一番事业,混出个人样儿来。最起码有有两个底线不能逾越,...
    基础绘画社阅读 286评论 3 1
  • 1.回乡记(一) 施璇 第二天整个人好了些,头不怎么疼了,便也就恢复那股精神气,到处去...
    听语堂阅读 899评论 0 3