September 21st, 2024

The Age of Software Artisans

The article highlights a shift towards "software artisans," emphasizing personalized coding, the evolution from machine code to user-friendly software, and the importance of continuous learning and adaptation to AI in development.

Read original articleLink Icon
The Age of Software Artisans

The article discusses the evolving landscape of software development, suggesting that we are entering an era characterized by "software artisans." The author reflects on the history of programming, contrasting the past, where programming was done in machine code, with the current trend of user-friendly software. The notion of software artisans implies a return to a more hands-on, personalized approach to coding, akin to crafting furniture. The author encourages developers to embrace their passion for coding, continue learning, and adapt to new technologies, including AI, which may not fully replace developers but rather change the nature of their work. The piece concludes with a personal commitment to continue coding for enjoyment while adapting to professional demands.

- The concept of "software artisans" signifies a shift towards personalized and hands-on software development.

- The author contrasts past programming practices with modern user-friendly software.

- There is an encouragement for developers to enjoy coding and continuously improve their skills.

- The impact of AI on software development is acknowledged, suggesting it may change rather than replace developers.

- The author expresses a commitment to adapt to changes while maintaining a passion for coding.

Link Icon 17 comments
By @mustache_kimono - 4 months
I'm going to be a little negative, so please bare with me.

The world needs artisanal programmers like it needs artisanal attorneys. See: https://www.mcsweeneys.net/articles/i-am-an-artisanal-attorn...

    How is an artisanal attorney different from any other attorney? Like other artisans, I pay close attention to my ingredients and process; I am intimately involved in all stages of creation. Other attorneys print their documents on paper they buy in mass-produced boxes, tens of thousands of sheets at a time, using ink that mechanically jets onto the page. I make my own paper by hand,...
This article is so similar to this satire I couldn't believe so many commenters were taking it so seriously.

If you are new to programming, this is a mostly ridiculous notion which plays to your vanity. While admiring your reflection, be careful not to fall, face first, in the pool.

Now, how do I know? Because this isn't the first time I've encountered this idea. Jonathan Blow, in his own way, has been making the same silly argument for years. As I've said before -- his frame of "programmers were real men once" makes each video/rant seem both one note and self aggrandizing.

For him, it seems to be a marketing exercise, but also an intellectual muddle, which with one breath tells you to romantically forget this is an engineering discipline, with economics and tradeoffs and constraints and compromises, and with the next, which actually helpfully(!), tells you about physical constraints of the machine. See: https://en.wikipedia.org/wiki/Data-oriented_design

The problem as I see it is that Blow and Muratori are half right about most things. They're almost always right about the particulars of programming (strict OOP patterns and "Clean Code" aren't great for performance). It's their frame that "civilization is in decline" (or "programmers were real men once" as here) that is wrong/catastrophic. Civilization simply has different priorities than game engine priorities (performance is a constraint, but not the primary constraint of most software).

By @vijucat - 4 months
Artisan is not a bad metaphor. Take furniture. There's a place for IKEA, and there's a place for expensive, hand-crafted Scandinavian furniture.

https://www.scandinaviastandard.com/this-is-why-that-sofa-is...

By @interstice - 4 months
My 10,000 hours are well behind me and I build web apps a bit like this. Previous jobs are like a shed full of parts that will get 60% of the way there, and the rest is making a couple of custom parts and a lot of fettling. Sometimes I build a table from scratch just to remind myself I can.
By @boricj - 4 months
Artisans can make objects out of raw material, but they can also take apart objects to reclaim raw material. Software engineering tends to only ever do the former, because traditional toolchains are a one-way street from source code to assembly code to object files to programs.

That article rings very differently to me because of the tooling I've developed. With the ability to break apart programs into object files and reusing them to make new programs, I can do the latter. In a sense, using both pristine source code and second-hand binary code to make programs is as artisanal as software development can get.

By @jairojair - 4 months
Hi folks!

I really didn't think many people would see this post, thank you for the comments and discussion.

The central idea is that technology is cyclical, new tools will emerge and the way we work will change.

However, in my view, using tools doesn't make you less or more of a craftsman; creating something different from mass production does.

In a world where everything is very similar, websites are copies of each other, every new startup has the same color palette, creating something with small flaws, but different, is a distinguishing factor.

Perfection lies in imperfection.

Keep coding!

By @jagged-chisel - 4 months
I have attempted, in vain, to bring this kind of thinking into the companies and teams that I have worked with. They don’t want it.

And in interviews, no one wants a Software Artisan. The cynic in me says that it’s because people want the job security of the typical bullshit position and don’t want anyone upsetting that.

By @at_a_remove - 4 months
"Artisan" is covering a great deal of ground.

At a previous job, probably fifteen years ago, we were replacing one bit of niche software (the company was gone, it was unsupported, and it had some very antiquated methods of ingestion, like faxes) with another, mostly similar bit of software. Continuity was desired.

Different philosophies went into structuring the two databases, so it was like lifting a vast set of webs made by social spiders from one tree and placing it on another, just for the data import. I interviewed various people who were in different roles as to how they they used the old system. I checked the databases to see what they did not tell me about how they actually used the system. I scoured over the incoming data feed sources and made robust ingestion processes, validating and correcting and logging. Knowing the vagaries of software vendors, I wrote bits to detect changes made by vendors to the database structure, or at least the portions I cared about, and whine when those occurred. I grokked how the several different roles people had in interactions with the system led to differing needs and desires, incorporating as much of how things "used to work."

The eventual juggernaut which resulted was something of a force of nature, a compilation of my best thoughts on my best days, outperforming me. It would tell you if a new type of data appeared which had not been announced, whom to ask about this data, and where to put it. It functioned for a decade of my oversight, occasionally murmuring that it wanted this or that, but without changes to the code.

That was the artisinal bit to me, that it was carved to fit some very exacting spaces, such that you hardly knew it was present. Yes, it took extra time. Yeah, it was just me. But the fit was tight and the finish was smooth.

(Naturally, some bright spark got a touch of the New Broom Syndrome and blew it and all of the documentation away after I left, I am told that there are continual complaints about the system now. Sadly, with even minimal prompting, the various tiny details arose from memory, prompted by the SMS messages.)

By @mlinhares - 4 months
I might just be at a very different environment but the usual basic software discussions (class design, database modeling, architecture) are mostly irrelevant as there’s always some premade thing I can use to do the job and most of my time is either making sure requirements are clear of that the teams are aligned on their deliveries.

I think 10 years ago I cared a lot about this whole software artisan thing, nowadays I’m happy when stuff gets to prod on time and doesn’t cause large scale incidents. I wish I could have these problems and spend time discussing what the best architecture is or what class design is the best

By @jumploops - 4 months
Everyone is saying that LLMs will kill programmers.

The author here has the right idea, and the correct historical context to back it up.

Generative AI will 10x (at least) the number of people that program computers, but that programming will look different than it does today.

Gone are the semicolons and curly braces we’re so used to, just like BEQ and JMP before them.

Truly gone? No, the next Rollercoaster Tycoon has yet to be built :)

By @jauntywundrkind - 4 months
I sure hope we can get to a happier software harmony, of enjoying code and systems.

One of the recurring trends thats cropped up is so called barefoot developers, folks just cobbling together some kind of task not for big industrial software with millions or even dozens of users, but just because it makes their lives or a small group of people's lives better.

Maggie Appleton recently followed up with a post saying that these are the folks ML/LLMs might best be able to help. To get them their stuff. https://news.ycombinator.com/item?id=40633029 https://maggieappleton.com/home-cooked-software

But I also have this feeling, that almost all the webdev we do is artisanal handcraft as is. We hand author endpoint after endpoint for our objects even though there's this high degree of similarity across endpoints; authorize/validate the request, do the thing in the db, return it to the user.

Part of me is sick as shit of just how artisanal software is; it stinks like rot that we keep cranking out more piles of code for each entity & as we intricate/complicate/embellish each entity/resource. We so rarely have broader high level systems where we've escaped from hand crafting web server middle tier glorified-translators of a very basic 3-tirr client-server-db architecture.

I just want companies to pay me to tell them how much less they could do, if they let me PoC their system in something ordered & higher order, such as Hasura. Like CORBA, the UML world also has great scorn as unmaintainable, but again it's like, those folks felt on to something amazing & mighty & we have immense unsurvivor anti-bias, we are pat & confident that this tower of babel built too high & all future towers too will fall & that the effort is folly.

But man, the chaos & lines of code we have been creating as an industry is just so unnecessary & so out of control.

By @lttlrck - 4 months
At what layer of abstraction are you no longer an artisan? Or doesn't it matter?

It's a nice "label" but it's a bit murky what it means the farther away from machine code (the raw materials) you get. Are you an artisan if you use an IDE?

I do enjoy the sentiment however.

By @foobarbecue - 4 months
I would like to thank this website for reminding me to drink water.
By @slowhadoken - 4 months
That’s what I’ve been working towards, even despite recent trends.
By @boredtofears - 4 months
Ive always thought that software is a lot more of a creative expression than we give it credit for. As much as we try to think of it as an engineering discipline, code exists primarily to communicate to other humans before machine. There’s a lot of humanity in writing and reading code and therefore a lot of ways to observe art in it.
By @lifeisstillgood - 4 months
Agreed (in fact my profile claims I do artisanal software :-)

But I go further - software is a form of literacy, and everyone should learn to code, just as at some point we thought “hey laws are written down, novels are great, policy manuals and international letters help, let’s teach the peasents to read” and all of a sudden we have working class people going to university and discovering things like Relativity and Covid vaccines.

Software is literacy and we will all benefit when we can run / examine our society through it.

Book to follow