I ran across a twitter comment about custom software development undergoing some sort of resurgence, which linked to this rather pedestrian article on the topic which I think misses the point a bit.  I have no factual quibbles with the article as far as it goes.  But the tradeoffs in custom software today are not strictly “buy or build” because in virtually all cases no one “builds” 100% anymore.

Today people are finally waking up to the tremendous leverage provided by development frameworks (Ruby on Rails, ASP.NET MVC, Django and so forth) — as well as traditional libraries, which are ever simpler to plug into projects and manage, thanks to the advent of package managers.  I am finally seeing fewer religious wars over languages and more over frameworks and perhaps IDEs.

But it goes still further.  Cloud service APIs as well as app containers like Docker also contribute to faster bootstrapping of new “custom” solutions.

The truth is that “custom” software is increasingly crafted from lego blocks that are already finished.  When I started in this business I was writing low-level keyboard input routines to get just the effects and control that I needed in a desktop app of that era; and I recall writing my own assembly language printer driver at one point, too.  This kind of low-level bit-twiddling would never even occur to custom software developers today.  Nor should it have to.  The craft has matured.

Even the tools for automating tasks at the system level are far more capable and robust.

In the old days a client would come to me desiring a custom accounting package for, say, their paddle boat manufacturing business (this was actually one of my clients from the 1980s).  Even then I would approach it by licensing a generic accounting package and modifying it to their needs (though to properly maintain it in sync with the original software vendor’s constant improvements, I ended up using a custom code preprocessor).  But today I might well use an off-the-shelf accounting package and write some workflow and glue code to modify it and seamlessly integrate it to their business processes.  It is not necessarily true that purchased commercial software is “too rigid”.  Maybe it is too rigid out of the box, but if designed with integration and customization in mind it can be quite flexible in the hands of a skilled coder.

For all these reasons, I encourage even small businesses to consult with someone capable concerning how customizing can benefit them and contribute to their bottom line.  Perhaps a small business that doesn’t need to scale much won’t use a lot of customizing, but I can imagine that many of them can still benefit greatly from some small, judicious use of a custom software developer’s skills.


The IT Wall Of Denial

by bob on March 11, 2015

One of the character traits that separates okay developers from great developers (or for that matter, okay sysadmins from great ones) is the amount of ego they have mindlessly invested in Being Right. [click to continue…]


The Most Overlooked Skill in Software Development

September 25, 2013

No, it’s not Agile methodologies, Ruby on Rails skills, or Test Driven Development.

Read the full article →

On Not Knowing Until You Know

December 25, 2012

I’m reading Extreme Programming Refactored:  The Case Against XP from Apress Books.  I have to confess that although I generally regard XP as an off-the-rails over-reaction to the perceived shortcomings of traditional software design and specification methods, I have some affinity for the XP concept that “the code is the design” — in this limited sense:  in […]

Read the full article →

On Professionalism

December 25, 2012

In software development, there are — how to put it delicately? — prima donnas.  It’s always been that way, but this year I’ve had more than my share to deal with, and it’s moved me to reflect on the nature of professional conduct.  What, exactly, constitutes “professional conduct” in this field? Accusations of “unprofessionalism”, after […]

Read the full article →

Connecting to a Mirrored Sql Server Database With No Failover Specified

March 10, 2012

I was testing a new development tool today that connects to remote servers using a proprietary connection string builder that doesn’t allow you to specify a failover server.  Since I was connecting to a mirrored database I was curious what the implications were for not specifying a “Failover Partner” in the connection string. The answer […]

Read the full article →

On Solutions Looking For Problems

March 8, 2012

Microsoft has now made Windows 8 and its Metro touch interface available for us all to look at and Neil McAllister over at InfoWorld isn’t mincing words.  He’s calling the Metro value proposition for developers “a con”.  His fellow columnist J. Peter Bruzzese calls it Windows Frankenstein.  Meanwhile Visual Studio 11 is getting a lukewarm […]

Read the full article →

On Usability

March 2, 2012

It’s spring, when many US citizens not only have to cope with figuring out their income taxes, but if they have college-bound or college-age children, learn that there are things worse — far worse — than the dreaded Form 1040. I’m speaking of FAFSA and related “now you have to dance for your money” applications […]

Read the full article →

On Intuition

February 28, 2012

We techno-geeks like to think that we make all our decisions based on dispassionate evaluation of empirical facts, but there are times when things just don’t pass the sniff test. I’ve been in this game for nearly 30 years and my sniffer sometimes smells that “off” quality of the air in the IT fridge in […]

Read the full article →

Fixing an OutOfMemoryException on a DataTable.NewRow() Call

October 12, 2011

Few things were less expected by me yesterday than the out of memory exception that was suddenly being thrown by very mature code that had functioned pretty much unchanged for about five years.  Especially when the offending line of code simply created an empty DataRow with less than two dozen columns.  What, I thought, could […]

Read the full article →