ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

Main Area and Open Discussion > Living Room

Planning a major programming project - tips requested

(1/5) > >>

Josh:
All,

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.

Thanks!
Josh

mouser:
I have been toying with learning something like sqlite
--- End quote ---

It sounds like the first real question you have to answer is -- are you talking about saving application settings/options? or a large database of data that can be thought of as many rows of a table with some fixed columns/fields.  If not the latter, than you don't want sqlite or any database engine.

Consider something like xml for options -- using a library to help you load and save xml files.

Are there any tools available for programmers to help visualize data models to be used by a program
--- End quote ---

There is a whole industry devoted to things like this, UML tools (Universal Modeling Language) -- but there are some real debates  about the usefulness of such elaborate mechanisms when working on small projects or single/two man teams.

Personally i don't find these formal tools very useful.  It's hard to beat the value of pen and paper.

Half of programming is PLANNING.  I think it's a very common mistake of new coders to think they are supposed to just sit down and write code off the top of their head.

Josh:
I have been toying with learning something like sqlite
--- End quote ---

It sounds like the first real question you have to answer is -- are you talking about saving application settings/options? or a large database of data that can be thought of as many rows of a table with some fixed columns/fields.  If not the latter, than you don't want sqlite or any database engine.

Consider something like xml for options -- using a library to help you load and save xml files.
-mouser (January 12, 2012, 10:23 PM)
--- End quote ---
[/quote]

This will be a large file containing user data. There will be external files stored in their raw formats (jpeg, pdf, etc). I was debating about an already designed database system like sqlite, but also know that I have written my own file save procedures in the past and it has worked out nicely.

I was advised AGAINST XML because of the sheer complexity of implementation. There is no desire to export this data, as my application will be the first in its industry.

Are there any tools available for programmers to help visualize data models to be used by a program
--- End quote ---

There is a whole industry devoted to things like this, UML tools (Universal Modeling Language) -- but there are some real debates  about the usefulness of such elaborate mechanisms when working on small projects or single/two man teams.

Personally i don't find these formal tools very useful.  It's hard to beat the value of pen and paper.

Half of programming is PLANNING.  I think it's a very common mistake of new coders to think they are supposed to just sit down and write code off the top of their head.

--- End quote ---

This is why I want to start off right. I want to plan this properly, but I have to answer those questions above. I am looking for tips from the pros, doco users, and am hoping to do this project right.

Josh:
Also, I would like to add what I somehow forgot to ask....What steps do YOU, as coders, take when you are planning a project?

Ath:
I was advised AGAINST XML because of the sheer complexity of implementation. There is no desire to export this data, as my application will be the first in its industry.
-Josh (January 12, 2012, 10:28 PM)
--- End quote ---

Have you settled on a programming language/environment already? That heavily influences a lot of choices.
If working with Visual Studio, XML is a very natural choice for storing application settings, as xml is much easier to use then either .properties or .ini files there, but if working with a LAMP or WAMP environment or Java (both pojo or an app container), .properties or .config would be easier. Working with some Borland (yeah I still hang onto the original name) stuff like C++(Builder) or Delphi, .ini files are a quite logical choice.
(Please share your choice/thoughts)

Storing data, especially if it's most 'other type of files', is imho best saved (copied) as the original filetypes, with a light database or xml used as a glue pointing to the files stored in a directory structure, off of a single 'mount point'.
If the data where most user-entered, with an occasional file attached, I'd go for a proper SQL database, like MS-SQL Express edition (2008R2 Express allows for 10 GB storage per database), PostgreSQL or MySQL (the disky is the limit :)).

What steps do YOU, as coders, take when you are planning a project?
-Josh (January 12, 2012, 10:46 PM)
--- End quote ---
I usually start with a few PoC's to prove any technical challenges will actually work as intended, then top-down, dividing the project into smaller chunks (until split down to single lines of sourcecode :P)
[quoth=Albert Einstein]"Everything should be made as simple as possible, but not simpler."[/quoth]

Navigation

[0] Message Index

[#] Next page

Go to full version