Technical talent begets creative ability

Your limited creativity is driven by your sheer lack of technical talent, not by some innate personality defect.


Here's a hot take:

The reason you're not creative is because you have no technical skill.

Seriously. You suck at being creative because you have no ability to create. People have the spurious notion that creativity is driven purely by the imagination. What a load of crap. You can have the greatest idea in the world, but if you lack the raw technical skill to convey or produce that idea then you are left with a mere childish fantasy.

Don't believe me? Heres my idea:

I have this really unique and totally original idea to grow plants without roots, instead absorbing all of their nutrients from their leaves. This means we can take these plants everywhere and not have to worry about their genetic adaptions to soil and we can easily and efficiently industrialise food production.

First off, this was really hard for me to think up. I know jack about plants, biology or farming so I just stumbled around some fantastical ideas until I approached something somewhat reasonable. This was hard for me to be creative in because I know absolutely nothing about the topic either practically or theoretically.

Secondly, even if this was the most revolutionary idea of all time I have absolutely no way to make this happen. This isn't an idea, its just a fantasy whose zenith is bounded by my own ignorance and sheer lack of ability. I may as well have said "lets all grow wings and fly to other countries to help reduce fossil fuel usage". It sounds like an ill thought idea out by someone with brain damage because it literally is, and to even form this thought my stupid monkey brain had to latch on to what highschool biology it remembers to form something barely coherent.

Guess what champ: your monkey brain is the same as mine.

As a point of contrast its worth investigating the effect that at least some technical skill has. Case in point: this guy (me) and The Damocles Project. I'd never used Kafka before. I'd never used Kotlin before. I'd never used Micronaut before. I knew what I wanted to do and an event driven architecture seemed like a good fit. I'd done lots of message-based stuff via brokers like RabbitMQ and Erlang/OTP systems, but nothing will a full persistent log.

This system has a lot of data ingress from web scrapers. I've done a lot of work on this stuff at different points in my career using Python, but I refuse to use that language in general; however its html/xml parsing tools are still the easiest to work with by a country mile. Ergo, limiting my scope to a few well known tools made sense, and I picked way better tools I'd never used downstream for the heavy lifting.

In about 3 hours I'd set up a fully replicated system using Kafka, Python, Postgres and Micronaut. I had a few problems; one of which was fumbling with the Kafka bindings in Micronaut (Kotlin). I hadn't used Java since Java 7 and I'd never used Kafka, but with 10+ years of programming experience I dove into the source code and tracked what should be happening and saw what I was doing wrong in both a language and an architecture I had never used. My creative desire wasn't limited by my technical ability, and the challenges I had were small hurdles easily overcome.

Whilst looking at the Kafka serialisation format I had an idea:

  • use the key of a kafka message to represent resource identity, in this case a URL
  • use the body of a kafka message to represent the HTML from whatever page

As long as the records are persistent I now have an indexable-by-epoch time version control system. Now that I have an internal, temporal VCS and don't need to build one I can use them to track political fallout. That looks something like:

  • write a parser that looks for politicans names from their media resources.
  • run a rescan of those resources periodically.
  • link their "name visibility" across different channels over time
  • if they ever become persona-non-grata I expect to see their names drop off relative to legacy communiques. (this situation happened recently in Australia, [and will happen again])
  • to do this I'll mark each sweep/run with an identifier and I'll load this into a graph database, such as:
    • each node might be an article
    • each edge might be a politican name
    • you can filter all nodes and edges by the sweep id
  • this means you have a temporal snapshot of data showing links between parties, politicians and announcements.
  • as names are removed and shuffled those edges vanish, visually showing a shrinking graph of the politician with respect to the party
  • being a graph database these are nagivable and queryable, meaning we can can do things like compute mean time to public image removal across real life humans

I think This is a pretty interesting idea, and besides the inevitable devil in the detail issues I'll face, for me this is trivial to implement. I'm not some creative genius nor am I an uber1337 10x programmer, I'm just some guy with some idea for a feature. The feature is multistage and eventually consistent; and 5 years ago this would have been peak engineering for me; whereas now its just something that pops up whilst digging through git repos.

This is only possible because I have (some) technical skill. In ~3 hours I was looking at source code of a language I'd never used before, implementing architectures I'd never used before and was verifying results I'd never seen before. The intellectual freedom that comes from not being burdened by the actual process lets me create (or at least discern) important functionality that (as far as I know) exists nowhere else.

The take away is that this can be you. This can be you in whatever domain you want. I'm not special and neither are you. But before we create we need to learn to build. And this applies to all of us.

git gud.