Kotlin has given us some really killer features. Some are obviously useful (null safety), while others come with a warning, like operator overloading and extension functions. One such ‘handle-with-care’ features is the language support for delegation. It’s easy to grasp, quick to apply and the manual literally takes half a page. Continue reading “Elegant delegates in Kotlin”
In my previous post I explained how software anti-patterns are symptoms of bad habits that can be endemic to entire teams. Today I want to talk about what is perhaps the most infamous of all: the Golden Hammer. Actually, it’s a collection of hammers that makes up the toolbox from hell.
The Golden Hammer anti-pattern is a result of narrow focus, which in itself is an admirable and even necessary character trait for many pursuits: there’s a lot to admire in people who become experts in their chosen specialised field. It takes dedication and stamina. Science wouldn’t have made it to its present state without it. However, what makes a hammer golden is having experience and affinity with a technique (framework, language) that in itself has a limited range of applications but that you misapply through overuse. Continue reading “Anti-patterns part 2: Coding is the biggest Golden Hammer of all”
There are plenty of learning resources on software best practices. Sprinkled in between all the well-intended advice are warnings about common pitfalls. We could do with a lot more of these warnings and think about why we keep doing the same things wrong. What makes anti-patterns so irresistible? Continue reading “When anti-patterns become a pattern”
Several newspapers recently reported about an AI program developed at Stanford University that claims to predict sexual orientation from portrait photographs. Is it any good? Apparently it has better hunches than humans, but it still produces a fair amount of false positives. The designers claim 91 percent accuracy once test subjects are more outspokenly gay. What’s that supposed to mean? Is the gold standard a 1978 Freddy Mercury in his leotard singing Good old fashioned lover boy? Continue reading “An AI gaydar? What were they thinking of?”
There are things a programmer needs to know, no excuses. There are things you can’t possibly all remember, so it’s fine to look them up when needed. There is the business domain the software touches on that you need to know. And then there’s knowing how to grapple with quirks that come from not doing things in a standard way; the most useless knowledge of all.
Throughout history humans have developed skills and then invented tools to perfect the execution of those skills. A lathe can make cuts straighter than any skilled carpenter could make with a hand saw but it doesn’t replace the carpenter. Meanwhile other innovations have made entire professions obsolete through competing technologies. The centuries-old craft of typesetting has been effectively killed off by word processing and laser printers; not by a typesetting robot. Mind you that the difficulty of mastering a craft says little about its likelihood to be mechanised into oblivion: there’s still plenty of vacancies for human dishwashers. Continue reading “The most useless knowledge of all”