Stories about Software


Is Unlimited PTO a Good Deal for Me?

True to my promise from last week, I am making a more concerted effort to bun down the queue of reader questions on my blog topics Trello board.  Thus, today brings you another answer to a reader question (one of these days, I may get around to doing video answers).  I am actually obfuscating this question somewhat, as the verbatim question could potentially be specific enough to identify the parties involved.  But here’s the thrust of it.

I recently received a job offer from a company that I’d been interviewing with, and it made no mention of PTO/vacation or time off in any form.  Assuming it must have been an oversight, I asked about it on the phone when discussing the offer, and they said they don’t track time off — it’s unlimited.  As long as various stakeholders are happy with their work, they don’t care how much time people take.  Is this a red flag for my prospects of working for this company?

My gut reaction to this, upon reading, was, “no, that’s awesome!”  In a corporate world whose defining feature may be treating adults like children (I have this slated in my backlog as a future post), this seems refreshingly adult.  Get your stuff done and we’re not going to bean-count how you spend your days.  It reminded me of something I once said to a person reporting to me when she asked if it’d be alright to duck out an hour early if she worked an extra hour the next day: “I don’t care how many hours you work in a day if you’re doing good work, so please don’t make when you come and go from the office something I have to care about.”

My secondary reaction was to start and think, “get that language written into the offer letter; have them amend it to state explicitly that they offer a discretionary amount of time off.”  That was the core of the message that I conveyed privately to the submitter, without going too far into detail.  So, over and done with, I suppose.

But this got me to ruminating a bit more on the topic in general and about the strange nature of the corporate vacation concept.  Does this nameless company have it right, following orgs like Netflix that famously buck the convention of tracking PTO?  Is this a good way to reward awesome, trustworthy folks with appropriate trust?  Or is this a trick to seem generous, or even to sneakily save money while knowing that social pressure will actually prevent employees from taking all that much time?


Unlimited?  Really?

Before anything else, let’s get a little more precise about terminology.  Unlimited vacation sounds like just the kind of thing that they’d offer at a Shangri La organization far too selective for the likes of you, thus creating a Catch-22.  If you’re good enough to work somewhere that “adequate performance gets a generous severance package,” then you’re not the kind of slacker that would take advantage of unlimited vacation, anyway.

Read More


Chess TDD 57: Finished Threat Evaluator

Once again, it’s been a while since the last episode in the series.  This time the culprit has been a relocation for the remainder of the winter, which meant I was dealing with moving-like logistics.  However I’m holed up now in the south, where I’ll spend the winter working on my book, working remotely, and hopefully wrangling this Chess TDD series to a conclusion.  In this episode, I finished threat evaluator, or at least got pretty close.  I called it a wrap around the 20 minute mark and without having written additional unit or acceptance tests to satisfy myself that it works in a variety of cases.  It now correctly understands that some moves aren’t threatening (e.g. pawn moving straight ahead) and that pieces of the same color do not threaten one another.

Also, a quick editorial note.  There’s been some pretty intense wind here in Louisiana, and the power went out around the 18:00 minute mark.  I was surprised that all of the screencasting was saved without issue, but that VS barfed and filled my source file with all sorts of nulls.  I had to revert changes and re-do them by hand prior to picking up where I left off.  So it’s conceivable that a word might be spelled slightly differently or something.  I’m not pulling a fast one; just dealing with adverse circumstances.

What I accomplish in this clip:

  • Finished threat evaluator (initial implementation).
  • Won a decisive battle in the age old, man vs nature conflict.

Here are some lessons to take away:

  • Save early and often.
  • Writing a test is a good, exploratory way to get back up to speed to see where you left off with an implementation.  Write a test that needs to pass, and then, if it fails, make it pass.  If it passes, then, hey, great, because it’s a good test to have anyway.  This (writing tests to see where you left off) is not to be confused with writing a test that you expect to fail and seeing it pass.
  • Anything you can do to tighten up the automated test feedback loop is critical (like NCrunch).  The idea here is to get in the habit of using unit tests as the quickest, most efficient way to corroborate or disprove your understanding of the code.  Run experiments!
  • If, while getting a red test green, you have an idea for a more elegant refactoring, store that away until you’ve done something quick and simple to get to green.  Don’t go for the gold all at once.  Get it working, then make it elegant.


How to Detect Sucker Culture while Interviewing

I had a reader question come in that was a bit sensitive and specific, so I won’t post it here.  It pertained to receiving a job offer that had some peculiarities around the “paid time off” (PTO) situation.  Given the time-sensitive nature of such a thing, rather than add it to my Trello backlog of post topics, I shot him an email offering a few quick thoughts.  This led to a brief discussion of hiring and PTO in general, and a more general question.

The problem is, I don’t know a way to figure out [whether they have a heavy overtime culture] before you join a company.  How do you ask ‘How many hours will I be working?’

This is a classic conundrum.  Job interviewing advice 101 says, “don’t talk about pay or vacation — impress them, secure the offer, and then negotiate once they like you.”  If you ask about hours or vacation during the interview, you might create the impression that you’re a loafer, causing the employer to pass on you.

In my popular post about “sucker culture” I suggested that you shouldn’t feel guilty for not pouring in extra hours for free.  I then offered a follow up post with ideas for escaping that culture when you’re in it.  But it occurs to me that I haven’t talked about avoiding it altogether.  And that’s really what’s being asked here: how do you avoid sucker culture in the first place, without torpedoing your chances during an interview?


The advice I’m going to offer here is, for the most part, advice that errs on the side of caution and not hurting your chances during the interview process.  So, as you examine the following strategies, bear in mind that they may result in false negatives for exposing a sucker culture.

Read More


Chess TDD 56: Threatened Pieces

It’s been a while since my last post in this series, and for that I kind of apologize.  Normally, I’m apologizing because I’ve had too much to do and it renders the reasoning a little disjoint.  But this time, I took a break for the holidays and left off at a natural stopping point, so the disjoint-ness is kind of moot.  I apologize only that it’s been a while, but I don’t feel culpable.  Anyway, in this episode, I start to tackle the concept of check by tackling the slightly more abstract concept of “threatened pieces.”

What I accomplish in this clip:

  • Moved on to working on the concept of check.
  • Laid the foundation for a general evaluation of whether a square on the board is threatened.

Here are some lessons to take away:

  • One of the best ways to keep things moving efficiently when coding is to find ways to slice off bits of new functionality in new classes.  Getting back to TDD around a new class makes it very easy to implement functionality.  The trick is in figuring out logical seams to do this, and that comes with time and practice.
  • Classes without mutable state are a lot easier to reason about, to test, and to work with.
  • Passing booleans into methods is a smell, because usually it means that you’re passing in a control flow concern to tell the method how to behave.  In this episode, I have a boolean argument that is actually a conceptual piece of data, so it’s not problematic vis a vis the single responsibility principle, but it is, nevertheless, a smell to keep an eye on and to, perhaps, move away from later.
  • During TDD, it is fine (and even expected) to do obtuse things to get the early tests to pass, but only if each thing that you’re doing advances you toward the eventual solution and is sequentially less obtuse.  That part is critical.
  • A good trailing indicator that you can use for whether or not you’re biting off too much implementation with each test is what happens when you finish your changes to the production code.  Do all tests immediately go green, or do you have unexpected failures that cause you to need to tweak and tinker with the code that you’ve written.  Immediate green is a sign you’re in the Goldilocks zone while tinkering is a sign that you’re biting off more than you can chew.


The Case for a Digital Notebook

I have a lot of different posting threads that I try to juggle simultaneously, but one that I’m thoroughly enjoying and should probably try to do more of is the reader submissions.  A while back, I added a resources page to the site and made brief mentioned of it.  That prompted this reader question:

I read your post on Resources and picked up some valuable tools I am now using. Specifically, Toggl and Synergy.
Like you, I am a paid Sublime Text user and love Trello for managing my projects. I use Visual Studio for my C# work and WebStorm for all my JavaScript work.
I was surprised that you made no mention or recommendation for a digital notebook. I have used Evernote in the past and Ecco before that. About two years ago I switched to OneNote and never looked back. I find it to be much better and go to it numerous times each day now that it also works on the Mac and Android. I even kept formatted code snippets in OneNote which I am moving to GitHub Gists. Do you use a digital notebook?
Thank you for the very useful Resources post.

There’s been some elapsed time since that post and now, since I wasn’t entirely sure how to make the answer to this into a full-fledged post.  I’m still not entirely sure, and must admit I’m winging it a bit, but I think I can expound a bit on this.

The short answer is: “yes, and the tool is One Note.”  The longer answer is going to take a bit of a dive into the life of a free agent/billable consultant as compared to, say, a W2, salaried programmer.


Read More