Odd-e CSD Course Day 5
因為今天是最後一天了,我趕緊在這次結束前提出一些前一晚上想到的問題
1. 在TDD的循環中有重構,那 DB 也會進行重構嗎?
在TDD 的重構的過程,其實也經常會重構資料庫 ,
但重構資料庫這裡有一個很重要的點,是要如何做 DB Migration

from : Odd-e CSD Course
經過討論後,整理出上面這張圖,可以看出。不管在 Test Case 與 Production Class 及 DB 的部分,
都會有重構的動作產生
2. 在 TDD 的過程中,是否就是在做 Domain Driven Design 呢?
TDD 其實也有一點 Domain Driven Design 的味道。 但事實上還是有差別的 , 可以將這個當做你的一項武器,需要的時候就可以直接拿來用 。 並不一定都是 TDD
3. 如果我們都寫了測試,那這樣 QA 這個角色是否就不需要了?
TDD 的方式,其實最後在做測試的 都是已知的東西 。 而未知的東西就可以透過像探索性測試,
或是 Developer 之間互相測試 。 在這種情況下 QA的職責其實並不是這麼的明確或需要了
而且一個良好的程序員是可以成為良好的 QA ,但一個良好的 QA 要來編程就有些困難了
中午吃飯後 Terry 播了一段很讓人深思的影片,提到了 Rule 是如何讓組織變得沒有生產力
有興趣的同學可以看看
Code Review
在這天早上的 Code Review 裡,也重新提到了一個不好的測試是怎樣的,及透過了重構來讓這個測試目的看起來比較明確,此外 Terry 也提醒了,當寫了這種看起來複雜的測試時,應該要回頭想一想。這一個測試實際上要測的是什麼?是不是多了那些多餘的東西

from : Odd-e CSD Course
詳細可參考 https://github.com/nerds-odd-e/Mailer/commit/fe1767d37d02bd1da80a0a1539b252da35119650
Craftsmanship
在這個部分主要在探討軟體工程師的演進
從學徒到工匠最後到大師,而一個好的匠人應該要有那些心態,並且需要學習那些相關的技能
有興趣的同學,可以看看底下的宣言
http://manifesto.softwarecraftsmanship.org/
Stanly 提到他在學咖啡拉花的時候,遇到了瓶頸 ,但某次遇到一位 Mentor 後,透過 Mentor 的指點,讓他在突破那塊碰壁的天花版後,發現學習開始變的容易。
而其中有位教練曾經面試三關都過了,但對方最後告知沒有錄取。
原因是因為現在沒有資深的能帶他半年,對我來說是蠻有趣的方式,而且據說他們軟體開發的品質也非常的好。
最後還可以透過多參加社群聚會,藉由 Coding Dojo 的方式來提昇自已..等等
Retrospective
Sprint Review
這次 Sprint Review 其實是失敗的,整個團隊但很有收獲。
首先夥伴提到了一個,如果 Task 沒有符合當初 DOD 合約裡面的條件,其實是不能算做是 DONE 的應該稱為 It's Work
原因是前幾天我們都佈署的非常順利,但在週五的時候才實際開始做 Jenkins 上的
Acceptance Test ,結果一路 Fail 到 Spring Review 之前 。感覺起來挺可惜的
回顧會議
透過時間軸的方式,從週一到週五 分別利用便利貼 寫下 你喜歡、不喜歡、還好的事項 。 每個人要行投票後,談談這個事項的想法
在這中間我們的夥伴問到開發團隊應該要關注產品風險嗎?
Terry 說,其實在一開始的 product backlog 裡。 產品風險就已經分散了,而且在 PB 裡 只有做的優先順序,沒有所謂的風險順序。
最後畫了一張圖來談說,事實上 PO 會談論的觀注點是那些 (紅框處)

from : Odd-e CSD course
最後要小心一個點 ,不要為了想證明自已是很行的,而從工程師轉變為管理階層 ,通常這樣都不太有好下場,在現在世界變化快速的情況下,保持自已良好的工程思維是很重要的。
此外,在提到經驗時也舉例了,有些人說他有十年的經驗,但實際上可能十年都在做同樣的事,要突破自已要先跨出安逸區
收尾
最後我們團隊每個一人寫下 未來的長期目標 以及下週 Sprint 想做的事
大聲的對著河的對面的未來自已說出來,許下承諾
而我的初期目標其實是想建構 Jenkins 流程到我們的公司裡 ,但 Terry 提醒我 記得在做 Jenkins 時,要將這樣的東西加入版控
因為如果沒有了版控。 如果專案有天不幸要 Rollback 的話,很有可能目前的建構環境是完全不能符合需求的,這時候的 Continue Integration 就失效了
最後問了下 System Thinking 是不是他們目前有在使用, 他們說針對大項目時其實是會用的 。 但小項目幾乎是沒有在使用
最後
這幾天我其實都一直問教練關於我們公司裡的問題 。 事實上,有些問題其實我心裡應該也有答案了,但總是想找些支持。不過透過這樣的問答,有些時間讓我多了一些新想法
比如其中一個是,不要做 Prototype ,而事實上我再仔細問了下,其實是如果要做的話,利用 Backlog 的方式來進行也許會比較好。 我再仔細想了一下,當整個 Prototype 都完整做完了 。其實有點像是 PM 已經把所有的功能都定死了 ,開發只要 follow 就可以了!
此外,最主要的是,了解到一個 Agile 開發團隊要著重的是什麼 ? (事實上就是 Product backlog 的完成)
在經歷了這五天的燒腦後,有些東西其實更明白了。但其實遺憾的是,我覺得我準備的問題其實不夠多。如果能再多一點,相信收獲可以更多。
我也十分推薦這門課程,如果你對 How to be a Agile Developer 十分有興趣,可以在這五天中找到你所想要的答案,也提醒你!這門課程很辛苦,但 Stanly 泡的咖啡十分好喝,可以搭配服用 !!
最後附上一張這五天的一個設計總結,如何透過測試了解當下的設計是否已經達到商業目標
一般來說早期的設計不太會往右側移動,也就是一開始的設計不會常常見到泛化的設計手段
比如: List<T> 、 Interface 、Design Pattern 等等…
當早期發現有種現象出現時,很有可能已經 Over Design 了

from: Odd-e CSD Course
對課程有興趣的同學,可以到以下網站找到相關的資訊
Odd-e CSD Course Day 5的更多相关文章
- [LeetCode] Odd Even Linked List 奇偶链表
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- LeetCode 328. Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- tr:even 与tr:odd
:even匹配所有索引值为偶数的元素,从 0 开始计数查找表格的1.3.5...行(即索引值0.2.4...)<table> <tr><td>Header 1< ...
- Leetcode Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- CSS3伪类选择器:nth-child()(nth-child(odd)/nth-child(even))
nth-child(odd):奇数 nth-child(even):偶数 使用时,如果是精确到数字时,切记是从同一级别的元素开始计算,而不是指定某个类才开始计算. 比如: <li>< ...
- [CareerCup] 5.6 Swap Odd and Even Bits 交换奇偶位
5.6 Write a program to swap odd and even bits in an integer with as few instructions as possible (e. ...
- [Educational Codeforces Round 16]C. Magic Odd Square
[Educational Codeforces Round 16]C. Magic Odd Square 试题描述 Find an n × n matrix with different number ...
- 328. Odd Even Linked List——多利用fake_head
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- 越狱Season 1-Episode 12:Odd Man Out
Season 1-Episode 12:Odd Man Out -Sorry to keep you waiting. 抱歉让你等了半天 -Oh, it's, uh, not a problem. 嗯 ...
随机推荐
- Pandas 错误笔记(持续更新)
更新至2018.5.1 字典生成DataFrame 今天一个字典生成一个DataFrame,采用了以下形式,每一个value都是一个数(不是vector) df = pd.DataFrame({ 'i ...
- springboot mybatis 多数据源配置
首先导入mybatis等包,这里就不多说. 下面是配置多数据源和mybatis,每个数据源对应一套mybatis模板 数据源1: package com.aaaaaaa.config.datasour ...
- 使用Entity Framework Core访问数据库(DB2篇)
前言 上一篇讲了一些EF Core访问Oracle的坑.(感兴趣请移步:使用Entity Framework Core访问数据库(Oracle篇)) 这篇主要讲一下关于EF Core访问DB2的一揽子 ...
- 用Python学分析 - 正态分布
正态分布(Normal Distribution) 1.正态分布是一种连续分布,其函数可以在实线上的任何地方取值. 2.正态分布由两个参数描述:分布的平均值μ和方差σ2 . 3.正态分布的取值可以从负 ...
- Javascript的内存泄漏分析
作为程序员(更高大尚的称谓:研软件研发)的我们,无论是用Javascript,还是.net, java语言,肯定都遇到过内存泄漏的问题.只不过他们都有GC机制来帮助程序员完成内存回收的事情,如果你是C ...
- 程序猿必知必会Linux命令之awk
前言 对于一名专业的程序员来说,Linux相关知识是必须要掌握的,其中对于文本的处理更是我们常见的操作,比如格式化输出我们需要的数据,这些数据可能会来源于文本文件或管道符,或者统计文本里面我们需要的数 ...
- vue安装jquery和配置(不需要在页面引入直接可以使用)
首先在命令行工具上输入 npm install jquery --save-dev 安装完成之后在build文件夹下的webpack.base.conf.js进行配置,在顶部添加:const webp ...
- 面向对象之三个基本特征(javaScript)
1. 前言 2. 封装 3. 继承 4. 多态 5. 总结 1. 前言 了解过面向对象的同学应该都知道,面向对象三个基本特征是:封装.继承.多态,但是对于这三个词具体可能不太了解. 2. 封装 在说封 ...
- Git:三、工作原理
首先,我们对工作区也就是文件夹中的文档进行修改. 然后,把修改并需要存档的文档用add命令放到暂存区,并且可以放很多文档. 最后,一个阶段的工作告一段落,使用commit命令把暂存区的内容一股脑存到G ...
- SQL Server 数据库基于备份文件的【一键还原】
1. 备份与还原的基础说明 我们知道在DBA的日常工作中,SQL Server 数据库的恢复请求偶有发生,可能是用作数据的追踪,可也可能能是数据库的灾难恢复. 数据库常用的备份命令如下: ----完整 ...