/home/rawley.xyz

Auto-Complete is Unholy

Auto-complete is a disaster. Not only has it turned most developers into code completing apes, but it also has pushed garbage languages into the forefront of the industry. I think Rich Hickey, the creator of Clojure says it best. " How can anyone memorize, or learn this interface? It‘s massive! Well the only saving grace is that . works in your IDE, so at least there‘s that", Auto-complete gives developers a sense of instant gratification, which compounds and causes the developers making languages and libraries to make their code incredibly muddy, bloated, and inefficient. Hickey is refering to the HTTPServletRequest in Java, which is supposed to represent a packet transfered over the wire. This should be a simple interface, but instead, since the developer of the interface is so used to using auto-complete, they most likely felt it was OK to turn the interface into a massive tar ball.

Most Java pros, would not be Java pros without the use of auto-complete. IntelliJ is a good example of what you don‘t want in an IDE. The IDE basically writes the code for you, you just need to steer it in a slightly correct direction. That to me, is not programming. It‘s like giving a artist a paint by numbers work sheet, sure you‘ll end up with something in the end, heck it might even look good, but did it result in any passion? Did the artist learn anything? Was it even worth doing?

A language that addresses these problems very nicely is OCaml, instead of the developer being invested in the interface itself, the developer is more concerned with the types represented by interface. Instead of relying on auto-complete to figure out the code for the developer, OCaml makes the developer understand the interface before they can consume it (via the strict typing). This in-turn makes OCaml developers better overall. OCaml is one of the best languages I have ever used, and it continues to impress me to this day. Other languages that address this nicely are Clojure, and C. Although I think most functional or procedural languages address this. Most "object-oriented" languages, think Java and C#, not Smalltalk, are so reliant on auto-complete that you‘ll be hard pressed to find a single developer that doesn‘t rely on it. This is a real shame, I can‘t imagine the bright minds out there, stuck writing auto-completed code, thinking to themselves "this is all programming has to offer". Some are probably okay with this, sort of like a weird form of programmer Stockholm Syndrome others may just give up programming and STEM entirely.

Anyways, if you want to be a better developer, stop using auto-complete. If your favorite language basically requires you to use it, that language is not good. You will find infinitely more enjoyment, passion, and excitement from another language. I‘ve written about 20 different languages in my life, and the ones that excite me most are: OCaml, Clojure, C, D, and Go. If you haven‘t tried any of them, go ahead, you won‘t regret it!

Quote of the Week: Programs are meant to be read by humans and only incidentally for computers to execute. -- Donald Knuth