Live data from Hacker News

Ask HN: What should I learn?

news.ycombinator.com

1–10 of 34 posts

Ask HN: What should I learn?

#1
Hi guys, I'm a freshman computer science major currently at work for a development company. My question is simple. I have a lot of time here to spare, and reading random internet articles, while enjoyable, is not as fruitful as I'd like it to be.

I want to learn a new language or API, but there is obviously a lot of different technologies out there with varying degrees of relevance.

So-- what should I learn? I have experience only in Java, C++, and C#, but I'm willing to learn anything. Preferably not something that I'm going to learn in school.

Emphasis on relevancy.

Bonus question: Give me a project to work on with this technology. Something doable, but time consuming.

Re: Ask HN: What should I learn?

#4
This is the mother of open-ended questions. There are many questions like this on Stackoverflow, be sure to check those answers, too.

Deciding on what to learn is hard, however, deciding on which one to choose from a list of things is much easier. The important aspects are (in order of importance IMO): (i) How does this help with my bottom line, i.e. will knowing this technology earn me money (ii) How "sexy" is it, is in on the bleeding edge, when I list this on my resume, will it catch the eye? (iii) How's the community, are they helpful, do they answer newbie questions? (iv) How's the documentation? (v) Is this a dead-end thing, or will it lead me into learning new things?

If I had to name just one thing, I would say Javascript. It used to be that "real men don't use Javascript", but the latest prominence of web apps is changing that. Also JS has gained a lot of respect for its advanced notions. I would recommend : JavaScript The Goof Parts, it's an easy read. Learn JQuery (and node.js for advanced stuff)

I would add Google web toolkit to the tool bag. This way, you can build complex apps with your Java knowledge, without being a JavaScript guru.

Learn a mobile platform. My personal choice is Android. iPhone has better potential but is kind of saturated. And it's Java, so you don't have to learn Objective C.

Why not Processing? It's extremely easy to pick up, has tons of interesting tutorials/demos and is easily lends itself to creating mind-blowing visualizations in a short time.

I would also start learning a offbeat thing, something that will raise eyebrows while reading your resume and will make it stand out. Could be scheme (learning it know, awesome!), clojure (runs on the JVM), Lua (has always got a life of its own but getting more coverage lately, can run on Android), or if you want to really go all the way, Forth. These will probably not earn you money but will expand your mind.

You can also look into getting your feet dirty with hardware. For years, I've been afraid to do this (I absolutely hate hardware stuff) but Arduiono or the Beagle Board are great.

And one final thing: Learn git! That's where all the good stuff is.

Re: Ask HN: What should I learn?

#5
post #4

This is the mother of open-ended questions. There are many questions like this on Stackoverflow, be sure to check those answers, too. Deciding on what to learn is hard, however, deciding on which one to choose from a list of things is much easier. The important aspects are (in order of importance IMO): (i) How does this help with my bottom line, i.e. will knowing this technology earn me money (ii) How "sexy" is it, i…

Thank you, this is exactly the kind of input I was looking for.

Re: Ask HN: What should I learn?

#6
Hadoop: designing MapReduce jobs is fun once it "clicks" for you. Hadoop Streaming is a good way to get started because it's an incredibly simple interface that uses stdin/stdout. Increasingly more companies are using it, from the big guys (Facebook, Yahoo) to startups (PowerSet pre-acquisition, LastFM, FlightCaster). Most schools don't teach it yet, so if you're willing to learn something in your free time it's a great way to get ahead of the competition for jobs too (not that that's the only reason to learn it).

Re: Ask HN: What should I learn?

#7
I'd suggest find something you want to make before the specific technology to use it. Think of something you want to make (web app, something for iphone, whatever) then figure out the best tools to make it. It will make the scope of "what to learn" to be a lot narrower and allows you to do some analysis about what to use that's tethered to something real. It would be nice if your project was "something people want", but the key thing is that you find it interesting enough that you have a lot of intrinsic motivation to work on it.

In my case, I didn't make my latest side-project (http://laughlitm.us) because I wanted to learn Rails and the Twitter API, I wanted to make something for my friends and I to share funny tweets. From there, questions weren't "what should I learn?", they were more "what framework can I use to get this up and running the fastest?" and "what DB or cache should I use to store this specific data type?". I learned a lot doing it and it never once felt like work. I also had a lot more to show for it than doing a bunch of examples from a "learning rails" book.

Re: Ask HN: What should I learn?

#8
Continue working with C# and find some decent open source .NET projects to work on, like RestSharp (generic REST wrapper library) or BlogEngine.NET, or work with some of the .NET APIs you aren't familiar with yet.

I'm in the process of teaching myself WPF (Windows Presentation Foundation) for making Silverlight web-apps and desktop apps and it's really quite fun; what's not to like about being able to hammer out a slick-looking desktop app in a matter of minutes? Plus with WPF you're forced to learn how to implement parallelism and event-driven programming which are both good experiences that have tremendous real-world value even if you don't end up taking a job some day where you need to use .NET or C#.

Re: Ask HN: What should I learn?

#9
It seems like you want something more concrete than abstract to work on, but if you want something that is very challenging and rewarding studying The Art of Computer Programming Vol. 1 is something you should consider.

Depending on the program you're in, you might get this material from your CS program but judging from comments here on HN about the quality of CS programs in most schools, you won't.

Re: Ask HN: What should I learn?

#10
post #7

I'd suggest find something you want to make before the specific technology to use it. Think of something you want to make (web app, something for iphone, whatever) then figure out the best tools to make it. It will make the scope of "what to learn" to be a lot narrower and allows you to do some analysis about what to use that's tethered to something real. It would be nice if your project was "something people want",…

I second that. I have found that I learn things faster (and they 'stick' better) when I work on something that I find interesting/cool.

The other benefit of working on it is that you really relate to the problem you are trying to solve (since you will be the first user) and you might end up creating a viable product for a niche. There are tons of startups that started this way (one example is hotmail, where the founders needed a way to access their email from multiple locations)

Post reply on HN