Logging Adventures

Is ServiceNow you don’t really have a debugger that you can use to trace what’s happening in your code. Instead, most people spend a lot of time using logging statements.

I’ve gotten into the habit of using JSON.stringify(object, null, 2) to convert objects to something that can be logged out. I ran into an occasion recently where my logging statements were logging out an object that was missing a bunch of information on it.

Pro tip: (/sarcasm) Maps don’t convert and print via a JSON.stringfy, so if you have an object that contains a map, you’ll have to try something else :).

On Staffing

This is a potentially touchy subject.

Every time I’ve ever ‘settled’ when hiring someone onto my team, I’ve ended up wishing that I hadn’t settled.

This has held true both when acting as the hiring manager when I was a controller, and when I’ve had input into hiring decisions not as the hiring manager.

Obviously, no candidate is perfect because no person is perfect. Beyond that, you’re unlikely to get a near-perfect senior developer for what the market is paying a junior developer, and if you did, that person is going to leave if they ever figure out just how far under market you’ve got them, so you’re depending on them continuing to be uninformed, which isn’t a great place to put yourself.

Setting aside all of that, my strategy is that you should always do your very best to hire someone whom you’re really excited about, someone who is bright, driven, and conscientious.

If your budget is on the lower side, then that often means that you’re hiring someone with a bit less experience than you would have ideally wanted to bring in. That can be a tough combination because it means that you’re training someone to do a job that they are probably going to be outgrowing in a year or two.

Ideally, your department or team is growing too, and you can move them on to bigger and better things in your organization, but even if that isn’t the case, someone with the right mindset generally seems to still find a way to make it worth having trained them before they end up moving on, and just because they move on doesn’t mean that they won’t be back, or that you won’t work with them again at some other point.

Coming at things from the job seeker side, being turned down for a position that you’re sure you would have been great at is frustrating and incredibly disheartening. I get that–I’ve lived that and the struggle is real.

Coming at things from the hiring manager side, I get that the cost of a bad hire is really high. You’re probably going to spend a lot of time trying to figure out if they are hitting the performance levels they should or not (the more complicated their job and skill set, generally the harder it is to determine that), then you’ve got to spend time coaching them, then you’ve got to go through the painful process of firing them, and then you’ve got to interview candidates again.

Given all of that, most organizations and hiring managers tend to be willing to pass on candidates that would ‘probably’ be awesome at the role and wait until they find one that they are ‘certain’ will be awesome at the role.

It’s definitely not a perfect system, and I understand why people (on both sides) get frustrated.

Sometimes it helps me to imagine a world where hiring managers don’t do that. Instead, they say “I’m going to fill this role in the next 10 days. I don’t care how many applicants I do or don’t interview during that time. I’ll give it 10 days and then just hire the best of the bunch…or the one applicant who is minimally qualified.”

Having seen some bad hires in my day, that sentiment would give me the creepy crawlies.

As I described above. You have to be reasonable in your expectations. You have to calibrate your expectations against the market you’re in (the pool of talent may be deep and vast, or a bit lacking), and what you can afford to pay.

That calibrating process can take some time, but I think you have to respect that process of calibrating yourself, making your exceptions reasonable, and then finding someone who (inside the limitations you’re working with) makes you really excited to be bringing them onto your team.

Obviously, emergencies arise, and we don’t work in a perfect world, but not respecting that process would generally represent a failure of leadership.