Earlier in the week I did a poll on topics and the number 1 pick by an overwhelming margin (beyond Sad Ass Salad) was "Business Domain vs Functional Domain in Performance Evaluations."
Sunday, January 28, 2024
Sunday, January 21, 2024
Project Success does not equate to Individual Success in Performance Goals
Successfully support the <milestone> for the <project name>
Many managers use this boilerplate performance goal for just about any employee. It's lazy. It reflects nothing with regards to the expectations of the employee, nor does it reflect at all, in what way would one grow in their capabilities.
Why is it not great to tie project success to performance goals.
Why is project success commonly tied to performance goals
- If a project succeeds, the company would make more money, therefore, there's more money in the pool to pay for raises, right?
- A manager's thinking: if a project succeeds, then I succeed, and that means the individuals of the team succeeds right?
What should performance goals include instead?
Activity and contribution to a project should be an EXAMPLE of how you want them to be performing.
Focusing on Software Developers:
- Three Basics
- Ability to tackle complex challenges.
- Ability to interact with their colleagues in the form of clean code, communication in PRs, and overall communication with the team via chats, email, IRL
- Ability to interact with stakeholders in the form of requirements feedback for clarification and further getting feedback on software behavior.
- The thing that I care about the most
- How accountable are they in production and are they able to observe the behavior of their code out in the wild?
If you really want to talk about it in the context of a project:
- How did they contribute to projects last year, and is there any difference in contribution that htey should be doing in future projects? Spell it out.
- Are these projects more or less complex that last year's projects? How does completing these projects demonstrate their skill set? Explain how this project is a more significant challenge that will test capabilities that haven't been tested before.
Bottom Line: Goals should not be effectively "yeah do what you did last year but more". You need to give them explicit skills to level up and a clear example of how you plan to observe it. for some managers, that is solely based on the success of a project, and that's a shitty manager.
Soapbox Moment
Tuesday, January 02, 2024
Support you should expect from HR and your Org in prepping to give a Performance Eval
So previously we discussed the importance of being well prepared for your performance evaluation. However, every single different company is different both from an HR perspective and an Organizational perspective. However, they should all be able to provide you some foundational resources in
- being able to clearly explain why they are getting the performance scores they're getting
- understanding how your eval may impact their salary next year
- understanding how your eval may impact their odds of a promotion next year
What HR Should Provide
Your direct report's job title (and tier if there is one) as well as their salary and the standard salary band for that title.
Your direct report's previous performance eval, if available
Each Performance Category
From your org (and your seniors)
How each Performance Category applies to your direct report's job function
This can provide you examples where to look or what to ask about from peers regarding their work.
- Aptitude => Are they entrusted with more complex challenges than others? => do they ever get assigned an 8 point story to oversee
- Communication => Do you encounter surprises from them? => system behavior that a product owner did not anticipate and it's already in production?
- Versatility / Team Player => do they shy away from duties that may not be their primary? => are they an asshat when they're on-call?
For each performance category, a discussion of situational example or a behavioral example. Sometimes it's easy to hone in on a specific situation where they may have gone the extra mile or have fallen short, but it's important to make the distinction between what may have happened at a particular instance vs an established behavioral pattern that they have exhibited (and did they improve on it when given feedback about it).
Guidance on for gathering feedback if you're not a hands-on manager (because that's how the org structure is)
My HR nor my Org has this
Monday, January 01, 2024
Solidifying Trust when giving Performance Evaluations
The performance evaluation is the pivotal point of the power dynamic between a manager and a direct report.
In most cases, this is when a manager is making a final decision to move someone to a Performance Improvement Plan or make a recommendation for a promotion. In many cases, direct reports are using this to gauge whether they want to move to another job within the company or apply for a job elsewhere.
The biggest takeaway for this post is to understand why it is extremely important to be blunt in your feedback at this important confluence of expectations, impressions, and receipts.
A quick look at motivation
Because this is my first people management post we're going to do a quick primer on motivation and the basic structure to a Performance Evaluation.
There can be 3 categories in an employee's motivation:
- Compensation
- Authority / Respect
- The work, itself (interesting problem to solve, they like the outcomes the business is driving)
We're mainly going to focus on the top two, as those are the pieces that a lot of people generally care about, especially earlier on in their careers. In the performance eval, you need to be able to answer
- Am I going to make more money next year?
- Will I have more authority next year?
- How can I make MORE money the following year?
- How can I have MORE authority next year?
You can look at a performance eval in three parts.
- Explain to them what you, as their manager, can do to help them make more money or get more authority next year
- Review of their performance and how does that impact your decisions.
- What should they be improving upon so that you'd pull the levers at your disposal harder for them?
- Many organizations have goal planning and performance evals as two separate exercises, sometimes months in between. However,
Many managers just go through the performance metrics and that's it. Just because you filled out the space allotted doesn't mean your work is done.
Why they are falling short... of a PROMOTION
9 times out of 10 you will not be offering someone an above average raise or a recommendation for a promotion, and this is where you need to make sure that your understanding of their efforts throughout the year is crystal clear. You need to have the receipts for both situational occurrences where they could have improved and, more importantly, behavioral / skill set patterns that may be preventing them from getting as good an evaluation as they would like.
Why is it so important to lay it all out
Everything boils down to trust. The performance eval is the pivotal spot for a manager to make or break the trust that you've been building all year. Your direct report should have a clear understanding about the process, what is in your control, and how their actions drive compensation and career track. The review itself is more reflection of your understanding of their contributions, their impact, and their skillset that allows them to help the team become successful.
Goals set next year are not only a commitment from your direct report on achieving certain goals, but also a commitment from you as a manager that you will ensure that they have the opportunities to achieving them. This is the key mutual relationship between you two that need to be established for both of you and the team to succeed.
It's definitely a balance
All of this is a balance of trust between you and your direct report that if they accomplish what you set for them, you will help them achieve more of what motivates them.
In the end, what you have to be is honest and demonstrate that their work and effort hasn't gone unnoticed. The amount of effort that you put into these reviews is the clearest artifact of your commitment to a direct report's success. If they ever sense that it is half assed, they're on their way out.
Man, it's been nearly 10 years.
Alright going to start writing up stuff again so what's happened.
Since Grubhub I have been at Paypal where I was absolutely not a good match for the Braintree nor Paypal culture.
I joined Chowbus an early employee to head their operations and helped them expand up to a Series B round.
I'm now CTO at Bucket Listers where we're 1 year into operating a ticketing marketplace to promote cool things that are happening in your town.
All in all I've gotten to really flex on my convictions, some to great success and others to not so great success. I figure I have about 5 years left in my career so let's see where this all goes.
Monday, January 19, 2015
Logstash Examples with Data Generators
It's commonly used in conjunction with Elasticsearch, a Lucene based search service, and Kibana, a dashboard UI for Elasticsearch. You can easily consider this as a "Splunk without super awesome ad hoc query capabilities" but the software itself is FREE so there's that.
The documentation for Logstash is pretty straightfoward, but I thought it would be nice to have some hard examples to work off of that involved the whole ELK stack:
Right now it just has two examples: file and log4j.
File:
- Write to a file
- Logstash monitors the specific file and does some grokking before passing it to Elasticsearch
- Load the provided kibana dashboard.
- Spew log4j stuff out with SocketAppender
- Set up Logstash to monitor a port for log4j messages and grok before passing it to Elasticsearch
- load the provided Kibana dashboard
Saturday, January 10, 2015
IT'S A TRAP
*pause*
Wife: "... IT'S A TRAP! No, seriously. You have to answer."
Tuesday, December 23, 2014
Read the Freaking Documentation to Couchbase!
Sunday, December 07, 2014
Searching Pull Requests in Stash - You Don't
Also, it's a super quick way to see when a given feature was merged into a particular branch like Master.
With that said, chances are, you're using JIRA alongside Stash. Let's be honest, the only reason to use Stash over other solutions is for its JIRA integrations. If your issues are directly associated with your Pull Requests, you should then be able to easily search your JIRA issues using its robust search features.
![]() |
| JIRA Development Panel |
Tuesday, December 02, 2014
JIRA - Old School Greenhopper and Milestone Management with Versions

First, you'd establish Versions in your Project that represented different Milestones with dates associated with them. From there, you'd have your actual release Versions that are directly associated with the releases that you're cutting.
With the Classic Planning Board, using the SubVersion feature, you can readily see which Release versions that build up to Milestones that build up to broader Milestones. You'd associate stories to your release versions and from there, you can track the progress of your Parent Milestone versions.So anyway, the biggest limitation to this approach are the following:
- FixVersion in JIRA suddenly becomes an overloaded Term.
- This method is limited for a Single JIRA Project.
Tracking Multiple Sprint Teams with a Common Goal
So one thing I feel that people using JIRA Agile should get used to is the notion of building and breaking down Agile boards for targeted efforts to allow them to track something very specific and eventually just get rid of the board when they're done with it.
Here's a query:
"Epic Link" in (EPIC-1, EPIC-2, EPIC-3, EPIC-4) OR issue in (EPIC-1, EPIC-2, EPIC-3, EPIC-4) OR labels = myEffortLabel ORDER BY Rank ASC
What this query essentially means is "Give me these Epics, give me the Issues in these Epics, and give me any issue that I happen to label it.
This gives you a quick and hopefully, targeted view of a set of milestones in the form of Epics that you and other teams are driving towards. My personal observation is that the majority of teams pretty much ignore epics and epic links anyway, so establishing this linkage to the actual stories that they are working on should have minimal impact.
At the very least, you can keep an eye on the general progress of a concerted effort.
Just remember to clean up after yourself and delete the agile board when it's all said and done!
Friday, July 11, 2014
New Job, New City... so Let's Talk St. Louis
About 3 months, apparently.
BTW, Google "days since april 17, 2014" and you get to a nifty app that tells you how many days.
So anyway, I don't usually talk about St. Louis on here as that's what's Yelp's been for. Aside from our friends in the area, I'd like to take some time to point out some things that I enjoyed in my 10 years there.
La Pizza / Protzel's Deli / Bob's Seafood
Regional Convenience
Hometown Pride
| View from the top of the City Museum http://ruff-ranch.blogspot.com/2009/07/city-museum.html |
Sunday, April 27, 2014
Microservices! Rorschach Reactions.
The context of this article is kept at a more technical execution level. I'd like to bring up some thoughts on the requirements and communication that can be involved. In reality, this is more of a Rorschach reaction to the pretty awesome images that they had on their article.
Generally, three things a software development team thinks about are:
- What is my Deliverable?
- How is it going to change over time? What are my requirements?
- Who are impacted of my changes? How do I coordinate with them?
- What deliverables need to be changed for my needs? How do I get those changes to happen?
- What microservices need to be changed for my needs? How do I get those changes to happen?
In addition, with that many more deliverables in the form of microservices, ensuring that the consumers of your deliverables are prepared for the changes you're making.
It all boils down to how well your organization can communicate across your teams. For a small organization, physically talking or chatting on email or a chat service works out. However, with large geographically distributed teams with potentially different cultures and whatnot, this gets unwieldly very quickly.
This post is getting long so I'm going to cut it here. I'm not just talking about microservices, I'm talking about any organization that has multiple internal deliverables across teams. How can a large geographically distributed organization, consisting of multiple teams, meet customer expectations while ensuring smooth operation from build, to test, to deploy? I'll run through some thoughts on the challenges and solutions that may fit your given culture.
Saturday, April 19, 2014
JIRA Shenanigans - @mention Multiple People
| Ripped off of Atlassian Blog |
Enter an open request in JIRA to @mention a group. This makes sense in that JIRA allows one to configure groups of profiles to be identified in various permissions, mapped to project profiles, and notifications. However, there isn't a view-only permission for groups or a way for a user to resolve the group to list of profiles, so the burden is up to the JIRA Admin to set things up, maintain them, and let others know who the group members are. There's an open request for this guy as well.
To take things further to allow more flexibility, I submitted a request for @mention to a Project Role, allowing each project to determine which profiles or which groups should get a notification.
Fortunately, there's a pretty dead simple way around this, which is to create a dummy profile whose email address is an email distribution list.
There are definitely quite a few issues/limitations with this approach. Some of the immediate things that come to mind are:
- It will be dependent upon your email setup as to who can view the members of the list and who can edit it. This is all dependent upon your organization.
- This takes up a slot in you JIRA user license.
- Unless you actively have a user for this distro in an externally managed system like LDAP or Active Directory, this requires you to create the user in the JIRA User Directory. This may require some admins to fenangle with their current setup.
Sunday, April 13, 2014
JIRA Shenanigans - @mentions are better than Email
We all hate the telephone game and accountability is pretty important. This is enforced in a strong way from Alice in this Dilbert comic:
The thing is that there are a couple issues with E-Mail. The main thing is that it only resides in the inbox/outbox of the recipients/sender, preventing any normal person from taking a look at the conversation later on. You'll get the whole "oh there's a thread floating around I'll forward it to you" scenario.
Especially when an email is just between two people, you run the risk of some valuable communication being lost when both are not around for whatever reason that may occur.
Enter JIRA Comments. Having the conversation there provides a couple things. It's a public forum so people tend to be a bit nicer there. It's query-able, as all Issue fields are, and they persist so long as nobody deleted the issue.
There's this nifty @mention feature that you can use to direct a comment at someone. This provides a notification to someone (usually in the form of a an email) with the comment. However, this adds the context of the JIRA issue and the rest of the conversation. Some annoyances from this feature comes when you're in a thread with multiple people and you want to ensure that everyone gets a notification. In this situation, Watch Feature can be used to then keep up with the conversation as well as other changes.
After I wrote up all that (and most of the next post) I stumbled upon this blog post by +Dan Radigan that concisely describes using @mentions and Watchers effectively. In addition, it also has some nifty queries to help people find posts that they were mentioned in as well. Definitely check it out.
This post is getting long and I want to talk about how @mentions only allow you to notify one person at a time. Wouldn't it be nice to quickly and easily notify a bunch of people at once? Well, as of this post, JIRA doesn't support that, but there's a pretty nice workaround. I'll get to that next time.
Friday, April 11, 2014
KineticJS on Chromecast
Saturday, April 05, 2014
Why Story Points are Cool
So to carry on the conversation where some people are saying that estimates, in general, are a waste of time, I'd like to cover some situations where having Story Points are particularly useful.
You really shouldn't need an excuse to drag product/business end users, qa, and developers to have one last sanity check on some requirements. Getting everyone to agree, at the very least, what the requirements ARE and taking the next step to cover some technical detail as to what the effort would be. You definitely don't want "the expert" to do the estimation as this is a method of risk mitigation of "expert getting hit by bus."
Also, depending on your team's process, a Product Owner can ensure that the backlog consistently has a decent amount of low point stories that the team can incorporate into their own sprint. This is for teams that have the rule that a developer can bring in a story after the sprint start only if they think they can complete the added story within the same sprint.
Pretty much exactly the same thing as the previous point. More importantly, when can you end the planning meeting?
One scenario where Story Points may just be superfluous, and that is when a team typically breaks a story down to the point where they are all essentially equivalent levels of effort. This exercise is particularly useful for teams with extremely short sprint times. This all depends on what your team wants to accomplish and how they want to accomplish things. However, if just about all stories are broken down to 3 point stories, you are still running through the exercise of Pokering, but rather than asking the question "what's the level of effort for this story," you're asking "is this story a 3 or not?"
... but don't get too focused on those Points
- Are we meeting customer expectations?
- Is there any action we can take to improve?
![]() |
| ... but what about our commitment? |
Monday, March 31, 2014
Whatever Happened to Risk when We Went Agile?
Usually said pains come from someone managing expectations in the following manner:
- A Release is planned with a set number of User Stories define
- Said user stories are pokered
- Project Manager compares the sum of the user stories against the team's velocity and converts that into sprints - let's say they determined that it sums up to about 4 sprints.
- Project Manager sets a release date approximately 4 sprints from now.
- Project Manager attempts to hold team accountable to the Release Date. The word "commitment" seems be the word of choice, lately.
In the end, it all boils down to plain ole communication, including the appropriate people in the decision making process, and getting buy-in for the final decision. At the very least, you didn't spend an ungodly amount of time holed up in a room trying to think of every single thing for the next couple of months.
So why poker at all? Well, there are a boat ton of uses where pokering, with Story Points in particular, is very useful. This post is getting long so I'll talk about how they help smooth out the process from sprint to sprint in the next post.
Saturday, March 22, 2014
JIRA Shenanigans - Attach Screenshot Feature
![]() |
| ಠ_ಠ|
| I didn't pay for Linux so it's OK that I have to spend hours to make it do what I want! |
![]() |
| Ripped off the Marketplace page |
Monday, March 17, 2014
Random JIRA Shenanigans #1 - Development Panel
BUT, we are using Fisheye 3.3.1 and the big bonus with this feature is that it explicitly shows us the branches an issue is being worked on. Technically, because we're using Gitflow, it shoooould be one branch...
Either way there were a couple of finicky things that we had to do that wasn't explicit in the documentation to make existing integrations with Fisheye/Crucible continue to work as expected.
Initial Configuration
- Fully Trusted Applications Links between JIRA and Fisheye
- All Users in Fisheye are in JIRA (but not the other way around.) Fisheye uses JIRA User Directory for Authentication
- Edited Application Link between JIRA and Fisheye
- Disabled Trusted Application Link
- Enabled 2-Leg OAUTH
- Impersonation Enabled.







