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. 嗯 ...
随机推荐
- Django-ORM增删改查
ORM对单表进行增删改查 一,增加记录 #第一种方式 b=Book(name="Linux",price=66,author="kelvin",pub_date ...
- 改造MIP获得搜索青睐,轻松完成SEO
搜索引擎目标及页面排序方法 搜索引擎作为互联网流量的入口,承担着流量分发的职责.但排序成千上万的网页,决定哪些网页在第一页,是由网页本身的用户体验决定的.权重算法会从内容优质性,广告多少,加载速度等多 ...
- c# 基于文件系统实现的队列处理类
现实业务中经常遇到需要队列处理的问题. 问题场景: 客户端记录设备运行数据,传输给服务器.在传输中可能存在延迟或中断情况.当中断时,系统传输数据可能因为无法传输或电脑重启,会导致服务器数据记录不连续. ...
- 基于Raft深度优化,腾讯云金融级消息队列CMQ高可靠算法详解
背景介绍 分布式系统是指一组独立的计算机,通过网络协同工作的系统,客户端看来就如同单台机器在工作.随着互联网时代数据规模的爆发式增长,传统的单机系统在性能和可用性上已经无法胜任,分布式系统具有扩展性强 ...
- 学习笔记02(随便看看mybatis源码)
两个很有名的持久层hibernate和mybatis应该很熟悉不过了,两者最大相同点是底层都是对jdbc的封装,最大的不同点是前者是自动生成sql语句,后者是需要我们在映射文件中写出sql. 其实从以 ...
- Fiddler 接口测试(Composer)的使用方法及并发测试
下载地址:https://www.telerik.com/download/fiddler 一.Composer简介 右侧Composer区域,是测试接口的界面: 相关说明: 1.请求方式:点开可以勾 ...
- 《ASP.NET MVC 5 高级编程》学习笔记
前言: 记得当初培训的时候,学习的还是ASP.NET,现在回想一下,图片水印.统计人数.过滤器....HttpHandler是多么的经典! 不过后来接触到了MVC,便立马爱上了它.Model-View ...
- Redis内存模型(2):存储细节
1. 概述 先看一下执行set hellow world时,所涉及的数据模型: (1)dictEntry:Redis是Key-Value数据库,因此对每个键值对都会有一个dictEntry,里面存储了 ...
- #Java学习之路——基础阶段二(第二篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- 5. VIM 系列 - 文件管理
目录 目录树 文件检索 ctrlp.vim fzf.vim 目录树 安装 nerdtree.vim 插件 Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeTo ...