Stories about Software


When To Pull the Fire Alarm and Run out of the Building?

How about that for a blog post title?  Of course, I can’t claim credit for it.  It’s reader question Tuesday and it was actually the reader who phased it this way.

Here’s the question:

I made a mistake.

Took on some side work that I thought would be a simple way to make money but it turned out to be a mess. I have stayed up nights and worked weekends to get it out the door but it is a failure.

I knew it would be from the beginning and stated my concerns to the team and project manager but they did not listen. Even though I should have stopped working on it at that point, I tried to power through it.

Now the project has truly blown up for all the reasons I said it would. And now I am extremely tired and have to catch up on all of the other work I neglected. I guess I was not assertive enough and should have set boundaries. I was supposed to work 20 hours per week but management did not tell the team that so they were confused when I would say the customizations they wanted would break the budget.

My business partner told me to be more assertive but I guess pride made me think I could pull it off. When do you pull the fire alarm and run out of the building?

When Do You Run out of the Building?

Let’s dive in and answer the question as quickly as possible.  When should you pull the fire alarm and run out of the building, presumably never to return?


Professionally speaking, this won’t ever go well, and it will burn bridges.  By “pulling the fire alarm,” I’m assuming that you’re referring to a relatively perfunctory bit of notice and a quitting of the project.  Doing that on a contract, especially one going poorly, will strain and break professional relationships.

That said, if we’re talking about personal sanity or burn-out, you’ve got to do what you’ve got to do.  Side work shouldn’t ever threaten your mail line of work, let alone something like your health.  So understand that when I say not to pull the rip cord, I’m speaking strictly from a professional perspective.

If Not Pulling the Fire Alarm, Then How to Get Out of It?

When I do work for clients or even have sales discussions with prospects, I tend to operate in perpetual consultant mode.  What I mean is that I’m always looking for a way to help them, even when I decline taking the work.

In the event that I ever do what we’re discussing about here, “breaking up” with a client, I still maintain this attitude.  And that’s what I’d recommend here.  There are two main ways, off the top, that you can be helpful with a break-up in this situation.

  1. Find someone else that can help them or that they should call instead of you.  Ideally, you’d tee this up as recommending someone more equipped for the situation.
  2. Have the hard conversation: this project is going to fail.  Tell them that you don’t feel good continuing to accept money because it would constitute malpractice.  And then (and yes, I know, this sucks) offer to write some of your revenue off for your role in this.

In both cases, you’re getting out of the situation.  But, unlike just phoning it in one day (or giving a couple of weeks of notice), you’re making this about their best interests rather than yours.

I’d say beyond getting out of the immediate situation here, there are some broader lessons for free agents to take away here.  For the rest of this post, I’ll speak to these.  How can you keep things favorable and avoid nightmarish client engagements?

Read More


How to Get a Programming Job without a Degree

This week’s reader question Tuesday is a look at how to get a programming job without a degree.  It’s probably a good one for me to hold forth on.  In my book, Developer Hegemony, I argue that, in spite of my own two CS degrees, I probably wouldn’t recommend that course of action to prospective programmers nowadays.  It’d be hard to justify ROI on it, especially at expensive schools.

So if you don’t get the degree, then what?  Here’s the reader question.

How do I get a job without a CS degree? The only entry level postings I see require a CS degree. When I look for how to get a job without a CS degree I see lots of information on education. They say to read books and write code and that’s great. I’ve done all that. I know how to code. Now where do I apply? I don’t see anyone hiring entry level without a degree.

First Things First: Why Don’t Companies Make This Hire?

You might think that companies would at least give you a crack at the entry level via the interview.  You tell them you can code and you understand if they don’t simply take your word for it.  Isn’t that what the interview is for?  To allow you to prove it?  And, wouldn’t this be doubly true since the demand for programmers far outpaces the supply?

This makes sense at sort of a macroeconomic level.  But it actually breaks down a bit when you look at any individual company.  Yes, an individual company probably needs more programmers than it has at any given moment.  And yes, the the interview process, theoretically, should give any potentially qualified candidates the chance to prove themselves.

But individual companies are optimizing far more to avoid false positives than they are false negatives.

Companies Avoid Brillant Paulas

The job interview is, frankly, a terrible way to find talent.  It consists of strangers seeing how generous they can be with the truth without technically lying to each other followed by gut feels, snap impulses, and other assorted non-scientific things.

And, while all companies like to kid themselves into thinking they’re good at this, on some level they know they aren’t.  They know that, for all of their efforts, they’re going to whiff occasionally and hire a Paula.

Hiring Paula is embarrassing.  So the candidate search process has evolved to optimize to minimize complete whiffs and make them understandable if they happen.  If you hire someone with 2 “senior software engineer” titles on his resume and 10 years of experience, how were you to know?  Likewise, if you’re hiring at the entry level, and you hire someone with a CS degree… how were you to know?

But if you hire someone with no experience and no degree and they turn out to be Paula, well, then you look pretty silly.

So our mission here today is to figure out you can minimize the degree to which hiring you could look silly.  That’s what gets you interviews and eventually offers.

Read More


How to Get Yourself Out of Technical Debt

This week, for reader question Tuesday, the question couldn’t be simpler.  It’s about technical debt, and here’s how it goes:

How do you get out of tech debt?

I told you it was simple.

I’ve talked about technical debt a number of times on this blog.  I offered my own definition years ago (in another reader question, actually).  I’ve talked about why it exists, and I’ve written at times about how you can use NDepend to identify and quantify it.  But I guess I’ve never really talked in any detail about how to escape it.

Let’s do that today.

Read More


Mitigating Risk When Depending on Remote Work

A while back, I wrote a post about remote programming jobs and why you ought to go looking for them.  I’m probably the poster-person for remote work these days, given that my work is 100% remote, and that my wife and I take full advantage of that to vagabond.  Oh, and I love it and have never looked back.

When I wrote that post, someone weighed in with a question in the comments.  So let’s make today’s reader question Tuesday post about remote work.  Here’s a slightly abbreviated version (you can read the full question in the comments).

The Reader Question about the Risk of Remote Work

My wife and I have just recently talked about a medium-to-long term plan of moving out of our home in a metropolitan area in California to somewhere more rural in another state.

Certainly there are the considerations of leaving family and friends but on top of that is the concerns I have over how it will affect my career.

I’ve done pretty well for myself thus far, both in terms of salary and in terms of the kind of work I’ve been able to do all at companies where technology is a strategic asset to the business.

My worry is that there won’t be enough good remote opportunities, or that I won’t have the connections to score those jobs (all the jobs I’ve had except for my first were achieved in large part because I had former colleagues already at the new company who asked me to join them).

I’d be interested to hear what social media channels you recommend. I’d also be interested to hear what people have to say about working remotely from a rural locale.

Answering the Explicit Questions: Remote Work from a Rural Location and Social Media

I’d be doing a pretty bad job of answering reader questions if I didn’t actually answer the questions.  So let’s do that first.  Though I will elaborate on the subject of risk after I do that, since that’s really the core issue here.

First of all, remote work from somewhere rural, for me, mostly isn’t any different.  I have an office at our house in Michigan, and we have good internet.  When I’m there, it’s the same as working anywhere else, suburban, urban, or whatever.  The main difference is that I don’t have much access to throwback stuff, like printing things out, signing, faxing, and whatnot.  I’ve mostly optimized my life not to do things like that, but on the occasion that I have to, it can be a headache to drive a ways for these sorts of chores.

And, as for social media channels, I actually don’t recommend that as a solution.  So I can’t really speak to which ones help remote workers.  Social media can be fun and provide interesting interactions.  But unless it’s with people you know through some other channels, it creates relatively superficial relationships.  These aren’t the sorts of things that help you close six figure deals.  (And that’s exactly what programming jobs are.)

Read More


The Coding Dev Manager Can Work, But It’s Hard In Traditional Orgs

Today, for reader question Tuesday, let’s consider the idea of the coding dev manager.  In my experience, most companies draw a fairly sharp line between individual contributors (they code) and managers (they don’t).  But in startups and Enterprise Silicon Valley companies, you’ll have additional rungs of the corporate pyramid where people still write code.

Who is right?  Well, in my estimation, startups and Enterprise Silicon Valley.  Er, at least, they’re less wrong.  (Let’s talk “right” when we stop modeling our corporate structure after ancient militaries.)

But, as the asker of today’s reader question points out, this still-technical manager struggles to spend much time writing code.  (When he refers to “the book” he’s referring to my book, Developer Hegemony.)

The Reader Question about the Coding Dev Manager

Hi Erik,

I really enjoyed the book. One question I have regarding the efficiencier/partnership model for developers.

In my last job at [redacted], I was leading a large team working with [redacted]. We followed a similar model where we worked with customers on business problems, and then designed the technical solution ourselves (obviously updating them along the way), and then delivered it. As the team lead of the initial project (and eventually the overall engagement lead of 3 projects), I found myself spending less and less time programming. Towards the end it was < 10%.

In your book, you mention that it is possible to still be programming yet work on these other areas, but in my experience the “other” areas end up taking so much time I ended up not really coding. Sure if we have a team full of “T-shaped” people everyone can share various burdens, but from the client’s perspective they typically want 1 counterpart who they can go to to make the final calls. Is this an inevitable fate, similar to section 3 of your book that as the person’s value increases they go further and further away from coding?

Also, a Tweet on the Subject

For a bit of additional background on the subject, check out this tweet from last week.  More interesting than my tweet is the responses, in the context of this discussion.  (None of which I replied to — apologies, folks, I’m terrible at Twitter.)

The doubts in the responses to my tweet are important.  People see the following failure patterns for the coding dev manager.

  • You don’t actually wind up coding (as expressed in the reader question).
  • You kinda do both things, manage and code, and both kinda suffer (Doug).
  • You don’t actually wind up leading (Grant).

And then there are a couple of points that maybe staying “at the top of” one’s tech game isn’t that hard or even necessary.  (I’m inclined to agree with both ideas.)

So overall, what we’ve got is the million dollar question — how can you be both a programmer and a leader?

Read More