Post

I hate hearing the word ‘framework’ from any engineer. You can replace that word with ‘overengineer’ and you'll be right about 90% of the time. You don't have to make frameworks for everything! Stop making everything 'robust' and 'future proof' while the project is still being iterated.

10 reposts68 likes

I feel like frameworks are only useful once you need to abstract things for other people to use. Internally it's almost never useful to add this layer of abstraction. But when you want to create something that others can use, then it can become really helpful.

I sometimes refactor small parts of jam games into reusable frameworks if there's interest from other devs. The purpose then becomes to make it independent of the actual project it was made for. But that's also exactly why I wouldn't create a framework when it's only used internally in one project.

Often it's even more helpful, to others and, more importantly, your future self, to just have reusable self-contained components which you can quickly copy and adapt between projects, I find.

In cases where that's possible, definitely! Probably also depends on the point at which you call something a framework rather than a set of components. Either way, I think going for the least amount of abstraction that's needed is always a good idea

I have very specific cases for the word "framework," usually with design systems not made from scratch (Carbon, MUI, etc), and any process where I don't want to focus on methodology. "Framework" is sort of a catch-all when I'm trying to be agnostic regarding tools and services.

(Also I'm clearly not an engineer and your rant wasn't toward my role, but I did realize I have a particular use for the word you're talking about, and I've always thought it was a great place to use it, so feel free to tell me if you think that's a good use or not, because I am a little curious)

Former architect of very large, complex systems here (with patents to prove it): you really need to specify the realm you're talking about. Games are small, self-contained, iterate fast and don't have to be maintained, so sure. My systems? Your opinion is invalid to a fire-that-guy level.

> "Games are small, self-containted, iterate fast, and don't have to be maintained, so sure" I strongly urge you to read up games such as Fortnite and World of Warcraft, with millions of users and decades of live development, as they are 10x more complex than most backend corporate B2B architecture

Your indignation is noted. While Fortnight and WoW are impressive, my system was the local telephone network. We had... more users more LoC more complexity more legacy equipment and more time - decades more time - in market. But yeah - go ahead - prove you know about complexity.

Like building a framework so that players can fire off 5 abilities at the same time, and the game designers are still iterating what the gameplay will even look like! How much time are you wasting? Or making an entire animation system for feet on staircases: Will the game even have many staircases?

I think the bigger question here is why are there any code asks/tasks for these items yet? Either have them on downtime (that should be a thing) or working on things that have clear goals The foot ik seems more like R&D if anything. Can we add stairs to the game and up to a desired quality level?

This is one of the two all-time tradeoffs in engineering: Doing something big now to POTENTIALLY save later, or doing it quick now. With the other one being flexibility vs simplicity.

Instead, build an initial version of something, with throwaway code, see if it's any good with users, adjust it, do that a few times, and then when users are happy, and you think it'll be used many times in many places, you make a framework for re-use. But not any moment sooner!

This implies that companies generally have management that understands the importance of throwing away prototypes to make 'the real thing'. "But we can see the pixels on screen doing the thing we want; why throw it away? Just iterate on that and ship it!"

the more senior I get as a developer the more I've switched from Don't Repeat Yourself to Write Everything Twice, writing something a second time adds very little overhead but both reduces instances of unnecessary generalisation and also makes it easier to write frameworks when you need to

The exception is if you're using an engine or API that has an existing framework, such as GAS in Unreal. Please use that framework, and do not try to reinvent it! Make it do the work for you, and stick to it from the start, as it will be intertwined in all the other already existing systems.

When people are confused about why companies like Bungie go to such insane lengths to modernise their old engines, this is the #1 reason imo - their engine contains a proven gameplay framework that is capable of delivering some of the most exceptional titles in their genre. That‘s super valuable!

I think this happens because engineers see an interesting problem and jump on it. It's a problem that's fun to work on and figure out. It doesn't add value to the project, but it sounds impressive. Pitching ‘robust’ and ‘future proof’ is easy, but it's all smoke and mirrors.