作者shter (飞梭之影)
看板Soft_Job
标题Re: [请益] 接手外包商的code没交接也没人可以问
时间Thu Jul 14 07:21:51 2022
※ 引述《sbbty018 (charlie)》之铭言:
: 各位大神好
: 我是最近刚从资策会(java)毕业找到目前这间台中的类博弈公司(40k)
: 面试的时候没问目前团队的状态
: 上班第一天才发现原来我是第一个RD。MIS则是大概有六位
: 公司目前的code都是之前中国外包厂商写的
: 然後一两个月前公司决定要自己组台湾的RD团队就跟中国厂商停止合作
: 所以我这个菜鸟一进来就得自己慢慢看code然後debug
: 另外他们还有用到redis跟rabbitMQ也是我在资策会没学到的让我感到有些负荷不来
: 请问这种情况在业界很常见吗? (超菜junior接手别人的code然後没有人能够请教)
我的第一份跟第二份工作都是这个样子,一开始你会像麻痹的人,给你几个建议
1. 掌握启动前的入口 - 大部分程式语言都会有一个从作业系统下命令开始执行
的进入点,可能会载入 config、环境变数、命令参数这些东西,你要先清楚
这些东西的
配置意义是什麽。
2. 掌握启动後的入口 - 如果是 server 或常驻程式,在执行阶段就会有监听行为。
可能来自於 http API、socket、message hook、Redis subscribe ....
你就要找到这些呼叫点的 function,尝试插 log 或 print,追踪一些上下游关系
然後学习
用工具打约定好的通讯格式测试,像 postman 或去 redis 丢 pub
3. 尝试动动手脚 - 掌握入口後你就知道哪边会像大脑发出命令,而你要让程式神经
将命令传达到该去的地方。所以你要先假定一个起点跟终点,比如 rabbitMQ 收到
讯息经过逻辑运算会将结果存进 redis 某个 key 值,那你就去追 function 的
资料流向以及中途被包装成什麽样的资料结构最後又转成什麽样的字串存 redis
4. 起身连续动作 - 独立的资料处理都掌握的差不多後就要看系统 state machine 跟
life cycle 结构的运作模型,自己去新增一些状态、设计一些复杂的脚本看看
程式运作的结果跟你想要的是否相同。配合前面三点,自己去修改 config 丢不同
参数、自己开发一个测试的入口,然後呼叫已知的 function 却在逻辑中判断命令
夹带自定义的 config 参数并达成某些状态条件时要引导至自己另外写的 function
印 log,这样你就有办法
介入原有程式并增加新功能
5. 外部工具先学有用到的部分 - 例如 redis 写资料有很多命令,set, hset, rpush ..
每个的用法和适合的场景不同,照理说科班教育会让你全部学懂避免误用才去实作
但你接手别人程式面对陌生工具时你其实是要反过来根据程式的资料结构去搞清楚
这个指令的用法就好。先别浪费时间知道他们存在 redis 内有何差别,你要看的
只是在程式内从介面定义读回来的资料长什麽样子。除非你很有兴趣,否则训练自己
在 code 内看到对 redis 呼叫的指令能快速从文件中找到用法说明更重要
6. 一知半解下的行车纪录 - 到这阶段差不多你就可以开发新需求,但会有很长一段时间
你觉得自己是在一知半解下做出新功能的。很多时候你是从 try error 发现一条可以
正确执行完的路就走了,然後不知道状态或资料变了会产生 side effect。别慌,在
你不懂的地方加注解,给个编号,然後在自己的文件中写上编号并纪录起来。当 side
effect 发生时,你有机会从文件中判断可能与哪几条有关,去 code 搜寻注解所在
档案有助缩小判断的范围。
7. 不要改坏胜过不要怕改坏 - 有些人会说你就是要放胆去改不要怕坏,从零开发是如此
因为那是你自己写的,掌握度高,又没有曾经稳定运作的印象,坏就坏了再修就好。
但今天你是在很多东西没摸熟不懂的情况下接一个已架构好的系统,
维持运作稳定才不会给自己找加班的麻烦,老板对你的新人印象才会好。
一堆需求进来先挑自己有把握的并告诉 PM 她想先上但你会花超过预期时间的东西
大多专案管理者会同意完成一个不起眼的功能胜过引人注目却花超久时间还搞不定
在稳定中累积经验也累积自信,再慢慢往可能改坏的功能开发
8. 换轮胎 - 过一阵子你可能突然发现好多新功能你其实重复造了轮子,只是当初看不
出来某个 function 跟你写的目的相同。研究对方写法,你会柳暗花明又一村;这
时候你的思考逻辑会渐渐与原作者同化,突然开窍了,看懂很多东西了,这才是你
可以开始不要怕改坏准备对模组重构或大展身手的阶段。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.169.59.75 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1657754514.A.AE1.html
1F:推 WrongHole: 07/14 07:49
2F:推 James781004: 推,这些都是接手不熟悉专案时的基本动作 07/14 07:52
3F:推 holebro: 这是programmer的常识吧 07/14 08:43
4F:推 bmw20075112: 推 07/14 08:44
5F:推 umum29: 能把流程写的出来给推~ 这不是用"常识"就可以解释的 07/14 08:56
6F:推 jasonchris: 推一个好文 07/14 09:14
7F:推 johnwater: 赞 07/14 09:30
8F:→ smartb: 先学会并习惯备份还原所有东西,以後你会感激我 07/14 09:36
9F:推 niceguy: 详细推 07/14 09:45
10F:推 blazers08: 推 07/14 09:56
11F:→ dapple: 好文 07/14 10:06
12F:→ lazarus1121: 先懂业务逻辑再反过来看程式才是比较快的 07/14 10:13
13F:→ lazarus1121: 有些演算法写得很烂或很神,都会让你看不懂 07/14 10:15
14F:推 BBSealion: 推!能把这流程讲清楚让新手可以理解不容易 07/14 10:20
15F:→ peter98: 可以 推 07/14 10:23
16F:推 pan0438: 推一个 07/14 10:28
17F:推 sbbty018: 推推 07/14 10:40
18F:推 vi000246: 先学会git的reset、revert相关指令XD 07/14 10:42
19F:→ vi000246: 我自己是习惯先操作一遍 弄懂业务逻辑 再看DB储存结构 07/14 10:43
20F:→ vi000246: 再开始追程式流程 这样会比较好懂系统架构 07/14 10:43
21F:推 longlyeagle: 专业的令人心疼 07/14 11:03
22F:推 lairx: 你不要那麽专业QQ 07/14 12:05
23F:推 yiche: 推推 07/14 12:54
24F:推 BearWu: 推!! 07/14 12:56
25F:推 bnd0327: 这篇真的把新手上路的过程写得很传神易懂,推 07/14 13:05
26F:推 s678131: 推 07/14 13:33
27F:推 andyPKPK: 推! 07/14 14:35
28F:推 jobintan: 插入log/print重得很重要,有时候就会不知道bug咋发生。 07/14 14:36
29F:推 zxcchiou: 推我收藏了 07/14 14:45
30F:推 zegas: 推 07/14 14:48
31F:推 kiillen: 收藏 07/14 16:01
32F:→ airtsubasa: 第一步学会备份 第二步学会生出测试环境 第三步在测试 07/14 16:42
33F:→ airtsubasa: 环境浪! 07/14 16:42
34F:推 ppc: 人真好 07/14 17:08
35F:推 ya2138: 认真文,推 07/14 17:48
36F:推 yuzukeykusa: 谢谢大大 07/14 18:08
37F:推 sylphis00522: 暗潮中的一盏明灯 07/14 18:36
38F:推 A4P8T6X9: 推 07/14 18:49
39F:推 Nitricacid: 推 07/14 19:04
40F:推 Jungggin: 推详细 很有节奏感的流程 07/14 19:14
41F:推 gino0717: 我都把每一行给cout出来看是啥 07/14 19:23
42F:推 RayBow: 推推 07/14 19:49
43F:推 shieldsky: 觉得实用又清楚 07/14 20:08
44F:推 kkroy: 这一定要推! 有画面耶! 有以前当新人时的既视感~ 07/14 20:40
45F:推 lee457088: 哦哦哦哦哦!!! 07/14 21:17
46F:推 anneju: 推 07/14 22:22
47F:推 Jaster1117: 推 07/14 22:51
48F:推 WulinWorks: 推 07/14 23:28
49F:推 Celinealone: 很受用,感谢~ 07/15 00:01
50F:推 fish0112: 推 07/15 00:14
51F:推 pigcat1315: 认真的经验谈推 07/15 00:34
52F:推 mTwTm: 哇塞 字字珠玑 07/15 00:37
53F:推 nelley: 推佛心文章 07/15 07:39
54F:推 alanKaz: 好文推 07/15 09:20
55F:推 eeyellow: 很宝贵的经验分享 感谢! 07/15 11:09
56F:推 elaine1226: 推 07/15 11:32
57F:推 akito117: 推 07/15 14:26
58F:推 black209: 好人 推 07/15 15:32
59F:推 d8888: 推 07/15 15:39
60F:推 timofEE: 推实用 07/15 15:58
61F:推 adamcha: 能把工程师技能抽象化 绝非等闲之辈 07/15 16:51
62F:推 yoche2000: 推 好文 07/15 17:29
63F:推 TouMingPS: 推 07/15 19:22
64F:推 eeleader: 推好文 07/15 20:07
65F:推 jerrypan1: 用心推 07/15 21:15
66F:推 lance70176: 这教学也太认真 07/16 00:25
67F:推 nayeonmywife: 推 07/16 11:16
68F:推 ckrufus: 推。 07/16 18:31
69F:推 pionxzh: 这篇真的很用心xdd 推一个 07/17 10:23
70F:推 mybluesky: 说的真好,推 07/17 20:42
71F:推 Burwei: 推 07/17 20:58
72F:推 bab7171: 推 07/20 09:08
73F:推 i78524: 推 帮助太大了 07/21 11:09
74F:推 kyukyu: 07/28 15:09
75F:推 crazwade: clg是你的好帮手 QQ 08/03 21:54
76F:推 repeat: 推 08/10 23:00