How to prepare a larger coding project?

Hi folks,

I am a hobbyist, with very little intention to turn coding into my career. Nonetheless, I am not too bad, have designed and programmed a couple of applications mainly in the medical field (some lab stuff for family members) and I know my way around arduinos and pis. Without a proper sparring partner, my software tends to develop “organically” until it reaches a point where maintenance is becoming challenging.

I am preparing a larger coding project right now and I’d like to get advice on how to properly prepare my ideas and what principles to apply when coding so that I can keep my code under control.

Would anyone know a good course / explanation for this?

I have heard about UML, I understand database design, and I am able to name use cases for my software. I just don’t know whether I should - and if how? - write it all down before starting to code.

Thanks for your help!

1 Like

I’m a “principle driven” developer. Which means I usually develop my software around a set of principles that don’t change. I didn’t make up any of these, I usually take them from other contexts and apply them continually to see how well they fit.

For example here’s a few:

  1. “No plan survives first contact with the enemy” AKA your code/project/requirements/understanding will change once you start dealing with complexity.
  2. Unknown unknowns should be mitigated as early and often as possible. IE focus on the hardest/vaguest parts first. Don’t do easy stuff because it should stay easy. You should know yourself before hand
  3. To build adequate solutions, you must continually question you are solving the right problem. Its easy to build solutions, but that doesn’t mean you are building the right one.

I have a lot. I usually recommend gathering these and referring to them continuously.

More practically though, if your building a larger than average project and you want to organize things as best as possible I’d look into software engineering concepts.
Software engineering is usually the term used for anything that applies to engineering solutions to solve problems using software.

The term software engineer usually can be thrown around with the term “developer”, but I like software engineer because an engineer can be in other fields using the same underlying principles. For example an aerospace engineer will solve problems related to the aerospace domain, say building things that fly. A software engineer will do the same thing, apply the same principles but how they solve problems is different.

These principles are where you can take something like the US Space Shuttle program and gain insight into why such a large funded project essentially failed (scope creep). Or why large government backed infrastructure projects are usually slow (risk aversion).

Your project might be small, but the ideas behind building it have been well studied. The issue you could or have faced are problems others have ran into and spent considerable amounts of time documenting their findings and creating solutions.

Hopefully that’s at least a lead into what you could look into to help organize your next project

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.