views:

153

answers:

6

What should a teen dev do for practical experience? If you want more details , then read on:

I learnt programming when I was 9 , with GWBASIC (which I now hate) , which was what was taught @ school. That was done in a month. After that I learnt C++ and relearnt it (as I didn't know of templates and the STL before that) Recently I learnt PHP , SQL and Python. This was around the time I switched over to Ubuntu. I'd always loved the "GNUish" style of software development so I jumped right in. However , most of the projects that I found required extensive knowledge of their existing codebase.

So , right now I'm this guy who knows a couple of languages and has written a couple of small programs ... but hasn't gone "big", if you get it.

I would love suggestions of projects that are informal and small to medium sized , and do not require much knowledge of the codebase.

Also note that I've looked at things like Google Summer of Code and sites like savannah.gnu.org and the first doesn't apply , since I'm still in school and the latter either has infeasable projects , or things that are too hard.

+6  A: 

It takes patience and perseverance... don't rush, experience and maturity to undertake "big things" come with time.

To comprehend other people's code is usually very hard, so don't feel bad if it takes you a lot of time to understand even relatively short pieces. That happens to everybody.

I would recommend you to take a break from pure "programming" and try to learn about a little bit about software architecture, that would help to create and understand large programs.

fortran
Comprehending other people's work will *still* give you trouble even after 25 years of a professional programming career.
Greg Hewgill
@Greg you're absolutely right, and even more there will be still code that simply cannot be deciphered by any human mind ever xD
fortran
+2  A: 

Write your own blogging engine.

Not too complicated but has real practical benefits. Furthermore, you will be able to show this off to anyone asking for examples of your work.

Developer Art
Good idea - you get to deal with a number of things doing this if you implement pingbacks, trackbacks, comments, rss feeds, admin interface etc. Nice thing is with a blog engine is that you can start simple and gradually add things - you don't have to 100% complete before being useful.
Rich Bradshaw
For that matter I've implemented something of a social networking site -- Login , Anti-SQL Injection , Template framework and I'm working on the chat system. (PHP + MySQL)
Aviral Dasgupta
+2  A: 

Try looking into games. Make a small Pong or Breakout clone or something... maybe some unique idea. You mention you've recently dove into Python, why not look at PyGame?

Corey
PyGame sounded good , but at the time I decided to go with SDL ... and I did develop some small games with that...
Aviral Dasgupta
What I forgot to mention , was that I'm trying to get "Practical" experience developing. ie. applications like Mozilla Firefox or The GIMP (but the former , as I said , requires extreme knowledge of the codebase).
Aviral Dasgupta
+1  A: 

How about trying to program games:

http://creators.xna.com/en-GB/

Or check out the open source projects for something you could contribute to.

You could also try some of the problems on project Euler

http://projecteuler.net/

Shiraz Bhaiji
I've done some problems on project euler and also on other online coding competitions. Point is that they help improve your logic , math and coding , not development skill (at least this is what I found to be true)
Aviral Dasgupta
+3  A: 

Contributing to any real live project will help immensely and an excellent way to do this in practice is to contribute to an open source project.

Getting up to speed with any codebase takes time no matter what level of experience you have. A good way to get a good understanding of a codebase is to fix bugs. You'll get an appreciation not only for how things work but for what ends up breaking when you make changes that you really think shouldn't break anything.

Every open source project will have a large collection of bugs and you'll get some recognition from those working on the project if you're willing and able to fix just one. It might take you weeks or months to get your first fix in place and your patch accepted but the experience you gain will be well worth it.

So, in short, fix just one bug within your favourite open source application, and get your patch accepted and released, and see where that gets you. You'll be surprised.

Jon Cram
A: 

Practical experience in development can be tricky: you have to answer yourself if you want to experience writing code, that will be used by someone, or you want to experience how it is to write code for a living. Since you are young, and the path of professional (eg. making money and supporting family) coder can be sometimes full of tears ;) I recommend you will join some Open Source communities and try to work with them.

FOSS movements are maybe not so formalized as commercial software companies, but have some requirements about code quality, maintainability, etc that you will be surprised of. Writing code just for fun can be cool, but writing code that has to be maintained and developed further (maybe by someone on the other side of the planet) requires a lot of patience and self-discipline.

smok1