About to embark on my first programming project...

splat_ed

Member
Mar 12, 2010
189
0
0
Hi all, I've decided to start learning a new skill and try a (probably too) ambitious project. I'm really posting this to act as a sounding board and get advice... so please bear with this quite long post...

First about the project situation:
I work in a small private Juku (cram school) here in Japan and our organisation of paperwork and such is just awful... so I thought it would be nice to have a student management system.

I've not spoken to the boss about it as he would probably say yes and put a lot of pressure to get it done. This is something for me to learn programming and hopefully produce something nice at the end.

I know that there is an open-source one available but it would need heavy customising and, I'm a sucker for a challenge/learning new skills :p

Now for the initial questions. I've started on a list of requirements, helped along by one of the other (senior) native teachers who feels the same way. The main issue I'm looking at is which language? I'll be learning from scratch along the way so I'm looking for suitability and ease-of-use. Part of this also comes from the format: do I make this a browser-based app (so php/MySQL?) or a stand-alone app?

What do you guys here think? Is starting something like this a good idea? Any advice on working on a project like this?

And any technical/programming advice?

Michael
 

AyashiKaibutsu

Diamond Member
Jan 24, 2004
9,306
4
81
I've been maintaining/rebuilding a web based configuration management system. It wasn't my choice, but I really like using c#/aspx. As far as advice, learn how to write maintainable code and put some effort into applying it. We're basicly rewriting our whole system because the people who first wrote it were terrible and it's unmaintainable. Things like changing the database server name have to be changed in 100s of different places and stuff like that.
 

Cogman

Lifer
Sep 19, 2000
10,286
145
106
My suggestion would be to first do this as a stand alone app. Doing websites are nice and all, but they lead to a need to research security, which may distract initially from learning how to program. (A stand alone app might have this need as well, however, there is much less of a problem with a user trying to break into their own SQL server).

The other issue with doing a web app is that you don't just have to learn one language, you have to learn Javascript, CSS, HTML, the serverside language, about different web server software, and that browser compatibility SUCKS, HARD.

If you want this thing to be accessible remotely, then you can disregard what I just said. You pretty much have to go through and make sure things are secure. Not that that is a bad thing.

Since this is a data-driven application, SQL is really a good choice. I would start with setting up a SQL server and learning SQL. Make sure you learn well the principles of data-normalization and what a good database will look like.

The next thing is to pick a language (really, any language will do) and get to work. I would suggest a language such as C/C++/C#/Java. I personally don't like languages like Perl/Pascal/Python. I am agnostic towards languages such as Lisp/Haskell. If this is a stand-alone app, then I would suggest using SQLite as your database. It has bindings for most languages.

Some might tout Perl/Pascal/Python for their ease of use, but I find they make crappy programmers and crappy programs. Something is just lost when you adopt Python that I don't know can be recovered. It is, IMO, the COBOL of our day.

Some advice.

1. Take some time to really think about what you want this program to look like. Don't just hack it out. Describe what each function or object is going to do, and how they will interact with other functions/objects. It is ok to change this along the way, but try not to start without it.

2. After you have done that, see if you can't write some tests for those functions that you have made. For example, if you wrote a function addTwoNumbers(a, b); the test would give an a and a b and make sure that the output is a + b. This can be very useful in tracking down bugs, new or introduced.

3. Check out youtube. There are TONS of videos about programming, and a lot of videos from real universities on the subject. Those can be a good aid. Also, use google to find answers to specific questions. You might be amazed at how many questions on the subject have been asked and answered.

4. Feel free to come back and ask questions here. While we may devolve into a discussion about the Oness of an algorithm, we usually provide some pretty good hints and suggestions along the way.

5. Learn from others code but NEVER copy what they do. You will not learn how to program this way.

6. Try your hardest not to duplicate code. If you are duplicating code, chances are that you should either be using a function or a loop instead. (unless you are shooting for speed... but that kind of optimization is best left until the program is complete.)

7. Have fun with it! :D
 

rogerdv

Member
Dec 2, 2010
150
4
81
I would go for python and Postgresql as database server. MySQL could be a good choice too. That way you can write web clients later.