I highly recommend Righting Software. It goes in to a methodology for estimating work that has worked really well on two projects that I've worked on so far. There's a lot in there but the main things in my mind is: accuracy is better than precision and always assume you underestimate. There's ways of including that uncertainty in the plan in the form of "float." Also, we only estimate on the scale of weeks. If something feels like it will take two days, we call it a week. In the end, something bigger will take longer and those extra few days catch it
My team has been using methods from Righting Software and our estimates have been far more accurate for our last three projects. We found that measuring anything at less than a week was pointless as it introduced too much room for error.
That would have been the reasonable approach but that commonality wasn't captured in the business domain language. There was also the problem that these three products were nested inside of one another. ProductX
contained instances of ProductY
and there were business rules around handling that nesting. So extracting out those commonalities was difficult while maintaining those nesting rules. If I had to do it again following a similar paradigm, a common base data type and a restructuring of the nesting logic would have helped some.
What we did is re-evaluate our entire system. We found that our abstractions could not absorb change easily so we took a fresh look at how we could make it more flexible. We took the lessons we learned from <u>Righting Software</u> and captured our areas of volatility in to separate modules. It turns out what we truly need is a more generic graph-like system to manage relationships between "products" and other data.
We've written a new system using this more generic approach and it has been like day and night. We've already absorbed some pretty substantial changes with this new approach. The problem though is that we haven't reached full feature parity with the old system. So we're in the process of strangling the old system in favor of the new system. We're getting close but we would already be done if we hadn't tried to write everything in strict domain language in the first place.
Meh, most $1,000 courses aren't worth it. People figured out that they only need to sell 1000 of these expensive courses to make a million dollars and when they copy/paste all these marketing hype themes with limited seats and "$5,000 value!!!!!" bullshit it becomes significantly easier to find a mere 1000 people from the entire world. These are usually done in hopes of getting rich quick.
Best case usually they have 5-10% unique content that's worth it but most times it's just like any other course or even recycled content in a different format.
If you're interested in Programming Architecture, do yourself a favor and get Righting Software. Learn from one of the industry leaders, who hasn't missed a deadline in over 20 years, who's been doing this for even longer and has worked with top companies like Microsoft and more. His techniques have been proven and taught to tens of thousands from his book and in-person master classes. If you're new though this shouldn't be your first step as it's significantly more advanced.
Learn C# and Unity thoroughly instead. Udemy is a great place for this as well as people who post actual quality content and aren't just spamming random videos, like Sebastian Lague. If you're familiar with programming get courses off Udemy like RPG Core Combat Creator, RPG Shops & Abilities, Dialogue & Quests, Inventory Systems (go for the features you'll be adding to your own game). You'll want intermediate to advanced courses that teach you how to structure your code and create more advanced systems and how to get them to work together without everything turning into a giant, spaghetti mess. Even if you follow these courses just for the experience, it's worth it.
Having said all that, it is genuinely not worth it nor is it recommended to go for that course. Best of luck
Honestly, I kept trying to re-create solutions from other people until I got the hang of what it takes to break things down.
Only thing I can help with understanding is the concept of building a tool, or a system.
A tool can do its one purpose, with varying levels of quality. Is it a command line audio player? Or is it a calculator? Does it search text in a file? A set of defined inputs and outputs.
A system, is like building your own language on top of another language. You use this new language to then build what you actually want/need. For example a CRUD application, the concept doesn't explicitly exist in C# (ignoring MS libraries for db work etc,.). You are adapting the Idea (CReate, Update, Delete) and using C# to implement it. Then on top of that is the "what" ... is it a CRUD application for a ToDo List, Phonebook etc,.
I was honestly very lucky that I started my career from working desktop IT work. That forced me to interact with end-users, and they came to me with lots of problems. Most of the time I could fix within my control; other times it was ... you know what, the computer doesnt have the software to do what you want to do. It would have to be invented in order for it to exist to help you. [Separately, I made the mistake of trying to solve these problems for free, but thats another convo]
I personally really enjoy the book: https://www.amazon.com/Righting-Software-Juval-L%C3%B6wy/dp/0136524036
Maybe you'd get some mileage out of it.
I found Righting Software by Juval Lowy a great resource: https://www.amazon.com/Righting-Software-Juval-L%C3%B6wy/dp/0136524036
Its not about the exact technologies of a software project, but the actual breakdown of the application requirements into a design that will work, and then the other half of actually building that application as designed.
Adding on to this. I like listening to any book while riding my bike, that I found the epub version of Juval Lowy's book Righting Software since there is not a audiobook version of it. https://www.amazon.com/Righting-Software-Juval-L%C3%B6wy/dp/0136524036
And crunched it through a Text-To-Speech reader, so I could play it at like 2x speed.
I'm not pushing the book, but if your interested here's the amazon page: https://www.amazon.com/Righting-Software-Juval-L%C3%B6wy/dp/0136524036/ref=sr_1_1?dchild=1&keywords=The+method+idesign&qid=1609447708&sr=8-1