Wednesday, 18 November 2015
Recommended Reading
These are the best books I have read so far that I think every software developer should read. Every one of them has really helped me to understand and improve the way I work.
Tuesday, 17 November 2015
Git Aliases
Git Aliases
You can add extra git commands in the command line to make your life easier using git aliasif you type git config --global -e you will be able to edit these.
they should go inside the [alias] section (add one if it's not there)
Basic Commands
These commands are just simple aliases for anything that I use a lot, mainly because I have to type less to use them.
s = status
See the status of the repositoryc = commit
Commit changes to the local repositorycm = commit -m
Commit with a messageExample:
git cm "Updated some code stuff"
aa = add -A
Stages all the changes in the workspace.co = checkout
Checkout a branch or commit.Example:
git co master
Viewing History
lga = log --graph --oneline --all --decorate
Shows the history for the repository in a nice way.
lgab = log --graph --oneline --decorate
Shows the history for the current branch in a nice way.Pushing & Pulling
plr = pull --rebase
pull but rebase instead of merge, find this useful when working on a branch that have others working in it to avoid merge commits. Makes the history much cleaner. See the internet for arguments about this.
pushup = "!git push --set-upstream origin \"$(git rev-parse --abbrev-ref HEAD)\""
Push a local branch to the origin remote, does what it says on the tin. Use this lots when working within a feature branch/pull request workflow.Stash & Reset
Most of these I found on Phil Haacks blogwip = !git add -A && git commit -m 'WIP'
Work in progress commit, commits anything to the current branch so it can be reverted later. Useful if you need to change what you are working on. You could use git stash but I prefer having a proper commit.
load = reset HEAD~1 --mixed
Used to undo the commit that was done with the wip command and put the changes in the working directory.wipe = !git add -A && git commit -qm 'WIPE SAVEPOINT' && git reset HEAD~1 --hard
Really like this one, use it instead of "git reset --hard" to clear the current working directory. Much better because it still commits the changes before wiping so they will remain in your local repository until they are garbage collected.References
http://stackoverflow.com/questions/804115/when-do-you-use-git-rebase-instead-of-git-mergehttp://haacked.com/archive/2014/07/28/github-flow-aliases/
Tuesday, 10 November 2015
Running a Release Retrospective
We just shipped the first release of a project that I have been working on out to customers and it was decided it would be a good time to run a release retrospective with all of the teams involved.
This was shorter than hoped but it worked well to help frame the period we were talking about.
Read out the prime directive and explained that the meeting is supposed to be a positive thing looking at what we can do better and improve on rather than blame.
The discussion was very interesting though some of the topics were very developer focused, it was suggested that we should have a developer only meeting first next time to avoid bringing the other team members to boredom.
The hardest part of these things always seems the be actually getting something practical out of as many items as possible. To try to help we assigned owners to each item and I will try to chase the owners to make sure progress is made over the coming weeks.
While this is probably not the best way to judge the release it was interesting to see the information that came in. In future I would suggest maybe using a more simple system (Well, OK, Poor) or something along those lines.
Format of the session
3 hours in the afternoon with roughly 30 people attending.Introduction
Some senior managers came in and just say a few words to kick off the meeting in a positive way. Sometimes retrospectives can turn quite negative so this helped make the point that the release was a success and we are there to look for improvements in the coming versions.Discussion of outcomes
Discussion of the expected outcomes of the meeting, this was a list of different items with actions we are going to take and owners for those actions. The items were:
- Recommendations (What we did well)
- Knowledge (What we learnt)
- Mysteries (Things that need investigation)
- WTF's (Things that we can improve on)
Next time I would rename recommendations to something else as they came out as recommended things we can do better rather that things we did well that we recommend we keep doing and pass on.
Energizer
We tried energizer for this meeting as described in parts of a retrospective. After some reading we decided to try the Candy Love Energizer (whats better to get people talking than chocolate?).
This worked well and got everyone being talkative, would really recommend this energizer (think its a bit more interesting as most people haven't done it before).
Story of the project
This was a brief presentation with some key dates and statistics of the project, to help focus people on what we were going to be discussing the following breakout section.This was shorter than hoped but it worked well to help frame the period we were talking about.
Retrospective Prime Directive
"Regardless of what we discover, we understand and truly believe that everyone did the best job they could, given what they knew at the time, their skills and abilities, the resources available, and the situation at hand."Read out the prime directive and explained that the meeting is supposed to be a positive thing looking at what we can do better and improve on rather than blame.
Breakout
We broke up in to 4 teams each with flip board paper and pens with each team to focus on a different area. Each team should identify Recommendations, Knowledge, Mysteries and WTF's with possible actions.Quality & QA
Looking at our quality management & testing
Process
This is essentially the story of a story, from customer to shipped.
Planning & Release
Looking at how the project was planned and released.
Work & Environment
How the teams interact and work together, inside and outside of the team. as well as generally at working within the company & skill sharing.
Discussion
Each team presents their findings and we discuss as a whole group the proposed actions.The discussion was very interesting though some of the topics were very developer focused, it was suggested that we should have a developer only meeting first next time to avoid bringing the other team members to boredom.
Actions & Owners
Review the actions and assign owners.The hardest part of these things always seems the be actually getting something practical out of as many items as possible. To try to help we assigned owners to each item and I will try to chase the owners to make sure progress is made over the coming weeks.
Release Success
Each person gets a piece of paper and writes a 1-10 on it to say how well they thought it went. This provides an anonymous way to gather information on how well everyone who worked on the release believes it has gone.While this is probably not the best way to judge the release it was interesting to see the information that came in. In future I would suggest maybe using a more simple system (Well, OK, Poor) or something along those lines.
Conclusion
The session went pretty well most of the feedback was very positive. We identified several points and actions that we will be looking at over the period of the next release.
I would highly recommend playing around with the different subjects to suit the number of people you have joining in and areas you want to cover. Hopefully when we do another release retrospective we can try another set and compare the results.
http://blog.crisp.se/2013/01/22/henrikkniberg/how-to-run-a-big-retrospectives
http://joakimsunden.com/2013/01/running-big-retrospectives-at-spotify/
http://www.retrospectives.com/pages/retroPrimeDirective.html
https://www.thoughtworks.com/insights/blog/7-step-agenda-effective-retrospective
I would highly recommend playing around with the different subjects to suit the number of people you have joining in and areas you want to cover. Hopefully when we do another release retrospective we can try another set and compare the results.
References
http://www.funretrospectives.com/candy-love/http://blog.crisp.se/2013/01/22/henrikkniberg/how-to-run-a-big-retrospectives
http://joakimsunden.com/2013/01/running-big-retrospectives-at-spotify/
http://www.retrospectives.com/pages/retroPrimeDirective.html
https://www.thoughtworks.com/insights/blog/7-step-agenda-effective-retrospective
Subscribe to:
Posts (Atom)