A word of warning on your XPath, it is a little brittle and tied directly to the fact that the developers are using AngularJS. The ng-click attribute is specific to AngularJS. If they change the library they are using your tests will break. Even if they change the name of the AngularJS method from goReady() to something else it will break your tests. There is no business reason they cannot refactor the code and change the name of the method.
If you are going to use XPath then you might want to use something the end user will see. It is, hopefully, less likely the text "Ready" will change. So I would use:
"//span[text()='Ready']/.."
This will find the span with the text "Ready" then it will go up one level to the button element. Even better would be if you can have the developers add attributes to the things you want to access, e.g.
<button class="md-button md-ink-ripple" ng-transclude="" type="button" ng-click="goReady()" role="menuitem" aria-label="check_circleReady" qa-data="The Ready button that allows the user to submit they are ready">
You could even make the qa-data attribute even more descriptive. The idea is that when you are reading your test script you will see something like:
WebElement button = driver.findElement(By.cssSelector("[@qa-data='The Ready button that allows the user to submit they are ready']"));
Now if the developer makes massive changes to the HTML structure a year from now, you will still know what the purpose of this button was.