tags:

views:

142

answers:

10

Ever since getting out of college (06) I have primarily worked with java and some members of the J2ee stack. I've played around with some groovy scripts while trying to get something together at work (nothing big).

I'm tired of doing the same old crap and want to learn something new but every time I sit and look at things to learn...I get overloaded with information. from c# to python..ruby to groovy and 10's of frameworks. where should a guy start?

And If I pick one, I dont want to just pick a book and read page to page while typing code proved in the book. So should I plan out my little project first? Are there any de facto projects that one can try to implement while learning a new language. These projects would try to cover all aspects to the related domain (web/standalone).

what did you do when you learned your second language?

A: 

By far, the language that I have learned the most from is lisp. Pick up ANSI Common Lisp or On Lisp by Paul Graham. Read, eval, print, learn.

Jeff Ober
+2  A: 

Start with the HelloWorlds of a few languages and see where that takes you. The only real way to start, is to start!

TandemAdam
+2  A: 

You might take a look at CodeKata and see if it's what you're after. They're not really very big projects, but they're good practice.

I usually try to write a Sudoku Solver as my first "real" project in a new language. Once I can do that, I feel pretty confident that I have the basics of the language under control.

Bill the Lizard
A: 

Mini web servers and strange twitter clients seem to be the rage. And, as you know, writing a blogging platform is the new "Hello, World"

I like to dive in to precision when I'm picking up a new language, for instance, what do I have to learn about the language in order to handle unicode? How can I handle localization? What does IPC look like ... how do I manage threads? Usually helps me write more serious things faster.

Tim Post
A: 

The way I learn a new language is to port the programs I've already coded into the new language

ennuikiller
+1  A: 

One way to work with some standard problems is to use Project Euler: http://projecteuler.net/ This is a series of mathematical problems that require programming to solve, some of which can be quite challenging. People use all kinds of languages for this (you can see a language breakdown on the site). However, you need to be into maths somewhat.

Johan Nystrom
A: 

IMHO, it's always easier to pick up a new language or framework if you have a real problem you want to solve while learning. Try to find an interesting, non-trivial problem either at work or just a personal itch you want to scratch then dive in and start using the tool you want to learn. Writing "Hello, World!" for the umpteenth time will only get you so far.

Jason Jenkins
A: 

I would recommend a code kata as Bill the Lizard did. This has been very successful for me recently. I've been ASP.NET/C# developer but had to learn Ruby on Rails for a recent project.

Because I was already doing a code kata to learn the keyboard shortcuts is Visual Studio, I had a project I could duplicate in a new language without having to make decisions about how I'd develop it. I already had the solution. At this point it was just about translating it into a new language.

I think that gave me a better jump on getting into Ruby because I could make associations with what I had already done in C# and close the knowledge gap between the two languages.

y0mbo
+1  A: 

Here are some things that I find help when learning a new language (and they may not work for you):

  • Get a spec. You will make mistakes, and so you need to know how to use things properly, not how a tutorial might say.
  • Start it small. What counts as 'small' to you depends on your prior programming experience. Console applications are good because they're simple and let you get familiar with the language without having to deal with a graphical framework.
  • Have a defined goal. It could be something like writing a simple calculator, a puzzle solver, or some exercises - Project Euler is a common favorite, but I also enjoy the Candian Computing Competition problems - I find they tend to be less abstract than Project Euler.
  • Learn the language's paradigm. Don't try to do something the language isn't meant to do. This is one of the most important bits - if you try to code Lisp in C, you will know only pain. If you are learning Erlang, use the process model, or else you really aren't learning the language. It's important not to try to force the language to do things it can't, or else you won't enjoy it. You will find this tough, especially given that you're a Java programmer who's been indoctrinated with The One True Object-Oriented Way (tip: it's not).
coppro
A: 

I became bored of Java with database applications myself as well.

I watched this iPhone course in Stanford University and became excited about Objective-C and iPhone programming you can find video of all the lectures link text

medopal