Evil Wizards

The next section starts of with a really great insight. David and Andrew say that:”There’s no denying it—applications are getting harder and harder to write. User interfaces in particular are becoming increasingly sophisticated.” Hahaha this was true, is true and will for ever remain true. Software is darn hard, especially interfaces since they keep evolving very quickly. So what do we do about this.

David and Andrew make the case that some very difficult systems are basically generated through some wizard. We rely on what the software gods encoded in wizards that generate code, infrastructure, UI or other components. I think a great example is these generators on the web to create react apps right? You go through some wizard to configure the css style and important parts of the tech-stack. In the end it poops out this repository where al your options are combined into a running project. I think this might work for small projects on the side, but good luck using that for your multi-billion dollar tech giant company. I don’t think it will be really useful. Especially when you are just getting started and you have no idea what so ever of what the thing just cobbled together for you. You might have followed some tutorial on youtube where the guy or girl give some tips on how the generate the ‘best’ one.

And this is exactly what David and Andrew mean by “Evil Wizards”. These wizards generate code, which is great to get started with but once you outgrow it you need to adapt it. Many times, this will lead to issues since you have no idea what’s going on. Generated code is often very obscure, cryptic and optimized for performance. This means the code is not readable or at least very hard to follow and understand. So unless you actually understand the code that’s being spit out you will end up like Fred. You will be programming by coincidence. Poor Fred…

This is not to say that Andrew and David are against wizards and as a matter of fact, you probably remember the episode where we talked about code generators a while back. The point they want to get across is that, if you use a generator and you don’t understand ALL the code it produces you will not be in control of your program. You wont be able to maintain, extend or debug it.

This is exactly the problem I have with this upcoming trend of low-code solutions. We see a lot of this in the gaming space of course, but it’s also really penetrating in the business realm as well. As a matter of fact: the Gartner trend analysis puts low code development technologies still as a growing technology. I really despise this stuff. Remember the days when people thought vendor lock in was a bad thing? Because that;’s basically what they are doing. If you entrust your entire business process on some low-code drag and drop magic you are locked in for ever. There is no global standard for such systems so good luck porting it to another vendor when the prices are janked up 500%. This is an inevitable scenario. It will happen! Trust me.

And are Evil Wizards and low code solutions related. I think they definitely are. The people writing these apps, which are mostly business people since its marketed that way, have no freaking idea what the hell the code is doing.

So what about all this visual scripting being done in game engines. I’m not a big fan of this either. I think a lot of developers have experienced a major melt-down when Unity annouced their run-time fee. My “code” is all tangled up I in this visual scripting tool, oh nooooo. We can’t change engines. We’re fucked!

Now, I understand that changing your game engine from Unity to Unreal of Godot is a massive undertaking and I don’t want to down-play that. But if you have written your code in a clean way, decoupled of unity engine logic in a nice agnostic way, you should be able to compile your c# code down into dll’s and use that in c++ with Unreal or Godot. You will have to write your UI layer again of course.

So be very careful with evil wizards! Don’t use them if you don’t understand them! The same goes for AI by the way. When you use something like ChatGPT or Copilot to generate you a bunch of code, make sure you understand it. If you don’t just ask it to explain it to you and do some research of your own because these AI’s are not perfect, at least not yet. But I would say that AI code generators could be the next form of what David and Andrew describe as evil wizards.

David and Andrew say that, using some wizard, that some expert software guru wrote, doesn’t make average Joe an expert developer. And I couldn’t agree more.

David and Andrew also note that some people think their opinion of wizards is an extreme one. Because developers rely on things they don’t fully understand all the time. Do you really understand what is going on at the chip level for example? And, Andrew and David of course agree with those statements; yet there is a very important difference between such examples and what wizards do; The code generated by wizards are part, they are integrated, into the software that Fred, average Joe and you and me are writing. They have profound impact if we cannot understand what’s going on. No one should be producing code one does not understand.



01010010 01110101 01100010 01100101 01101110

Hey, sorry to bother you but you can subscribe to my blog here.

Never miss a blog post!

You have Successfully Subscribed!