Author Archives: Graham

About Graham

I make it faster and easier for you to create high-quality code.

Product teams: our products are not our products

Woah, too many products. Let me explain. No, it will take too long, let me summarise. Sometimes, people running software organisations call their teams “product teams”, and organise them around particular “products”. I do not believe that this is a … Continue reading

Posted in architecture of sorts, Business | Leave a comment

Mapping software engineering tools

Despite the theory that everything can be done in software (and of course, anything that can’t be done could in principle be approximated using numerical methods, or fudged using machine learning), software engineering itself, the business of writing software, seems … Continue reading

Posted in architecture of sorts, tool-support | Leave a comment

More speed, lower velocity

I frequently meet software teams who describe themselves as “high velocity”, they even have graphs coming from Jira to prove it, and yet their ability to ship great software, to delight their customers, or even to attract their customers, doesn’t … Continue reading

Posted in Business, performance, process, software-engineering | 4 Comments

Figurative Programming and Gloom: the [G]raphical [LOOM]

Donald Knuth is pretty cool. One of the books he wrote that I own and have actually read[*] is Literate Programming, in which he describes (among other things) weaving program text and documentation together in a single narrative. Two of … Continue reading

Posted in tool-support | Leave a comment

Two books

A member of a mailing list I’m on recently asked: what two books should be on every engineer’s bookshelf? Here’s my answer. Many software engineers, the ones described toward the end of Code Complete 2, would benefit most from Donald … Continue reading

Posted in books, OOP | 1 Comment

Packaging software

I’ve been learning about Debian Packaging. I’ve built OS X packages, RPMs, Dockerfiles, JARs, and others, but never dpkgs, so I thought I’d give it a go. My goal is to make a suite of GNUstep packages for Debian. There … Continue reading

Posted in tool-support | Tagged | Leave a comment

Concurrent objects and SCOOP

Representing concurrency in an object-oriented system has been a long-standing problem. Encapsulating the concurrency primitives via objects and methods is easy enough, but doesn’t get us anywhere. We still end up composing our programs out of threads and mutexes and … Continue reading

Posted in code-level, OOP, performance | Tagged | 1 Comment

A little challenge

A little challenge today: create a JS function that turns its arguments into a list of pairs. Actually, the brief was “using Ramda” but I ended up not doing that: function basePairwise(xs) { if (xs.length == 0) return []; if … Continue reading

Posted in FP, javascript | Leave a comment

Ultimate Programmer Super Stack: Last day!

I already wrote about the Ultimate Programmer Super Stack, a huge bundle of books and courses on a range of technologies: Python, JS, Ruby, Java, HTML, node, Aurelia… and APPropriate Behaviour, my book on everything that goes into being a … Continue reading

Posted in advancement of the self, books, edjercashun | Leave a comment

Coming to terms with fewer terms

I was on a “Leadership in Architecture” panel organised by RP International recently, and was asked about problems we face using new techniques like Microservices, serverless and machine learning in the financial technology sector. The biggest blocker I see is … Continue reading

Posted in software-engineering | Leave a comment