A professional programmer recently joined my amateur game project. Didn't work out. Lessons learned.

I have worked with such developers, I always call them the "enterprise developers" in my head. One of my latest projects was a mobile app written in HTML5, I inherited this project from a previous team and the code was scary, I spent 30 minutes fixing 2 minutes bugs, it was a design-pattern hell, everything was a callback for everything with tens of functions all over the place, every single parameter was a constant defined somewhere else, every single process in code was part of something bigger.

I reached out to the old team and they explained how the whole app is customizatible through the "constants sheet", and how the whole code base is expandable, I just needed to plug new parts as lego bricks to the existing design. I know they had good intentions but the reality is the app was slow and broken and fixing bugs was taking a very long time and in some cases fixing a bug introduced a new bug, since I was the sole owner of the app at that point I did the opposite of what your friend did, I re-factored the app to get rid of most of those design patterns, I kept what made sense but removed the rest.

In many cases I had controllers code shrink from +100 lines of complex code to 10 - 20 lines of straight forward code, my whole focus was on clarity and getting it done, suddenly the app was much faster and more reliable and stable.

I'm not saying having design patterns is bad, I implement them a lot myself, but everything has its place, simplicity and readability are very important, I always approach problems with the easiest solution but if I feel something is not becoming easy I approach it while a design. When I was working on a game I followed this approach, enemies had a "hardcoded path" programmed into their scripts, when there was two types of enemies that was a simple approach to solve the problem, when we changed the game design to have 10s of enemy types suddenly this simple approach became a redundant task that's hell to maintain, so we decided to write a framework to handle enemy movement (And later on expanded it to handle all kinds of movement through the game).

/r/gamedev Thread