I am embarking on a new programming project. As such, I have decided it best to do a bit of fore-planning prior to the start of this. I am wondering what tips the community has for starting a new programming project.
Right now, my first thought is to plan out different modules that the program will require. Right now, my program will be divided into a series of core functions, each of which will perform different actions based on the context of the application the user finds themselves in. This tool will be a utility to help manage personnel data for a user, records, and various "databases" that most in my line of work find themselves encountering on a daily basis. Later, I might move into a multi-user model (not hard, just add in a "section manager" module). Right now, I can count around 10-12 different core functions to be included in this application. A side note: individual applications would not be beneficial given the intended nature of the project.
That said, I have several core questions I am looking to get answered.
The first is in regards to data file formatting and the best ideas for managing this. In the past, most of my smaller apps have used their own storage format, which I created using basic file i/o commands. Speed is NOT a requirement for this application as the files will not be insanely large nor will they require "instantaneous" access. I have been toying with learning something like sqlite, but am wondering if this will provide any REAL benefit given my usage scenario.
The next question is when to begin UI planning. To me, in the past, I have always designed a core GUI and developed based on the module I am looking at, at the time. I then proceed based on a list of functions that still need to be developed. When should this start? I do not want the UI to feel tacked on. I've seen too many applications where the UI feels like an after thought. Then again, I have also seen apps with beautiful interfaces but no access to core functions, or even very limited functionality. Thoughts?
Third, Are there any tools available for programmers to help visualize data models to be used by a program, manage modules requiring code and current status of development, etc? I would imagine such a tool exists, but I have never looked for one in the past.
That said, I am open to any ideas for help in planning a programming project. Any information, thoughts, or comments are appreciated and I feel this will help other coders by allowing them to refine their planning capabilities.