News for hackers. Stuff that matters.
Re:How to Learn Efficiently by _xander on Tuesday December 30, 2014 @02:08PM (#8816094)
Any thoughts on learning to code in an 'interleaved' manner? I.e. studying more than one language or concept at once?
Re:How to Learn Efficiently by jfarmer on Tuesday December 30, 2014 @04:42PM (#8816896)
I think it's wrong to think of "learning how to program" as "learning a specific programming language." This is difficult to see as a beginner, if not impossible.

IMO it's better to think of each particular programming language as a stage and your goal is to practice acting.

Learning multiple programming languages at once is more like trying to learn Spanish and Portuguese simultaneously. It's not impossible, but you'll find yourself doing "double duty" because your brain has yet to develop clear lines between the two languages.

I've directly taught hundreds of people how to code and have seen this first hand. Take a beginning programmer who knows a little Python (or Java or C or anything), teach them some basic Ruby syntax, and ask them to write a Ruby program, they'll write in a creole of Ruby/Python, Ruby/Java, Ruby/C, etc. (cf. http://en.wikipedia.org/wiki/Creole_language)

I'm not kidding. You'll see things like this from C or Java programmers

    def Fixnum add(Fixnum x, Fixnum y)
      return x + y
    end
It's remarkably consistent and they never once saw an example of code that looked like that. They mashed together ideas from Ruby and C and honest-to-goodness expected it to work.

Untangling those false connections just adds overhead to the learning process and (IMO) are best avoided until you have a clearer mental distinction between programming _per se_ and programming in a specific language.

Re:How to Learn Efficiently by jmartinpetersen on Tuesday December 30, 2014 @02:22PM (#8816178)
My current quest is to take something from the business domain I work in and implement the bizarre math stuff (which I don't get all of) in a backend in F# with a frontend in Javascript (I'm fluent in neither).

I've tried it before (with different technologies), and although it didn't make me an expert in either field, I've found it neatly ties most things together.

Oh, and it's usually fun, especially if you put somewhat bizarre obstacles in your way (remember, it's a learning experience, not production code). It could be something elaborate like http://www.xpteam.com/jeff/writings/objectcalisthenics.rtf or just a concious decision to implement a part of the design in a part of the system where it isn't most obviously at home.

Re:How to Learn Efficiently by jfarmer on Tuesday December 30, 2014 @04:48PM (#8816925)
If your goal is to learn those two languages, I'd instead pick a problem/domain you understand very well and then express the various aspects of that problem in both F# and JavaScript rather than implementing some aspects in F# and some aspects in JavaScript.

This will help you develop a better sense of how F# and JavaScript differ as languages, what ideas are natural in one but unnatural in another, the conventions and idioms around tackling certain problems, and so on.

Re:How to Learn Efficiently by dblarons on Tuesday December 30, 2014 @05:13PM (#8817041)
I once worked with an engineer who implemented the card game hearts in every language he learned. After the first implementation, you don't have to spend so much time thinking about the problem domain and can focus on finding the most idiomatic solution in the new language. The other benefit is that the project always has a clear endpoint.