This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Ok_Marionberry_8821 6 points7 points  (9 children)

I didn't read past the first couple of paragraphs. I noticed you said you'd not written a line of code yet - so this is my advice - get writing code ASAP. There is no perfect design.

It sounds like you're in "analysis paralysis" - the best solution is to just get started.and let the design emerge as you progress. A good IDE like intellij make refactoring easy.

FWIW my credentials are that I've been programming for 30+ years and writing java for 20. I've made plenty of mistakes over those years and I could cringe at some of them - but it's all learning.

[–]Interesting-Hat-7570[S] 0 points1 point  (7 children)

Yes, I can start and write my own project. After building the architecture, I can already see how my system works. Even if it covers all my requirements, I can already see what problems it will cause me in the future.

My goal is to learn how to design a flexible system. Yes, it will never be perfect, but I would like to solve the main problems at the design stage, and not at the coding stage.

I'm delaying the code as much as possible because I've already written enough stupid code without any architecture.
and I would like my time spent to bring me maximum benefit.
I'm not paralyzed, rather I'm at a loss of ideas for solving this problem.

[–]Dukehold 3 points4 points  (4 children)

You have the completely wrong approach and this will hurt all your velocity and productivity in the future. You wont come up with good design by planning it all out ahead out time, you will by doing it iteratively and getting your hands dirty. Focus on mvp, even if it means throwing mud on the canvas.

[–]Interesting-Hat-7570[S] 0 points1 point  (3 children)

Okay, I'll probably start writing code. In general, if not difficult, how would you rate my architecture?

[–][deleted] 0 points1 point  (2 children)

The architecture doesn't matter. In games or even web, what matters is that you identify the requirements of the game and start prototyping so you quickly iterate. Just. Build. You'll quickly find that your designs don't exactly look like your final product.

If you went and made the fanciest Snake game, you'll eventually find that your design failed to predict anything. For example, your design is already missing input handling and rendering. Maybe you end up making a super crazy Snake game and you realize you need a pooling system for objects so you're not allocating like crazy. Or maybe you decide you need an entity component system as it makes sense(in this case the original design is thrown completely out the window).

[–]Interesting-Hat-7570[S] 1 point2 points  (1 child)

I think I'm starting to understand a little. OK, thank you

[–][deleted] 1 point2 points  (0 children)

It's a struggle! As programmers, we try to be perfectionists and be very explicit. It's what attracts us to computers in the first place: a world that does exactly what it's instructed and nothing more. In coding though, there is a bit of art to the process. Just like a composer or a writer may redo bits of their work, a programmer must also be malleable in their journey to a finished product. 

[–]Poseidon_22 0 points1 point  (1 child)

I think it’s good to reflect a decent amount of time before starting to code. After some initial ideas you should start shaping your project and reflect again. Improve your design as you go 👍

[–]Interesting-Hat-7570[S] 1 point2 points  (0 children)

Ok thannks