tags:

views:

152

answers:

5

so i have been programming for about a year, and i think i have progressed relatively quickly. I am just finishing up a pretty decent mario clone with XNA, and know a number of languages to the point where i could code effectively in any of them. the thing is i dont know what i should do next. Game programming is fun, but i cant draw for my life. Any pointers or ideas on what i should look at to make me a better programmer or just program that might be fun. I guess one step might be to take up a functional language like a lisp dialect, haskell, or OCaml.

Thank you

+1  A: 

If you have not done any network programming, that is definitely a good area to get experience.

Samuel
what do you suggest i do? i have written a coupe irc bots in different languages
jimi hendrix
maybe start with a simple socket chat program. try to think up ideas for useful socket servers that you can connect to and get data from.
Samuel
A: 

For a beginner, I'd recommend looking into a couple of languages.

I love PHP for various scripting activities and sites that are a good fit for PHP (for all intents and purposes, most ideas you'd have would be a good fit.) Also look into a good framework to save yourself some time (symfony, cakephp, etc.)

Also look into C#. Over the last year I've been getting into this pretty heavily and enjoy it. It's very much like Java, if you're familiar with that, so the learning curve is not that great.

Also get familiar with SQL. MySQL is free, so give that a shot. A lot of the principals you learn there with transfer to MSSQL.

Good luck!

Ian

Ian P
i know C# python and perl pretty well (i am also good with C and C++). I am familiar with other languages but those are my main ones
jimi hendrix
Definitely look into PHP then. There are a lot of people who are anti-PHP, but I've made a healthy living working with it and have enjoyed it an awful lot. It's a great tool for many web-based projects. Also look into the django framework for python.
Ian P
i know php basics (i was interested in webstuff for a while but couldnt think up a good idea for a site)
jimi hendrix
All those MySQL skills will also transfer to a real DBMS as well, like DB2 :-)
paxdiablo
Find something that you often use, and write your own implementation to play with (probably wouldn't use this in production code, though.) My experiences started with encryption and a very early version control system about 15 years ago. Try something like that.
Ian P
+2  A: 

Investigate the problems on Project Euler. They are interesting and will keep you busy for quite some time. They are also a great way to learn a new language, I'm working through them with a dialect of Lisp right now.

Greg Hewgill
just curious, which dialect
jimi hendrix
It's mostly based on Scheme and runs in the Python environment, see here for more info: http://ghewgill.livejournal.com/tag/psil
Greg Hewgill
A: 

"Find your itch and scratch it". If you want it to be an enjoyable process, you have to find something you'll enjoy doing (sorry, bit of an obvious statement, I know).

Did you enjoy the game aspect regardless of your admitted lack of artistic skills? There are plenty of games of the intelligentsia style that don't require years of training at art school (Connect 4, Reversi/Othello, Checkers/Draughts et al).

I'm currently working on one game project for the kids at my 5yo son's school - it's a side-scroller that involves a few students and teachers and I dread doing the artwork. I'm hoping I can find a program on the net somewhere that will turn a photo into a Simpsons-style character, otherwise there's some local artists that have said they can donate a few pictures gratis.

However, that's been sidelined since my son has discovered Connect 4. Although I enjoy playing the physical game with him, I'm not always there. That is more suited to my own artistic skills which are probably on par with yours.

Other than that, you need to think of something yourself - what are your interests outside of computers? Play the guitar? Try a music composition program. Enjoy playing tennis? Come up with a social tennis membership/scheduling program.

Even if those programs are never used outside your computer, they're still useful for training you up in various aspects.

That's about all I can suggest without further information.

Following your comment that you're mostly interested in trying new languages, most languages fall into families. There's no difference between C and Pascal and FORTRAN and COBOL. It's the "whole different approaches" that differentiate them, such as:

  • The procedurals such as Pascal, C, COBOL.
  • The objects such as C++, Java, OOCOBOL, Python.
  • The functionals such as F#, Prolog(?).
  • Forth and Brainf*ck (with apologies to ChuckMoore :-).

If you find an family you want to develop further, it may be worthwhile asking a question specific to that family such as "What's a good program to write in F# to get experience with its way of doing things?".

Still, exploration is okay, but I'm not sure it would be enough of a driver (for me anyway) to make it truly enjoyable. I'd rather have a pressing need, business or personal, to make it worthwhile.

paxdiablo
yes i did enjoy game programming...XNA is a great API, but before i delved into doing another game, i was curious about what you guys suggested... my main "itch" is exploration...i like trying new things...and i am about out of languages to try
jimi hendrix
+2  A: 

Definitely learn a functional language; it will give you a completely different view of programming. Scheme and Lisp are fine; Haskell really goes whole hog, being very serious about the "no side-effects" aspect of functional language and adding lazy evaluation to boot.

Start reading. It's important to learn the professional aspects of software development if you want to do this as part of a career. Coding Horror's recommended reading list is decent, and I particularly recommend Steve McConnell's Code Complete from that list.

Learn about test-driven development; even if you don't buy into the methodology, you should buy into the idea of unit testing.

Read other people's code. For that matter, read code that you wrote a year ago and see if you still have any idea what it's about. In line with the previous paragraph, write tests for that code. See if that forces you to refactor your code. See if it exposes any bugs you hadn't noticed yet.

Get involved in open source projects. Writing your own code is fine; writing code with other people is a great learning experience, and it's always cool to get a patch into an app that you use.

ruds