2018年9月20日 星期四

How to do a 1on1


## General Tips:

- 提早約時間,盡量按照 schedule ,給對方準備時間
- 1 on 1 前先問券問重點問題
- 多問問題, 不要過早下定論 (judge)
- 結束時要有結論(如果可以有可量化的 task 最好)


## SOP:

0. 提早看問卷的回覆,試著找出癥結點
1. 閒聊,問問生活上的近況 -> Building trust (Emotional Savings Account)
2. 開放性問題,問工作的近況和職涯規劃 -> onboarding
3. 進入 questions cycle

## Questions cycle:

1. Choose a question
2. Ask why
3. Dig deeper by asking more why
4. Receiving & Giving feedback (你覺得我可以怎麼做 & 我覺得你可以怎麼做)
5. Set a do-able action


## How to choose questions

depends on 團隊以及個人狀況,我認為問題分兩大類,個人以及工作

所謂個人問題並不是指日常生活的問題例如「哪間餐廳好吃」之類的,而是脫去工作的外殼,從個人角度出發的問題,例如「3 年後的職涯發展目標」、「最近在什麼事情上感到特別有成就感」之類的,而工作相關問題則是「最近的工作狀態給自己幾分」、「你認為現在團隊有沒有什麼可以改進的地方」這類直接跟工作場景連結再一起的問題。

我認為一個好的 1on1 至少要 4:6,無論是個人 4 或是工作 4 都可以,depends on 每個人的情況,但不可以只偏向其中一種,要有平衡。


https://getlighthouse.com/blog/one-on-one-meeting-questions-great-managers-ask/




2018年9月13日 星期四

Rails schema 到底怎麼保持乾淨


在不能 access production database 的情況下:

1. 怎麼保持 local database schema 是乾淨的
2. 如果髒了,怎麼恢復成乾淨的而且不影響現在 local 有的資料(乾淨的資料恢復,不乾淨的就丟掉)


## Idea 1:

Rails 內建的一些方法

要把 db 弄乾淨最簡單就是

db:drop, db:create, db:schema:load

直接 db:schema:load 的話不會刪掉多的 table

https://stackoverflow.com/questions/10301794/difference-between-rake-dbmigrate-dbreset-and-dbschemaload

問題:

1. db 資料會被清空
2. 必須仰賴 db:seed 保持乾淨並 up to date


## Idea 2:

dump db 出來,在 restore 的時候選擇性的 restore

pg_dump test-docker_development -c > tmp/dirty_dump.sql


問題:

1. schema_migration 的 table 會是錯的,不好改
2. pg_restroe 會暴力的把 table 內的資料結構改掉(如果不一樣),可能會造成 table 跟schema 不符合的問題



## Idea 3:

有一台只跟 production 跑一樣環境的機器,從上面要資料

問題:

1. 若 production 跑 task,這台機器也要跟著跑,不然資料一樣是錯的


## Conclusion

db:seed 檔就是為此而生的,但之所以會沒有人更新的原因是大家並沒有很常需要用到 seed 檔案,例如 deploy 到 staging 測試時 staging 本來就會有測試的舊資料(雖然很髒),所以不需要跑 seed,對 developer 而言也就不會 care 這麼多,反正這次我可以測就好,下次有人有問題再說。

所以問題就變成「要讓 seed 檔案在開發以及測試過程中扮演重要角色,這樣才有可能維護一個乾淨的 local 開發 schema & data」


要做到提升 seed 重要性就要改 Staging 測試的方式,例如讓 staging 用類似 docker container 的技術每次測試的時候都跑一個新的 App 並執行 seed,這樣就會強迫 developer 更新 seed 而且保持開發和測試效率





2018年9月5日 星期三

How to keep forked git repo up to dated?



### 1. Clone your fork:

    git clone git@github.com:YOUR-USERNAME/YOUR-FORKED-REPO.git

### 2. Add remote from original repository in your forked repository:

    cd into/cloned/fork-repo
    git remote add upstream git://github.com/ORIGINAL-DEV-USERNAME/REPO-YOU-FORKED-FROM.git
    git fetch upstream

### 3. Updating your fork from original repo to keep up with their changes:

    git pull upstream master


https://gist.github.com/CristinaSolana/1885435



2018年8月19日 星期日

setup ubuntu with ansible for rails deployment


https://semaphoreci.com/community/tutorials/how-to-deploy-rails-applications-with-ansible-capistrano-and-semaphore


2018年8月13日 星期一

JSON API 什麼時候用 included 什麼時候用 relationships


resource 有可能在兩邊都出現,relationships 出現的原因是給 API user 知道有哪些相關連資料,但不一定要給 data details。而 included 則是把關聯資料的 details 也一次回傳。

https://stackoverflow.com/questions/35991897/json-api-questions-included-vs-relationships


2018年8月2日 星期四

虛擬價值與證券化


Ex:

公司送禮


月餅廠商印 100 元的月餅卷賣 65 給經銷商
經銷商賣 80 給公司讓公司送員工
員工用 40 把月餅卷賣給票販子
月餅廠商用 50 再跟票販子收購月餅券



對員工而言的情感(虛擬)價值: 60
員工的實體價值:40
月餅廠商賺 15
票販子賺 10


單純情感(虛擬)價值利用證券化的方式來交換,不需要生產任何月餅。

retrospective meeting

Some good handy tips

https://www.atlassian.com/team-playbook/plays/retrospective