Stories about Software


Preemptively Identifying Dead Seas

Today, I’m going to try to tie various strands of my life together into one lanyard of efficiency.  I haven’t done a reader question for a while, so I’ll change that today.  In this post, I’ll offer a terminology nod to dead seas, a now-defunct term that became one of my favorites.  The best context I can now offer lies here, in a post of mine, summarizing it.

A few months back, I made a post on NDepend called, “What to do When Your Colleague Creates Spaghetti Code.”  In this post, I described a caricature that I randomly named Bill, who you might recognize as sort of a quintessential expert beginner.  I subsequently received a reader question about this subject.

How can I tell if the company interviewing me has a “Bill?” (i.e. “How can I preemptively identify expert beginners?”)

Well, I’ll take a crack at that.

Expert Beginner Primordial Soup

I think that a meaningful examination of this question requires us to look at the conditions that give rise to such archetypes.  In the original series/book, I cover part of it.  The organization must draw sort of a neat little box around the techie group and then put an advanced beginner in charge.  From there, the concoction needs to simmer in a nicely insular environment, in which the budding expert beginner receives no real negative feedback, second guessing, or industry exposure.

But this assessment focuses entirely on the software development organization.  An ensconced expert beginner reigning over some miserable, backward fiefdom requires “the business” as an accomplice.  Simply put, it requires the operational laziness to allow your business to be ruled by an unaccountable “expert” operating with utter opacity.

Expert Beginner Hut

Imagine you started a pizza shop and hired a pizza chef to run the kitchen.  Then imagine that you completely delegated the cooking to the chef, as you should.  Life treats all of you well for a while and you develop some business.

But now complaints from customers start to come in about the taste and presentation of the pizza.  “My pizza was incredibly salty and all of the pepperoni was isolated to three slices!”  When you bring this problem to the chef, he tells you that such is life when it comes to making pizza—and, also, get out of the kitchen.  You don’t taste the pizzas coming out or look at them or launch any sort of investigation when his pizza chef assistants serially quit, muttering about his incompetence.  You just count the inbound trickles of revenue and assume that’s as good as it gets.

Read More


From Developer to Consultant

Editorial Note: Next week, I’m going to Panama to explore the canal.  I have no idea how much internet access I will see, so next week could potentially be a quiet week for DaedTech posting, if I can’t log in to publish a few cross posts.

If you write software, but not for the company that signs your paychecks, this title may sound strange to you.  “What do you mean, ‘from developer to consultant,’ when you can be both?”  I have answered that question previously, so I won’t rehash it here.  Suffice it to say writing code for someone other than your employer does not a consultant make.  (But read that post, seriously, because it becomes even more important later in this one.)

A few readers have submitted variants of the same question, so I’ll capture it simply, and as a composite.

As an independent, how do I go from doing app dev work to consulting?

I added the bit about independent status because it matters.  Without that, I could answer trivially by saying, “get hired by a consulting firm that wants you to consult, and let them train you.”  But if you go from contract to contract slinging code or if you write code as a W2 employee, you have a less obvious transition.

The Nature of Both Beasts

Before I lay out a tactical set of steps, I need to define the underlying nature of both roles.  In the taxonomy post, I approached the matter in terms of definitions, as one might expect from a taxonomy.  Here, I want to talk philosophy.

I once gave seeking app dev work a satirical treatment.  I asked the reader to imagine a world where, instead of “I’ll fix your garage door” contractors advertised their services with “I have 5 years of hammer, 2 years of table saw, proficiency with 6 kinds of metal, etc.”  As an app dev contractor or W2 employee, you offer the world the latter.  You say, “here’s a brain dump of stuff I’ve done, so all I need is someone who knows how to make me useful and who also signs checks, and we can get going.”  You offer exactly the sum of your experience tuples.


A consultant, on the other hand, offers services akin to general contractors.  “Call me if you have a problem with your garage door, and let me worry about finding someone who can do the job and how many ‘years of hammer’ they need.”  An app dev free agent solves one problem (writes code for someone who can’t) even as he presents another (figure out what skills are needed and manage that person during execution).  A consultant steers clear of execution and offers only guidance.

Read More


How to Get that First Programming Job

If I think through the corpus of posts I’ve published, it seems they rarely focus on concerns at the entry level.  Or, at least, at the entry level of software, specifically.  Today, I’d like to look at a reader question about getting that first programming job.

My question is, what if I’m not exactly a developer yet?  I’m just wrapping up one of those full stack coding bootcamps, and I’m anxious about finding that first job.  Can you offer any advice?  I want to show that I care about doing things right.

First, I’ll offer a few caveats.  Nothing in the reader question spoke to how much experience the asker had outside of the programming industry.  That can matter, but I’ll write this post in such a way where it won’t.  Secondly, because I’m not entirely clear on the context for the last sentence, I’ll assume it exists as a way to show (and provide) value to prospective employers.  In other words, I’ll assume that “I care about doing things right” means “I want employers to see that I have good work ethic and care about the craft.”

The Entry Level Conundrum

When I graduated college at the end of 2001, I graduated into the teeth of the .COM bubble bursting.  Offers I had received dried up, and interview invitations I had received evaporated.  A new reality emerged — a reality in which entry level folks found themselves subject to a paradoxical conundrum.


Nobody wanted to hire software developers without experience.  And I couldn’t get any experience without getting hired.  I did what anyone in my position would do and went to work at Radio Shack.  I’m actually dead serious about going to work at Radio Shack.  That’s how bad things got in my search, and I needed money.

Eventually, after almost a year of peddling cell phones, freelancing a bit, and looking for work in my spare time, I landed a job as a “Software Quality Engineer,” or, as I like to think of it now, “Software Engineer with Training Wheels.”  I took the job, shed the training wheels and never looked back.

While my story eventually ended in joy (or at least employment), I believe the entry level conundrum holds true in the industry to this day.  Developer fortunes as a whole have improved substantially since I graduated with my CS degree.  But it can still be hard to find that first gig.

Read More


Securing Yourself a Better Title

Tonight marked the vice-presidential debate and the start of the baseball playoffs.  With two spectator sports on television, I thought I’d draw some inspiration and answer a reader question about office politics.  This question came to me from a reader whose problem tracks back (in my opinion) to need for a better job title.  And it came in lengthy format, checking in about 1,100 words!

For the sake of both poster anonymity and brevity, I will summarize with as little information loss as possible.  My summary is as follows.

I finished a CS degree and took an entry level position.  From there, I took a job that involved writing code — automation around Selenium to be used by a QA group for testing.  I believe this mimics the role of Google’s “Software Engineer in Test.”  That said, the conferred upon me the title of “QA Engineer.”

For two years, I enjoyed the development work in this role and made inroads toward an advancement.  Before that happened, however, my company shuffled departments, and I found myself in a new part of the company, under a new boss.  This new boss only saw me for my title, rendering my progress moot.

I approached him about my situation and he agreed to put me on a more classic development team, but on a “probationary” basis.  He said that he’d consider a formal change in six months if I could work on defects and get my fix rate up to a certain number per week.  Six months later, at a review, he said that I had made definite progress, but that my rate of X per week was just not QUITE high enough and that we could talk again next year at performance review time.

What are my options?  What should I do next?  I feel that I’ve now fallen behind people of a similar, salary-wise, and I feel stuck in a rut.


Title Matters

Let me start by offering a quick bit of context.  Recruiters and people offering you jobs with bad titles will tell you that titles don’t matter.  Don’t listen to recruiters and people offering you bad titles because titles do matter.

They matter because a job title counts as what I’ll call passive bargaining material.  When you navigate the waters of your career, you will have negotiation points where you look for more salary or benefits or whatever.  The actual negotiating constitutes the active component of this dance, and that matters.  But so does the passive portion: your previous/current title, salary, benefits, etc.

Don’t believe me?  If you’re a developer, cold-apply to a bunch of dev manager or director gigs.  No responses?  Try adding a fictitious 5 year stint as “Director of Software Engineering” to the top and try again.  Bet you get at least a few calls.

Read More


Wherefore Art Thou, Tech Debt?

About a month ago, I re-posted something that I had written about tech debt for the Infragistics blog.  This turned out to be a popular post, and it generated some reader questions.  Today, I answer one of those questions, which basically amounts to “wherefore tech debt?”

What generates tech debt?

No doubt, you’ve heard the Shakespeare-as-Juliet ask, “Romeo, Romeo, wherefore art thou, Romeo?”   Most people imagine Juliet, standing on the balcony and offering a maudlin request blindly into the night — “where are you, dude?”  Interesting bit of trivia.  Juliet does not ask where Romeo is, but why he is.  She poses a much more interesting question.  “Why do you exist?”

Accordingly, this post concerns the wherefore of tech debt.  Why do we find ourselves saddled with this stuff?


Read More