Stories about Software


What Do I think of “Full Stack” Development and the DevOps Movement?

Once again, I’m doing reader question Monday on a Tuesday.  I have no good excuses this time, either.  We arrived last week in San Diego, which is beautiful.  So, I’ll just flat out admit that I spent the weekend strolling beaches, eating lobster tacos, drinking craft beers, looking up at the stars and just generally enjoying life in a way that involved no writing of blog posts.  I regret nothing.

So let’s to reader question Monday on a Tuesday.  This is actually a question that just came in today as I was gearing up to write about TDD and remote teams.  It caught my attention, so I’ll give about the fastest turnaround time I’ve ever done on a question.

I recently stumbled upon this article: https://jeffknupp.com/blog/2014/04/15/how-devops-is-killing-the-developer/

Which seems to lump Full-Stack dev in with DevOps, and discards DevOps, on the premise that the full-stack dev is good-for-the-org-bad-for-the-dev. I know you’ve weighed in against the full-stack dev with preference for specialization. I wonder if you believe this also means DevOps is DOE, or if there’s still room for DevOps in your mind (or perhaps more broadly speaking, for startup-like, feature-teams so often found in Agile/Scrum orgs)?

If you don’t like DevOps, what do you recommend instead to manage the entire release automation process, and everything else it entails?

Alright.  There’s a lot for me to work through here, so let’s break things up a little.

DevOps (And Full Stack) is Killing “The Developer?”

First, let me recap briefly the article’s thesis.  And I’m really going to try to be gentle here and non-objectionable.  I trade in blog posts for a living these days, and slugging it out with random people on the internet has worn as thin as it can possibly wear to me.  I’d really rather not argue with this Jeff Knupp, and I can certainly empathize with waging a vigorous campaign to make your own job more fun.

The article’s thesis is, essentially, this, from the perspective of a salaried employee in the enterprise.

I hate the DevOps (and full stack) movements because I like writing code and they result in me writing less code.

The author might object to this thesis, but that’s really the message.  It asserts the superiority of the software developer as compared to other individual contributor roles, and then argues that DevOps and full stack (and forced skill diversification in general) are good for the employer, but bad for the employee.  (Although he then curiously argues that it’s also bad for the employer, since they’re “overpaying” for non-development labor.)

Read More


DaedTech Digest: Code Quality, CI, Agile for Remote Teams

Happy Friday, everybody.  Time for another installment of the DaedTech Digest.  For those of you that haven’t seen these, it’s a round-up of five or six posts that I’ve written for other blogs.  And, on top of those, I also do “picks” ala many podcasts.

It’s been a wild and crazy week for me.  I wrote last week’s digest post from a hotel in Little Rock, Arkansas.  This week’s I’m writing from an AirBNB in San Diego, about 1,600 miles away.  Now, going from one city to another over the span of a week isn’t generally especially impressive.  But the catch here is that I did it by driving, hauling luggage, my wife, and my cats on an expedition to relocate for the winter until things get more pleasant in Michigan.

So it’s been an eventful week of sightseeing and driving.  But I haven’t let that stop me from getting back on track with DaedTech posts.


  • I don’t think I’ve done it as a pick before, so I’m going to throw The Four Hour Work Week out there.  Given that this book was one of the main sources of inspiration for our “relocate whenever we feel like” lifestyle, it seems appropriate.
  • A few nights ago, we stopped in El Paso, Texas and had a flight and some cactus tacos at the El Paso Brewing Company.  It’s a small brewery, but if you like craft beers, I highly recommend it.  They had a double IPA that was unlike anything I’ve ever tasted.
  • Speaking of travel, I’ll pick Marriott hotels.  Each of the last 4 years, I’ve spent 100+ nights in them, so I’ve obviously got a bit of experience.  Hard to beat the consistency and nice perks that are universal to any of their properties.
  • Mazapan.  This stuff is delicious.  If you can find it, get yourself some.

DaedTech Post Digest


A Career Guide for the Recovering Software Generalist

Since I’m kind of an old man, in college, they taught me C and its shiny new cousin, C++.  This was a CS program, so they didn’t ultimately focus on the language.  Instead, they went on to focus on the theory of things: algorithms, data structures, reasoning, and, well, computer science.  But they had to teach us just enough language for us to make sense of and apply those concepts.

So C/C++ it was.

My first full time programming job was a dream come true for the software generalist.  They had C and C++ both for me to work on.  But they had plenty of other language besides, and not a ton of manpower to spare.  So I learned Visual Basic.  And also PHP.  Oh, and Java.  (There were actually a few other things besides, but I think you get the point).

By the time I was about 4 years into the workforce, I’d switched my focus as the world moved toward web apps.  I’d gone from working on Linux kernel programming in C to Java web apps with Spring and Ant.  Fast forward several years, and I’d switched it up heavily again.  Java web apps?  Pff, that was so 2006.  I went to work for a completely different company, making a completely different product, and became a C#/WPF developer of desktop applications.

I was the consummate software generalist.

The software generalist is like this guy, who wears a chef outfit while painting and shooting a basketball.

The Software Generalist Source of Pride

I was proud of this, too.  If you’d asked me what I specialized in, I’d have said something like this.

My specialty is that I’m a generalist.  I live and breathe code.  Don’t care about your domain or your particulars and I don’t care about your language or stack.  I’ll be good anywhere, as long as it’s code.

If you’d pressed me on the specialty point, I might have conceded a little.

Well, I guess my specialty is object oriented programming.  Yep, if you need inheritance, encapsulation or polymorphism, I’m your man!

These days, assuming you read this blog with any regularity, you probably know how ruefully I tell this story.  I’ve written how free agents can stop generalizing and about the idea of niching down.  I’ve given advice for free agents to specialize.  But today I’d like to double down on this advice by offering it to salaried folks and not just freelancers.  You should specialize.

Read More


The Resignation Counter Offer and the Danger It Presents

It’s been a bit since my last reader question Monday post.  But, hopefully you can forgive me.  The last two Mondays were Christmas and New Years Day, so I was a bit distracted.  Let’s get back to business today, though, with a reader question about the counter offer.

Buckle up, because this is a pretty infuriating tale.

I have a coworker who had an opportunity to go to a new company/job where he would have received a major promotion and raise. When he told his current boss about the opportunity, his boss countered by offering him an equally major promotion and raise.  So he decided to turn down the other offer and stay at his current job.

However, once he turned down the other offer and told his boss he would accept the counter offer, his boss came back and said that for “logistical reasons” he couldn’t do a major promotion and raise right now. His boss offered him a small raise and token promotion for staying and said that they would “re-evaluate the situation in 6 months”. Have you seen this type of bait-and-switch tactic before?

Okay, I can actually answer the question pretty simply.  While I’ve seen a lot of things in my travels, I’ve never actually directly seen this.

But I think the real question here is less whether I’ve seen it or not and more about my take on it.  So let’s take a look at that.

The Employment Counter Offer

First of all, let me set the stage a little just so we’re crystal clear on what’s going on.  This bit of back and forth between the person in question and his employer centers around the idea of a counter offer.

You go out and do some interviewing while gainfully employed.  One of these interviews bears fruit, and you find yourself with an offer in hand.  With that offer, you resign from your current post.  But your boss counters with, well, a counter offer.  “Tell you what — we don’t want to lose you, so we’ll match their offer to keep you here.”

Here be dragons, though.

Here be dragons, like this one, when you accept a counter offer.

I’ve offered my opinion on counter offers before, but I’ll recap here briefly.  You shouldn’t accept counter offers.  If you work with a recruiter, a recruiter will tell you this emphatically and cite tons of reasons.  This is because every time a developer accepts a counter offer, a recruiter loses his wings.  Or, wait, I mean his commission.

But it actually is a pretty bad idea for you, recruiters notwithstanding.  The counter offer comes from you having temporary leverage.  It’s generally the employer’s least bad short term option, but it doesn’t age well because you’re now in a role and earning an amount of money they don’t really think you deserve.  It’s probably the last promotion you’ll ever earn there.

So the first issue I have here is actually with the apparently aggrieved party.  Accept counter offers at your own peril.

Read More


DaedTech Digest: Monitoring and Agile Transformation Anti Patterns

Alright, I’ll admit it.  I’ve violated the cardinal rule of blogging for the last couple of weeks, and I’ve not shown up here.  I hope you can forgive me.  (At least I’ve avoided charges of hypocrisy by posting to the Hit Subscribe blog, thereby avoiding failure to show up in a place where I give blogging advice.)

Anyway, two weeks ago was the holidays and family, and this week is travel.  My wife and I are on a week-long cross-country driving odyssey from Michigan to San Diego with some stops and some visits sprinkled in.  I’m making this post from a hotel in Little Rock Arkansas.

Still, though, I’ve at least managed to do a DaedTech digest post every week.  And I’ll keep that streak alive today.  Oh, and I will get back to making regular posts again, so no worries.


  • I’m going to be talking at a remote conference in a few weeks.  (More details later)
  • For Christmas, I received an Echo Show, which I’m really enjoying so far.  Think of Alexa, but with a screen.
  • If you’re in the market for a pair of headphones and you don’t mind spending some money, check these Bose headphones out.  My wife got them for me for Christmas, and they are awesome.  Extremely comfy, noise-cancelling, great sound quality, Bluetooth sync with your phone (or anything).  And they come charged out of the box.  I’m not an audiophile by any stretch, so it makes me being amazed by them all the more telling.
  • Finally, I’ll pick my Jeep Grand Cherokee.  Driving between Chicago and my place in Michigan brings us through a miserable band of lake effect snow.  I’ve made that drive twice during the holidays.  Then, yesterday, I drove through that same region and into the start of this blizzard cyclone bomb thing.  And, through it all, the Jeep was a champ in the snow.  Also, this kind of crap is why we’re heading somewhere warm for the winter.

DaedTech Post Digest

  • I wrote a post for QA Complete (SmartBear) about understanding test case management.  Think managing QA-style testing, rather than anything related to unit tests.
  • A little over three months ago, I announced something I called the “singleton challenge” for the NDepend blog.  This was an announcement/preview of a new line of posts I’m doing over there where I do empirical studies of the properties of codebases.  In this case, the idea was to put some data behind a post I’d written suggesting that singleton usage has a variety of negative effects on codebases.
  • For Scalyr, I wrote about different types of server monitoring software.  What might you want to know about your code in production?
  • On the SubMain blog, I wrote about how code comments and documentation aren’t the same thing.  Anything you stick in the codebase with a couple of whacks in front of it is a comment.  But that doesn’t mean it’s documenting anything (or even helping).
  • Here’s kind of a fun one.  For TechTown, I wrote about agile transformation anti-patterns.  I’ve seen a lot of different companies trying to “go agile” and there are distinct issues that emerge as somewhat universal, or at least common.
  • Finally, I wrote a post for Rollout about how you can use feature flags to go from architectural monoliths to a microservice architecture.