It’s Performance Review Time!

Unimpressed cat is unimpressed.
Unimpressed cat is unimpressed.

It’s Performance Review Time

It’s almost that wonderful time of year when you’ll wait till the very last minute and blab on about all things you did, some excuses why you didn’t, and hope you didn’t leave out anything important. It’s performance review time so, I wanted to share a couple things that I do which help me be prepared and draft the best possible self-evaluation to maximize my reward.

Keep an ‘Accomplishments’ log

The first step to writing a solid self evaluation is ensuring you have all the bits and pieces of the story that happened the past year. You’re most likely not the only person reporting to your manager and, even if you are, she’s not going to remember everything you accomplished. This is why it’s imperative to keep a simple, no thrills log of all the big and little things you accomplished throughout the year.

At first, when I started doing this years ago, it was tough to remember to keep up with writing things down. I’d suggest setting a calendar reminder once a month or quarterly. Now, I can’t wait to add a line to my list – it’s like those bells that salesmen ring when they’ve made a big sale – the second my code runs in production I excitedly enter a new line.

Don’t worry about how insignificant an accomplishment may seem at the time, jot it down anyway. During your year-end review writing you can pick and choose what you want to keep. I suggest logging everything you’re proud of!

What you say, can and will be held against you

This is some wise advice I got during my first performance review writing from a mentor of mine, it’s scary true and the best way I can explain this is with an analogy.

Think of it like this: You get pulled over by the police for speeding, no denying you weren’t speeding, and the cop asks you “Do you know why I pulled you over today?” You know the answer and you may say something like:

Well, I know I was speeding, but the car in front of me was making me nervous with a wobbly wheel so I sped up to pass them.

Now, this is a perfectly legitimate and acceptable answer that any reasonable person will agree with. Heck, the cop may even let you go with a warning. But, you’ve now given yourself the lower hand because you’ve clearly admitted that you knew you did something wrong, or that you actively were aware and chose to do something wrong. Think of it as the officer’s own declared preamble: “anything you say, can and will be held against you.” Instead, proudly admit to doing no wrong; Focus the attention on all the positive aspects of how the events occurred:

The car ahead of me had a wobbly wheel and, as a precaution, I passed them to avoided a potentially serious situation.

Now think of the last project you were on, isn’t it natural to want to give excuses or justify your actions rather than just focusing on the good parts? This coming review cycle, make a second pass through and remove anything that sheds light on negative justifications because anything you say, can and will be held against you!

Consistency Over Standards

If our number one standard is consistency over standards then reviewing code becomes clearer.
Our number one standard is consistency over standards.

When maintaining and improving upon legacy code it’s easy to redefine standards, or define nonexistent standards, which have cascading effects on the pipeline. Take something as simple as an ill-conceived naming convention which, in hindsight, turned out to not make sense over time. At some point the benefits of rewriting lots of code outweigh simply sticking with the bad convention. In these cases consistency over standards become the convention.

Continue reading →

Women In Tech | Speed-Mentoring

Women In Tech Speed-Mentoring
Women In Tech Speed-Mentoring

I recently went to a forum hosted by Women In Technology where they invited a large group of young women, some in high school up to some in their first internship out of college, who were there to meet one-on-one with tech professionals to ask questions and interact with some of the industry’s best (not self-promoting; there were many fine, far-more-seasoned-engineers at this event). Think speed-dating but for gathering knowledge, which I’ve dubbed: Women In Tech Speed-Mentoring.

I, of course, promoted data; I promoted the hell out of data!

The event itself was unfortunately quite short, for the mentees anyway, for which we all only spoke one-on-one with three aspiring tech geeks (plus a few chats while waiting in the pizza line). Some were declared computer science majors while others were still unsure of a direction to go in this broad world of tech. I, of course, promoted data; I promoted the hell out of data! However, in doing so, I was taken back by a couple things and pleasantly surprised at others — all of which gave me a chance to really connect with them, I hope. These surprises made me want to write this post…

Continue reading →

Dynamic Column Names In SSRS 2005

After a lot of swearing I decided to make this post, dynamic column names in SSRS 2005, to help the internet and give back to the huddled masses who still have to support this old reporting services instance from 2005. In this version, as all of my dead-end googling revealed, there is no way to dynamically or ordinal-positionally set the column names in your reports — which is insane! I mean, what year were Microsoft in, in 2005?

Anway, like I said, after a lot of swearing, I came up with a creative way to achieve dynamic column names in SSRS 2005 and this post will share how you can implement the same solution.

Don’t even get me started on dynamic data sources…

Continue reading →

Tab Colorizer | A Chrome Extension

I’ve recently challenged myself to build a few extensions for the Chrome browser. I recently finished my first one, still working on the others, and was so proud of the results I thought I would make a post about it. The extensions is called Tab Colorizer and, if it wasn’t obvious, is a chrome extension which allows you to customize and change the color of your open tabs.

What features are available?

  • Choose any color in any order.
  • Customize the key-stroke command.
  • Submit bugs and feedback form.
  • Sync across all your browsers!

Continue reading →

Join Two Type-2 Tables and Rebuild History

I recently was tasked with building a new table with two Type-2 tables as a source and, not only maintain the history but, rebuild the history. Let’s look at the best way to join two type-2 tables together and then, more specifically, how to join the two historized tables together while preserving the logical history of changes as though they were one.

Joining two type two tables with history maintained.
Join Two Type-2 Tables

The Setup:

Imagine you have two tables, typically type-2 dimensions, which have persisted historical records of changes: One for capturing your customer’s name over time, and another for tracking your customer’s phone number changes over time. In some cases, you may not have a historical record in one table, or the other, leaving an unknown name or phone number captured for a given customer. When re-building history you have to take care of these new periods of time where something hasn’t happened yet.

Now imagine that a customer changed her name three times and only on that third time did she also provide a phone number. That means, our third historical entry of her name change could potentially turn into five records, depending on when the phone number insert/update occurred.

Continue reading →

Look For Something Ridiculous, Not Test-Takers

Ostrich looking at you ridiculously.
Ostrich looking at you ridiculously.

Look for something ridiculous? Not that long ago I used to think that the best interview questions were one where the candidate could answer the question in many different but accurate ways, rather than just one perfect way. Which, at the time, would have weeded out many incompetent colleagues, consultants, and managers. It seemed fool-proof!

Fast forward to today, after much more experienced in interviewing and matured in my expectations of nervous people. These people are just people – they just mostly suck. Like, foundationally terrible candidates, four out of every five.  The cure is that while they may not perform like you expect, they may show other signs – much like how I thought the ability to Open Notepad was a single testament to skill – there is one great trait to look for: Passionate Interest! No matter the questions you ask a candidate if they get excited, geeky, inspired, passionate about the answer, then you’ve got something special.

My argument here is that one who would answer the questions the way you’d ideally-expect versus someone who may underperform, yet still be a contender, will still be equally expressive in a positively geeky way. While the true underperformers will break down in many obvious ways, the common denominator between them will undoubtedly be their disdain for coming to a solution; An eagerness to say something, rather than feeling something. These are the simple clues to look for. Look for something ridiculous and genuine. These are the people who will be there to bounce ridiculous ideas off of and fuel the team.

Nobody wants to work on a team where people only share details when you ask for them. I want to work on teams where people share information because they think it will be helpful even though you didn’t ask for it.