DaedTech

Stories about Software

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

By

The Siren Song of the Long Term Engagement

These days, I find myself getting more and more transparent about, well, everything, as if I were Pat Flynn.  Last week, I discussed a semi-fictional gig, but with realistic prices.  And last fall, I explained, essentially, how my career has worked and why I have money.  That was a fun one.

And, it was from the comments of that post that today’s reader question comes.  At one point during that tour de force of a post, I said that “consider the siren song of long term contracting.”  This prompted a comment that I logged as a reader question.

Excellent post, thank you!

I am particularly interested in why you describe long term engagements as a “siren song”? I have been independent for 6 years. 3 of which was spent at my 3rd client. There I made the mistake of remaining hourly.

Currently I maintain an agile R&D posture to my services; hourly to assess and propose for 30-45 days, then fixed bid for 3 month contracts. But this is a repeatable process where the client lines the next one up. My downtime is minimized. I see this as a good arrangement.

What pitfalls are there in a long term (3 yrs.), single client business model?

It’s an interesting question.  Let’s get into it.

Context from the Previous Post

If you opted not to click on the link to the previous post, I’ll offer a little more context around my comment.  I was talking about “four seasons” for a solo consultant.

  • Pre-sales/acquisition.
  • Engagement
  • Engagement wrap/post-engagement
  • Operations/business

The point of that post was to answer a reader question about my life as a solo consultant.  And I was explaining that my life varied a lot depending on my current “season.”  A week onsite during an engagement looks a lot different than a week at home, working on the business.

It was here that I alluded to the “siren song” of long engagements.  In context, I meant that each of these four seasons is necessary, if not equally fun.  So prolonging the engagement indefinitely is a siren song — something alluring and attractive that leads you to doom.

The alluring and attractive part is easy to understand.  During all of the other seasons, you’re hustling instead of reliably making money.  So prolonging the money-making part sounds pretty great.  Where does the doom part come from?

Read More

By

DaedTech Digest: Proving That Singletons Hurt You and More

Another week, another DaedTech digest post.  It’s been a tiring, but productive week for me.

I did a Q&A and talk for the Developer on Fire Remote conference, had a whole bunch of meetings with our Hit Subscribe clients, and did a bit of R&D for my codebase assessment practice.  Oh, and on top of all of that, I tried here and there to get out a little and enjoy San Diego, where I’m spending the winter.  Oh, and I slept a little, but not much.

My wife, Amanda, and I have an extremely mobile, location-independent lifestyle.  For the most part, this is insanely awesome, and I’d recommend it for anyone.  But every now and then, the basics of life, like haircuts, healthcare providers, and pet logistics can get… interesting.  So sprinkle some of those logistics on top of an already-hectic week, and you get me, ready for a beer, a hammock, and a nap.

Picks

  • Ultimello is a chrome plugin that gives you interesting capabilities for Trello, such as column card counts and the ability to sort in a lot of different ways.
  • If you’ve never read it, check out Getting Things Done, by David Allen.  Strategies for managing your to-do list, inbox, and not feeling like you’re forgetting something.
  • In San Diego’s Ocean Beach (OB), on Wednesday nights, they have the Ocean Beach Farmers Market, which features awesome produce, but also an unbelievable number of food and craft vendors with great stuff.

The Digest

By

Why Every Software Developer Should Become a Consultant

Since writing Developer Hegemony, leaving the traveling consultant life, and spending a lot of time building a content agency, I’ve flailed around a little with what I want to do with DaedTech.

What do I do with this thing, anyway?

I could treat DaedTech as one of Hit Subscribe’s clients.  But DaedTech isn’t really that kind of business.

I could continue to write a series of posts about whatever happens to be on my mind.  Maybe a mix of technical, career, and the like.  But, these days I write more than enough blog posts for our clients to scratch that itch and then some.

So, what to do?

Well, I’ve had plans to build an info product or info products to continue the ideas I laid out in Developer Hegemony.  And more and more people are also asking me about mentoring/coaching/advice in various forms.

But I think all of this is slapping me with analysis paralysis.  How should I structure things with DaedTech to support the eventual vision of whatever it is I decide later to do?

Ugh.  Maybe it’s time to stop with this nonsense and just start creating the information.

I figure I can do it as blog posts, maybe in a series.  If that goes well, world will spread, people will find it valuable and the revenue thing will happen somehow.  Lead with value, and all that.

The Career Empowerment Prologue

So let’s do that.

And to start, I’ll give you what would have probably preceded chapter one in the book idea that I’ve toyed with about how to empower yourself in your career.

Think of this as the prologue.  And the prologue of how to become a consultant involves explaining why I think you should.

I don’t mean that some of you, maybe should, if you feel like it.  No, I mean that everyone who counts him or herself a programmer, software engineer, software developer, or whatever other strange titles we give ourselves, should be a consultant.

Now to qualify that statement, I need to explain what I mean by “consultant.”

As I’ve discussed before on this blog, the term gets truly mangled in our industry.

  • A lot of people think that it means a software developer that writes code for a company other than their employer.
  • Some think it means you come in, hand wave and spout buzzwords, and leave before anyone can figure out if you’re helpful or not.
  • And still others think it’s sort of a black belt of soft skills kind of deal.

But it’s none of these things.

Instead, being a consultant means something much simpler.  It means that you provide expert advice in exchange for money.  And every one of you code-slingers out there should do exactly that.

Read More

By

A Hypothetical Consulting Gig

It’s about 3:30 PM, and my phone rings.  Well, it doesn’t ring as much as it vibrates, since my default is to have it vibrate.  It’s on my desk, between my keyboard and my monitors, and it’s vibrating angrily.  I look at it balefully, watching it interrupt my concentration.  602 area code?  Where even is that?

Don’t worry, regular blog readers.  I haven’t lost my mind, and I do remember the venue for which I’m writing.  It’s reader question Tuesday (I’m just going to give up and concede that sometimes I just do this on Tuesdays), and I’m answering a reader question.  This one came from the comments section of a previous post.

Would be great to see how that plays out…Erik consults Sheila to listen to Stan about shortening the company’s lead-time by reducing time to deployment. But especially the non-free parts of the same…how about a fictional account of the gig?

Alright, fair enough.  Let’s do it.  A fictional account of a gig.

Just a few things, before I resume indulging myself in writing fiction.  First, what I’m putting together here is essentially a composite of clients/gigs, with a few liberties.  Think of it as me interpolating a future gig based on past ones.  Secondly, don’t take this as any kind of blueprint for how you should go about looking for work if you’re a free agent.  It’s an account of the way things have gone for me, rather than an instruction manual.

The Introduction

Oh, so I don’t answer the phone.  I’m an intense introvert and, “hey, person I’ve never heard of, calling out of the blue, let’s chat,” isn’t in my vocabulary.  Clearly, I let it go to voicemail.

Hi, Erik.  This is Nick, from MisCorp in Phoenix.  I found a blog post that you wrote for ImpressiveCo about static analysis, and then noticed your Pluralsight course on the same.  I’m a dev manager, recently appointed to the role, and hoping that you can help my boss, Anne, and I, figure out why our team of developers is struggling.

Since I was in the middle of something when the call came in, I don’t listen immediately.  It’s a couple of hours later, after the workday is over.  And the first thing I do is to fire up Chrome and start googling Nick, Anne, and MiscCorp to get the lay of the land.  I’ll also probably go back and re-read the post in question, for good measure.  I do my homework.

The next day, I return Nick’s phone call.  We have a brief conversation, and based on his stated goal of involving his boss, we agree that it makes sense to schedule a call that includes her.

Read More