DaedTech

Stories about Software

By

DaedTech Digest: Delays, Risk, Visualization and Gigantic Log Files

Another week in the books, marked, as always, by a DaedTech digest post.  Another week here in sunny San Diego, marked by a predictable mix of work and fun.

On the work side, we’re building out our tech content agency at what feels like a fairly furious pace.  I suppose at some point, I may write DaedTech posts about business and growing an agency, but that seems a little off mission at the moment. (Weigh in if you feel otherwise.)  I’m also keeping the dream alive with our boutique codebase assessment practice, so a lot going on.

On the fun side, we spent a great weekend exploring Pacific Beach and La Jolla Beach in San Diego.  This included a ton of walking/hiking, sampling meals, appetizers, local beers, and desserts at local establishments, and just generally being outdoors.  As someone born and raised in the US Midwest, I can think of nothing better than a winter where it’s perpetually 70 degrees and sunny.

To include you in my joy, here’s a picture of some sea lions we came across while exploring.  Don’t let the apparent peacefulness fool you.  These things bark like crazy, stink like crazy, and spend most of their time banging their heads against one another.  It’s an endlessly amusing spectacle.

Picks

  • In case you missed it, DaedTech has a new direction and I’m gaining steam with it.  Here’s a category tag for this series I’m going to be working a lot on that basically lays out a guide for how we, as software developers, can take over the software development industry, rather than serving as perpetual grist in its mill.
  • I’ve been creakily easing my way back into software development, and Newtonsoft Json.NET provided a nice, gentle landing for not having to bother writing my own logic to parse JSON.
  • Speaking of software development, you know about Alexa site rankings?  Well, if you want to get that data programatically, you might think you have to deal with AWS’s byzantine SOAP API, public and private keys and all that.  Nope.  Check this out.  That link is a neat little XML payload containing DaedTech’s Alexa rank.  Just swap whatever URL you’re curious about for daedtech.com in the URL parameter.
  • On the personal front, I pick La Jolla beach, which is where we encountered both the sea lions pictured above and harbor seals.  If you’re ever in southern California and you like outdoors/nature, it’s worth a trip.

The Digest

By

Positioning Strategy for the Aspiring Consultant

A couple of weeks ago, I wrote a post in which I announced a new flavor of posts for DaedTech.  I was going to do this as a book or video product, but I tired of analysis paralysis.  So I’ve decided to just start teaching anyone reading the tricks to becoming a consultant. (Follow along with a new category).  This is the second post in that series, and it concerns your positioning strategy.

Figuring out your positioning strategy should be the very next thing on your list after figuring out that all software developers should become consultants.

If you just said, “wait, my what?” don’t worry — I’ll get to that.  But first, a bit of tough love.  I have a tactical rant lined up before I can get back to being helpful and upbeat.  It’s for your own good.

The Harsh Truth about Your Current Positioning Strategy

If I ever turn this “from developer to consultant” series into a book or something, I’m not sure if this post from last week will make it or not.  It’s not specifically related, but I’m going to build on it here today.

The Craftsman Positioning Problem

In that post, I talked mainly about our industry’s bemusing fetishizing of medieval craft guilds, and about how letting yourself get sucked into that trap hurts your career.  Toward the bottom of the post, if you’ll recall, I began to talk about positioning.

When you position yourself as a “craftsman,” you’re boasting about superior quality, but competing with cheaper prices.  People who do this fail to understand why people pay them.  But, in all honesty, self-described craftsmen aren’t even the worst at this.  The entire journeyman idealist set gets it badly wrong.

The Broader Developer Positioning Problem

Don't sacrifice your positioning strategy to code-jousting sites, as illustrated by this joust-ready knight.

We as software developers, enabled by opportunists around us, cheerfully ignore the real reason that people pay for us.  It’s fun for us.  We go to sites that let us “joust” or “duel” or “ninja each other” for badges and tokens and stuff, demonstrating that we can write a sorting algorithm 0.01% faster than the runner up.  And then we think that’s our value proposition to employers.

“Why should I hire you?” a non-technical hiring manager might ask.  And you might respond, with something that, in his brain, translates to, “I keyboarded in the stuff with the things and it was 4 nanoseconds faster than the what’s-it by the other guy.”  And then you think that helped you land a job.

If you make $100,000 per year, you might look at a “more senior” developer making $130,000 per year and assume that she’s 30% more awesome than you.  If you suddenly discover that she only knows 4 GOF design patterns off the top of her head to your 14, you might then start railing about the injustice of it all.  The industry meritocracy has failed!  (But not systematically and in a way that invalidates algorithm jousts — just totally in this one isolated case!)

Here’s the thing, though.  To your employer, assuming the employer is larger than “tiny” your two salaries are an inconsequential rounding error.  $100K is $50/hour and $130K is $65/hour and both of those rates line up with low end US contractor talent or good offshore talent, if they’re looking for geographic arbitrage.

They’re not hiring you because you’re “better” at code jousting.  They’re hiring you because you’re the fungible person with the desired citizenship/work status that the interview process spat out the other side.

Read More

By

Freelance Tax Implications for Side Hustlers: How to Handle It

Alright, time for a reader question Monday post.  I’m sure nothing takes the edge off of the end of your weekend like me answering reader questions.  So, let’s do that.  I’ve talked before about taxes for people going fully independent and hanging our their shingles.  But this one is all about taxes for side hustlers.

Here’s a composite of the reader question, since several folks, some from different professions, have asked me about this.

How should I handle taxes when I have a full time job and I start moonlighting?

In all likelihood, this will be a fairly US-specific post.  But there are commonalities with other tax systems, as I’ve learned by having an increasingly global set of colleagues and folks that I talk to.  So, hopefully, even those of you not in the US can get some value out of this.

Wait, Why Is This an Issue at All?

I’m going to really start from first principles here, in this discussion of taxes.  In other words, I’ll assume that you not only didn’t know how to handle taxes from income when you moonlight, but that you didn’t know you needed to do anything to handle them.

Alright, so here’s the thing.  Let’s say, for the sake of easy math, that you earn $52,000 per year, paid biweekly.  This results in paychecks of exactly $2,000.  At least, that’s what it will say under the “gross income” portion of your paystub.  As you well know, Uncle Sam has his fingers deep into your pockets before the direct deposit ever hits.

For the sake of more easy math, let’s say that your overall tax rate is 25%, meaning that you take home $1,500 per paycheck.  (This is extremely facile, since the US has a graduated income tax system.)

So every paycheck, the government (actually, your employer, but forget that for a moment) hangs onto $500 and you bring home $1,500.  At the end of the year, when you do Turbo Tax or drag your receipts to H&R Block, you neither owe money nor receive any.  Why?  Well, because, in a rather unusual circumstance, your employer has withheld exactly what you owe.

But what if you now start earning $1,000 per month moonlighting?  When you moonlight, nobody withholds income.  So now, at the end of the year, you have something of a problem.  Your total earnings are now $66,000 (52K + 12 months of 1K), but you’ve only paid $13,000 of the $16,500 that you owe throughout the year.  You’re going to need to pay the IRS $3,500 at tax time.

Oh, and they’re going to penalize you.  But let’s worry about that part later.

Read More

By

DaedTech Digest: Bad Coding Standards and the CRAP Metric

Another Friday, another DaedTech Digest, another recording of me spraying words all over the internet.  Fun times, as always.

Today (Thursday, at the time of writing), I went out to brunch.  This was sort of an accidental thing that happened.  We had someone come clean the condo we’re staying in here in San Diego, and it’s usually easier just to kind of make yourself scarce while that happens.  So we ambled out of our building and into downtown Ocean Beach, to kill time by eating breakfast.

Naturally, I worked while we did this.  My life is this kind of eternal blend of slow travel, work, and enjoyment.  So I sat, laptop open, drinking coffee, eating a “scramble,” and cleaning my inbox.  And, as I did this, it occurred to me how awesome the capability for remote work is.  It’s bled fully into my life over the last year, to the point where brunch on a Thursday is fine, and I take “weekends” when I feel like it.

Now, remote work might not be for everyone all the time.  But, in 2018, with the technology we have, it should be an option for you if you want it.  There’s a big, interesting world out there, and, armed with a laptop, there’s no reason for you to spend it in quiet cubicles or setting at noisy open office benches.

Picks

  • That segues into my first pick, which is remote work.  If you have any inkling that you might want it, push hard for it, because it is worth it.
  • Also, this is where I ate.  It was delicious, but, more interestingly, I described it to my wife as “UX epitomized in the meatspace.”  It was like a mid-2000s Apple device or a Cadillac.  No detail was too small to perfect about the food, presentation, decor, or, really, anything.
  • Vlad Bown (with my permission) translated my first expert beginner post into Russian language.  Pretty cool!
  • I’ve just got myself a copy of Typemock’s Isolator and plan to start using it for some code I’m writing for Hit Subscribe metrics gathering.

The Digest

By

Software Craftsmanship as a Metaphor is a Career Glass Ceiling

Is software development a craft?  I think this might be a decently long post, so let’s come back to that, to journeyman idealists, and to some of the finer points of what counts as “software craftsmanship” a little later.  Before that, please indulge me in story time.  Or, backstory time, as it were.

About 7 years ago, I digitally “signed” something called the Manifesto for Software Craftsmanship.  Go do a search, if you like.  I’m signatory number 6,662.  I remember submitting that form with something like quiet but fierce indignation in my soul.

Software Craftsmanship as Caring and Professional Pride

The year was, according to the website, 2010, and I was surrounded by expert beginners.  These folks made architecture decisions on the basis mainly of seniority.  The longer you’d hung around the company, the more conceptual votes you ‘earned,’ for some dubious definition of the word earn.

The result?  A codebase littered with global state, spaghetti, beachheads of copy-paste code, and tortured, meandering God classes.  It was like a bomb went off in that codebase.  And if you wanted to try to fix it with newfangled concepts like writing unit tests or paying attention to method complexity, you’d hear predictable expert beginner fare.  “I’ve been doing this for a lot of years, and I’ve been shipping software just fine without any of that stuff.”

In that role, I slowly earned my way into positions of influence and then decision-making before I left.  At the time of my eventual departure, the build executed a growing unit test suite, interfaces existed in the codebase, and I was proud of what I had done.  But it was hard fought and exhausting every step of the way.

And I probably wouldn’t have lasted as long as I did without the galvanization of the software craftsmanship manifesto.  It spoke to me, and it said, “not only is it okay to care and to have standards — it’s your professional obligation.”

My Evolving View of Software Craftsmanship

As recently as last April, I wrote a post about software craftsmanship making for good business.  As a salaried software developer (and company of one, ala Developer Hegemony), you ingratiate yourself more to the business by adopting practices like TDD than you do by competing in algorithm trivia contests that no one who matters can referee.  You start to trade in tight feedback loops, predictable deliveries, and things that make your “clients” really happy.  And you become more marketable as an app dev pro.

And years before that, I defended the software craftsmanship movement against a detractor.  In that post, I argued that the real thrust behind the movement was to establish that software development isn’t an insolvable quagmire of relativism.  Some practices work better than others, and to pretend that isn’t true amounts to quackery, and we shouldn’t tolerate quackery.

In general, if you go back far enough on this blog, you’ll find a bunch of references to software craftsmanship.  And in these references, you’ll find some themes.  I’ve always respected the caring behind the movement, and I’ve always valued the practices: TDD, continuous integration, constant refactoring, etc.  And, whenever I talk about software craftsmanship in praising terms, I’m always talking about those practices and the caring that drives them (including in the post about software craftsmanship being good business).

But, truth be told, I’ve never had much use for the term “craftsmanship,” per se.  Historically, I didn’t give it much thought one way or the other — it was just branding, like “agile” or “lean.”  But over the years people have started to fetishize the craft guild metaphor into titles and practices and even into a philosophical way of looking at software.

And if you fall into this trap, you do so at your career’s peril.

Read More