作者howardgj94 (飘飘渺渺所为谁)
看板Soft_Job
标题Fw: [闲聊] CURD开发时间推估
时间Fri Jul 12 12:31:27 2019
※ [本文转录自 Programming 看板 #1TA0j_Vb ]
作者: howardgj94 (飘飘渺渺所为谁) 看板: Programming
标题: [闲聊] CURD开发时间推估
时间: Fri Jul 12 12:24:29 2019
大家好,
本人算算,毕业後踏入职场也迈入第二年了,
回想大学专题做影音系统,负责後台资料处理(HADOOP)的部份,
研究所做资料科学的研究,
进入职场後,从资料科学转做系统开发。
因为在财团法人,只要系统出的来,对於开发环境有很大的自由度,
所以每次开发时,都会想办法去接触新的框架跟软工架构。
(财团法人的缺点,只要看成果,但希望在当兵这三年,可以把这缺点化成优势,
於是在这一年多来,只要接臅新的案子,就想多学一点不同架构)
这一年来,陆续碰过原生的php开发、cordova、
学写phpunit测试、laravel MVC架构、
vue与laravel的集成架构、java spring MVC架构、junit测试、
react + redux + react-route前端架构等。
因为研究所boss是软工专常的关系,我踏入职场後,对软体架构的要求比较高,
例如开发时尽量遵守TDD开发原则、repository模式将资料库逻辑分开、资料库使用
orm 或 entity framework,而不直接操作sql语句、又或者是前端使用redux模式
将action 跟 view尽量抽离等。
老实说,这些东西以我目前看到,至少在唉唉唉里面,是不太重视这些东西的。
最近在开发新的案子,资料库架构设计完,开始投入app撰写。写了一阵子,被一个
同事说,「觉得你开发速度太慢了,这东西我xx(时间)就开发完了,不须要这麽久。
於是我根据git记录开始追溯我的开发时间,
发现以普通不太过复杂的资料库crud撰写来看,
从unit test撰写、repository设计、mvc test撰写,controller设计、
到前端画面设计、串连api,debug,这整个动作做完
平均大概要花费一到两个工作天。
以成效来看,似乎真的不是很有效率。
当然这次使用redux react跟java spring都算新东西,要算学习成本进去,
但以我git纪录来看,一个crud前後台完成,大约就是一到两个工作天。
好奇大家在开发crud时,大概会花多久时间呢?
现在有自动生成crud的工具,但似乎弹性不够大,也不够好用,所以我没接触。
如果能把crud时间缩短,整个开发时程可以缩很多。
另外,tdd drive的开发模式,在目前台湾软体业界流行吗,财团法人有点太学校了,感
觉接触的不一定是业界目前的流行。如果可以的话,未来希望自己还能碰一些CI/CD的工
具。
另外题外话,tdd drive的好处是,你必须在写程式前就先把架构想好,而且为了做到
unit test,程式必须解耦合,也就是说,如果测试写的好,基本上设计出来的程式会非
常的符合SOLID原则,当然这是最理想的状况。
刚开始摸redux时,并没有想到给前台也写测试,当时看到redux官方给的todo范例时就非
常不解,为什麽要把画面分成component跟container。後来开始思考如何写测试时才发现
,分开画面跟动作的原因,是为了能够撰写unit test,另外这样写才能让前端的action
跟view能够真正的分离。
不过目前我的前端是还没有撰写test,前端对我来说,光要把画面调好、设计画面就花
太多功了,现在如果还要加上test的话,估计crud就要花两个工作天或以上了.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.92.18.246 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Programming/M.1562905471.A.7E5.html
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: howardgj94 (140.92.18.246 台湾), 07/12/2019 12:31:27
1F:→ max241: 他快只考虑MVP吧 要写测试就是会拉长开发时间 07/12 12:43
2F:→ max241: 有测试 长时间下来是好的 但如果专案很快就结束就...呵呵 07/12 12:46
3F:→ max241: 看性质考虑要写成可不可测,好不好维护等 但感觉你是一条龙 07/12 12:49
4F:→ howardgj94: 我的案子都是个人或双人案子,我的确以前坚持用tdd模 07/12 13:13
5F:→ howardgj94: 式一条龙,最近工具会多了才开始思考时间成本的问题 07/12 13:13
6F:推 abccbaandy: 外面87%都是功能能动就好,test都没写了还TDD XDD 07/12 13:17
7F:推 expup: 现实是你要这样干就去外商搞大部份多的是随便弄求过就好 07/12 13:53
8F:推 aa155495: 看是长期产品,还是 poc 而已? 07/12 14:21
9F:→ aa155495: 概念验证的案子,用做长期产品的思维太浪费时间 07/12 14:22
10F:→ allenxxx: 外面程式还没写到一半,需求就不知调过几次了,TDD是啥? 07/12 14:22
11F:推 neo5277: III不同部门差很多的样子 07/12 15:59
12F:推 b81314: 接案建议不要用TDD模式去开发 根本不可能如你所意.. 07/12 17:04
13F:推 doranako: 如果主管不懂tdd 就会觉得你做事慢,然後就黑掉 07/12 17:39
14F:→ Nonegrame: 肯花时间写测试就要痛哭流涕了 07/12 18:22
15F:推 sharku: 坚持下去 你是对的 07/12 18:31
16F:→ alog: 先学会分辨你的同事雷不雷,不然意见也是听一半就好 他所谓 07/12 18:51
17F:→ alog: 的快,要是留下一堆技术债你只是不知道 07/12 18:51
18F:→ howardgj94: 同事要说的话,从大学开始开发系统,到现在有五年多的 07/12 20:06
19F:→ howardgj94: 开发经验,研究所帮老师写公司系统.我自己评价,他可 07/12 20:06
20F:→ howardgj94: 以以很短的时间完成任务,品质也还ok,风格有自己一套 07/12 20:06
21F:→ howardgj94: ,但不着重软工架构 07/12 20:06
22F:→ howardgj94: 大概就mvp写很好的人吧,毕竟他们boss跟在唉唉唉开发 07/12 20:08
23F:→ howardgj94: 的系统都算概念系统,无法判断真实上线的维护问题 07/12 20:08
24F:推 lukatw: 时程及专案周期和专案性质都是重要考量因素,如果接案性质 07/12 22:20
25F:→ lukatw: 的,通常专案周期比较短,而需求变动速度可能也很快,连测 07/12 22:20
26F:→ lukatw: 试都不写了别说TDD。後来有长期专案,但专案初期在时程压 07/12 22:20
27F:→ lukatw: 力下完成MVP,测试码就变成後补,有些地方写的很臭XD,目 07/12 22:20
28F:→ lukatw: 前专案算比较稳定,所以开始补上测试+重构程式 07/12 22:20
29F:→ landlord: 以一个过来人的经验跟你分享:让自己作到TDD开发 07/13 00:42
30F:→ landlord: 比他们不写测试还快,他们就会闭嘴了。 07/13 00:42
31F:→ landlord: 老板向来不在乎大家是不是TDD,只要你能又快、又好 07/13 00:43
33F:→ landlord: 3人的mob-programming, TDD, 三地开发, agile/scrum 07/13 00:45
34F:→ landlord: 三天进度over deliver一个sprint的进度 07/13 00:46
35F:→ landlord: 老板跟PO显得非常满意,更别说我们顺手把旧的架构整理好 07/13 00:46
36F:推 abccbaandy: 楼上大概没待过那种,需求早上讲完下午就变了一套,然 07/13 01:57
37F:→ abccbaandy: 後隔天问你写得如何的公司... 07/13 01:57
38F:→ landlord: 那就让你自己拥有选择公司的能力,这是最直接的解决方式 07/13 02:10
39F:→ landlord: 不过谁都会碰到时程问题,就看你怎麽解决时程的问题 07/13 02:11
40F:推 abccbaandy: 果然还是逃吗XD 我只能说台湾有很大一部分公司都推不 07/13 02:17
41F:→ abccbaandy: 了你说的东西,就算叫TDD之父来也一样,这就是现实 07/13 02:18
42F:→ landlord: 逃?我只是觉得待在一个环境里面自怨自艾,很浪费人生 07/13 02:19
43F:→ landlord: 可能台湾其他部份的公司都愿意找我去帮忙吧 :P 07/13 02:20
44F:→ landlord: 我倒是觉得先不要管推不推,先看自己做不做得到比较实际 07/13 02:20
45F:推 abccbaandy: 也是啦,自己先学会,等哪天有机会就能派上用场了 07/13 02:25
46F:→ landlord: 总会有需要你能力的地方,所以不要原地踏步被糟蹋了 07/13 02:27
47F:推 abccbaandy: 倒是好奇台湾哪些公司真的有导这些东西的阿? 07/13 02:28
48F:→ abccbaandy: 每次面试都讲得很完整,进去各种台式敏捷+ 0 test 07/13 02:29
49F:→ landlord: 在台湾的外商算吗?XD 不过我都不推荐大家「导」TDD 07/13 02:29
50F:→ landlord: 其实老板真的不在乎你怎麽写,他们只要结果又快又好 07/13 02:31
51F:→ landlord: 但如果你们作到又快又好,而需要他们一些support, 他们 07/13 02:31
52F:→ landlord: 会很乐意提供你协助的,只要你能作到他们要的 07/13 02:31
53F:→ landlord: 现在的钛坦、Line里面的工法素质都很不错 07/13 02:32
54F:→ landlord: QA/QE/SDET 比较完整的,就趋势跟 KKBOX 07/13 02:33
55F:→ landlord: 我之前在yahoo的几个团队也做得挺扎实的 07/13 02:33
56F:→ landlord: 如果我有能力,老板愿意相信我,他们没有测试其实挺好的 07/13 02:34
57F:→ landlord: 这不就是贡献自我价值的舞台吗? 07/13 02:34
58F:推 alog: 导 test 看老板/技术主管本身有没有被雷包痛到过,痛过几次 07/13 02:39
59F:→ alog: 然後又是执行重要专案/长期维护产品就会导入了 07/13 02:39
60F:→ alog: 我长期维护EC平台,第一年後端不是我写,同事虽然资深但就是 07/13 02:40
61F:→ alog: 不肯导入任一 test 去验证他的程式没问题 07/13 02:40
62F:→ alog: 结果花了一年的时间在那里修各种问题修到差点还要赔钱 07/13 02:41
63F:推 abccbaandy: 看起来不是大公司就是外商呢... 07/13 02:41
64F:→ alog: 次年我接手专案的後端去写了v2 因为该语言/框架其实我不熟 07/13 02:42
65F:→ alog: 但是开发经验有 而且该框架的测试环境算很成熟 07/13 02:42
66F:→ alog: 我花了大概半年多的时间整个把全部的功能重写 07/13 02:43
67F:→ alog: 客户也愿意付钱等 因为他们被雷到怕了 07/13 02:43
68F:→ alog: 现在每次加工能或是做前端什麽的 完全不用担心会炸掉还是出 07/13 02:44
69F:→ alog: 现例外状况的问题 07/13 02:44
70F:→ alog: 甚至连其他第三方系统没事偷改规格或调整都可以测的到 07/13 02:45
71F:→ alog: 那种过程就是真的只有一个字能形容 就是他妈的很爽 不用没 07/13 02:46
72F:→ alog: 把握说程式部署到好几台主机後可能有问题之类的 07/13 02:46
73F:→ alog: 像我自己会在前端的程式利用GA用事件跟传送例外错误讯息,然 07/13 02:47
74F:→ alog: 後用自订报表去汇整这些资料 07/13 02:47
75F:推 abccbaandy: 同感,这种真的是被炸过才会重视,甚至还会帮你排时间 07/13 02:48
76F:→ alog: 当你一个重大新介面的改版上线後,一整个礼拜都没有错误时 07/13 02:48
77F:→ alog: 那种感觉真的很好 07/13 02:48
78F:→ abccbaandy: "开发"这块XD 07/13 02:48
79F:→ alog: 为什麽 因为我那个平台一天的营业额很高 你炸掉还是什麽就是 07/13 02:49
80F:→ alog: 影响到人家的公司 07/13 02:49
81F:→ alog: 我一个朋友也是做EC的 不过他也是有做营运 07/13 02:49
82F:→ alog: 某一天动了资料库 结果不慎搞毁资料 花了不少时间救回 虽然 07/13 02:50
83F:→ alog: 说只挂了一点时间 但喷了十几万去赔客户 07/13 02:50
84F:→ alog: 我只能说 真的有些东西值得细心去处理 但前提是 你待地方知 07/13 02:51
85F:→ alog: 道那个价值 07/13 02:51
86F:→ alog: 是说 其实写测试也不会太慢 只是一开始会卡比较久这麽设计 07/13 02:54
87F:→ alog: 做久了其实很多东西也是差不多那样 07/13 02:54
88F:→ alog: 因为你不写 你手动反覆调适也累 我觉得要多利用工具做自动 07/13 02:55
89F:→ alog: 化来省时间 07/13 02:55
90F:嘘 cactus1021: 错字好多 07/13 21:10
91F:推 ek0519: 可以玩玩 laravel nova 07/15 18:47
92F:推 Csongs: 单表crud 一小时吧 07/19 08:46
93F:→ Csongs: 重点是背後逻辑要清楚 07/19 08:46
94F:→ Csongs: 一小时包含测试code 07/19 08:47