TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: What should I learn?

22 点作者 Natural2190将近 15 年前
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.<p>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.<p>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.<p>Emphasis on relevancy.<p>Bonus question: Give me a project to work on with this technology. Something doable, but time consuming.

21 条评论

Jun8将近 15 年前
This is the mother of open-ended questions. There are many questions like this on Stackoverflow, be sure to check those answers, too.<p>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?<p>If I had to name just <i>one</i> 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)<p>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.<p>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.<p>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.<p>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.<p>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.<p>And one final thing: Learn git! That's where all the good stuff is.
评论 #1431007 未加载
评论 #1430988 未加载
评论 #1431946 未加载
评论 #1430697 未加载
imack将近 15 年前
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.<p>In my case, I didn't make my latest side-project (<a href="http://laughlitm.us" rel="nofollow">http://laughlitm.us</a>) 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.
评论 #1430822 未加载
Kilimanjaro将近 15 年前
Learn Javascript. Not just learn it, master it.<p>Then learn jquery, scriptaculous, prototype and exjs<p>Bonus point for node.js
paulgb将近 15 年前
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).
评论 #1430829 未加载
评论 #1431057 未加载
mquander将近 15 年前
If you don't want to study a whole new language or giant textbook, you might get some intellectual mileage from checking out the Reactive Extensions for .NET, which is an extremely slick implementation of functional reactive programming in C#, and implementing some simple applications like a game or two with it.<p>If you don't know anything about FRP, you might find it somewhat mind-expanding. It focuses on treating input as a continuous, manipulable stream of events. It integrates rather elegantly with C#'s functional libraries and interfaces.<p>(This is assuming you have a fair amount of experience with C#, or else you'll probably spend more time learning the language than FRP.)<p><a href="http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx</a>
projectileboy将近 15 年前
Once upon a time I tried answering the same question for myself; you might (or might not) find this interesting<p><a href="http://softwareboy.blogspot.com/2009/10/learning-things-of-lasting-value.html" rel="nofollow">http://softwareboy.blogspot.com/2009/10/learning-things-of-l...</a>
评论 #1430941 未加载
marram将近 15 年前
I would suggest Python. It is easy to learn and can be used in many different projects including web apps.<p>You can then use your new skill and build web apps on Google App Engine. It's great because you won't have to worry about the non-so-fun bits, like configuring servers.
评论 #1431040 未加载
Aaronontheweb将近 15 年前
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.<p>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#.
aymeric将近 15 年前
Like someone already mentioned, I would focus on developing something useful. For you or for someone you know. I went through the exercise of listing my current frustrations to find what I should be working on on my blog (link at the end of my comment)<p>The challenges you will face during the development of a real life application will help you learn much quicker. Which language you will choose depends on your preferred OS, your inclination towards Open source, if you want to maximize your wages, etc..<p>Link to the blog post about the frustrations exercise: <a href="http://aymeric.gaurat.net/index.php/2010/my-frustrations/" rel="nofollow">http://aymeric.gaurat.net/index.php/2010/my-frustrations/</a>
silentbicycle将近 15 年前
What are your interests? Yeah, besides programming. Do you play guitar? Are you a baseball stats geek? Do you like math puzzles? Pick a problem aligned with your other interests, and go for it. Whether you do this in a language you already know or a new language / framework / etc. is your call, but challenge yourself.<p>Your interest will keep you going through the slow parts, whereas if you're just learning tech for its own sake, you might just start learning something else as soon as it gets hard. That can <i>feel</i> like progress, but doesn't usually add up until you stick with things for longer.
imp将近 15 年前
I usually find it easier to start with a project I want to build, and then learn whatever it takes to make it happen. There's so much to learn that it really is a personal preference.
adbge将近 15 年前
I asked myself the same thing a week ago and decided that I'd like to master Emacs. You should think about the process that you use to write code and how you can refine that process.<p>I'd suggest you look into learning a scripting language. Simple scripts can make your whole life a lot easier. Something like Perl or Ruby would be a good addition to your coding arsenal.
warrenwilkinson将近 15 年前
Learn whatever looks fun to you. When it stops being fun, repeat process.<p>I recommend Forth at least for the ideas. It's interesting because its a language that avoids needing a lexer, parser, or optimizer. It has the most beautiful ideas I've seen since I found Lisp.
angrycoder将近 15 年前
Write one or more non trivial projects a language you already 'know'. It will be far more beneficial.
cheald将近 15 年前
Learn a scripting language. Java, C++, and C# are great tools, but a command of scripting languages will serve you well. Perl, Python, and Ruby are the perennial favorites - I prefer Ruby, personally - but there are tons of others, like Lua or Javascript.
clark-kent将近 15 年前
Try building something useful to you, then learn the language and tools best suited for it.
Tichy将近 15 年前
Apart from what others said, I guess you can't do much wrong by starting with Structure and Interpretation of Computer Programs by Abelson and Sussman, which is also available for free.
sbe将近 15 年前
Erlang or OCaml.<p>Build an AMQP stack.
known将近 15 年前
Try to obtain expertise on a <i>domain</i>.
tkahn6将近 15 年前
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.<p>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.
评论 #1431053 未加载
c00p3r将近 15 年前
Try to learn WHY some particular technologies exists and popular. Try to understand the Ruby's style (describing, rather than coding) and the Python's way (simplicity, clarity, readability). Try to realize bloatedness, meaningless syntax fluff and limitations of Java (NIO2 is just a spec). The approach to C programming of Linus (once again clarity and readability), and then compare it to FreeBSD and OpenBSD projects. Look at webkit, chromium, qt and try too figure out which sub-set of C++ is portable and safe to use, and when it a right tool. Read the source code of nginx, varnish, openssh, sqlite, v8 or whatever you like.