Hey all - I've always wanted to increase my knowledge in programming, not to be programmer, but to know how to better interact with programmers, and also because I'm naturally curious and like building/learning things. I think I'm stuck in a paradox of choice - too many options and free courses online nowadays that I'm not moving forward in any one direction.<p>I'm very fortunate to have a badass tech cofounder working with me on a project and he codes in Python. He's also incredibly smart and can pick up any language if he needed to. Should I just focus on Python since that's his language of choice?<p>TeamTreehouse has a good RoR course. Udacity has a strong, but hard, Computer Science course using Python. I've completed the Javascript track on Codecademy already. What direction should I go? Does it matter? Do I need to just stop making excuses and pick one language? Or can I try to attack 2 language simultaneously?<p>Would love your feedback.
> I'm very fortunate to have a badass tech cofounder working with me on a project and he codes in Python. He's also incredibly smart and can pick up any language if he needed to. Should I just focus on Python since that's his language of choice?<p>If he's going to mentor you, then that's probably a good place to start.<p>> TeamTreehouse has a good RoR course.<p>Despite the fact that I like Ruby, I don't think Rails is a great place to start to learn programming. But that's more of a subjective feeling, not something I can explain in concrete terms.<p>> Udacity has a strong, but hard, Computer Science course using Python.<p>That's probably a good choice, especially if you want to do it <i>right now</i> and want scheduling flexibility. MITx's 6.00.1x on EdX is also a good choice, but it has a more fixed schedule (and its a couple weeks into the current session, and I don't know when the next one will be.) There's a number of other strong -- often Python-based -- courses available via EdX and Coursera.<p>> Do I need to just stop making excuses and pick one language? Or can I try to attack 2 language simultaneously?<p>There is a perspective to be gained on programming that comes from learning more than one language (particularly if they aren't closely related languages), but its probably best to focus on one first and then branch out to more if you find a deeper interest.<p>Probably...
Ruby is a dangerous language. It is so dominated by Rails that you will likely end up warping your mind into thinking that the ActiveRecord pattern is the best way to manage data and that every problem can be solved with a web app.<p>I would suggest learning Python instead because there is more diversity in the Python community (or should I say communities?). Compare the communities around <a href="http://ipython.org/notebook.html" rel="nofollow">http://ipython.org/notebook.html</a> and <a href="http://www.gevent.org/" rel="nofollow">http://www.gevent.org/</a> and <a href="http://plone.org/documentation/#developer_doc" rel="nofollow">http://plone.org/documentation/#developer_doc</a>
What about Groovy?[1]<p>From the website:<p>- is an agile and dynamic language for the Java Virtual Machine<p>- builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby and Smalltalk<p>- makes modern programming features available to Java developers with almost-zero learning curve<p>- provides the ability to statically type check and statically compile your code for robustness and performance<p>- supports Domain-Specific Languages and other compact syntax so your code becomes easy to read and maintain<p>- makes writing shell and build scripts easy with its powerful processing primitives, OO abilities and an Ant DSL<p>- increases developer productivity by reducing scaffolding code when developing web, GUI, database or console applications<p>- simplifies testing by supporting unit testing and mocking out-of-the-box<p>- seamlessly integrates with all existing Java classes and libraries<p>- compiles straight to Java bytecode so you can use it anywhere you can use Java<p>It has also recently entered the top 20 on Tiobe Index and it's the only one amongst other well-known JVM languages ( Scala (#36), JavaFX Script (#41) and Clojure (#76)) [2]<p>[1] <a href="http://groovy.codehaus.org/" rel="nofollow">http://groovy.codehaus.org/</a>
[2] <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" rel="nofollow">http://www.tiobe.com/index.php/content/paperinfo/tpci/index....</a>
I would suggest, for what you describe, it really doesn't matter that much. If you'd like help deciding from a random stranger on the internet, I'd say go with Python. Your friend knows it, and it anecdotally appears to me that Python is used as a first language in school coursework more than Ruby is.
I think a better question to ask is: "Do I know somebody who is proficient in this language that can help me learn when I get stuck?" A real life friend that will explain things to you when you need help is going to be infinitely more useful that an online tutorial.<p>Go with Python.