Ask HN: What laptop should I buy for programming and path to take?
I want to learn how to create an MVP and launch my own projects since I am sick and tired of depending on others. Can you give me some suggestions based on the following questions:
1. Eternal question..What language to start with? And what learning path to take?
2. What laptop do you recommend for a 1000-1500$ budget? I am inclined to go for a Mac for iOS/ ruby development although I am listening to any proposal.
3. Can i learn enough programming in 3-4 months to get an MVP up and running? And what online courses you recommend me?Free or paid, doesn't matter.
4. Software combo/books to use to make things easier for a beginner?Or anything else for that matter.
I am really hungry to learn programming and since I don't have a CS degree I am kind of confused on how and where to start. I am willing to put between 10-15 hours a day (no BS) for the next 6 months just to get to that MVP stage. As I said I'm extremely hungry and eager to learn programming and anything tech-related. Thanks in advance for your help.
Joshz
17 comments
[ 5.9 ms ] story [ 45.0 ms ] thread1. I don't think it matters a huge deal which language you pick, as long as you choose a language that makes sense with the kind of project you want to launch. If your project is web-based (a web-app or service) you'll need to learn html, css, javascript (jQuery will get your pretty far without needing a very good knowledge of javascript and there are tons of examples you can use). But those will pretty much only help you with the front-end (so you'll still need a language that runs on the server and deals with data, sessions, basically doing stuff that cannot be done in the browser of the user.) There you can go with Python, PHP, Ruby, Javascript (nodejs)... of course I could give my opinion which to start with but I'm doing this too long to have an idea how long each of them takes to learn looking at your time-frame. And if you've never done programming you'll have to take time to understand why and how certain techniques work that frameworks use such as MVC.
If your project is going to be an iOS app the most logical way to go is with objective C.
2. I've bought a Macbook Pro 13" 2 years ago, upgraded with 2*8GB ram, 120GB SSD and a caddy for my 500GB HD, and it still runs very very well for development. Mac-apps tend to "just work" most of the time, and as OSX is based on unix most of the tools that will run on a server will work perfectly on OSX. The only limitation you get from going with mac is most games don't work on OSX but that's perfect as those only distract you from learning/working.
For iOS development Xcode (which only runs on OSX as far as I know) is the best you can get and most tutorials you'll find will be working with xcode. For ruby I've heard it's a bit annoying on a windows environment but whenever you go with OSX or Linux doesn't matters.
3. I think 3-4 months isn't going to be enough, perhaps others think otherwise but I think you'll need at least 4 months to get stuff done in the language you're learning and only than you'll be able to start working on your MVP.
4. That will depend on what language you're starting out with. Something I think can help a lot is knowing someone you can ask questions to while learning/building your MVP when you come across problems you cannot solve yourself or don't know how to go on from where you're at.
There's always the option to get a Thinkpad and run Linux. shrug
Though I have separate computers for work/gaming. It's a good divide.
So for:
1. Some people told me I should start with C and go on from there, while others told me to start with C# or Python. Am I wasting time with C? I've seen some articles here where some guys went straight RoR and managed to get an app running in months. I feel like I would skip important stuff if I do that. How important is the order in which you learn these? I think this is the hardest thing for me. To choose which one goes first on the backend side I mean.
2. So it shouldn't be a problem to go for an old mac right? I don't have 2K right now for a maxed MBP.
3. Well I figured I can do it on a 10-15h a day marathon for 4-6 months. So I can't do a YC demo for example?Something to show to investors or enough to express an idea?
4. I believe I got this covered although everyone is pretty busy these days:)
And you can get a macbook air for around $900-$1300. That's all you really need, nothing fancy.
And if your app is meant to be mobile, you can get deep into mobile web development and even create a very native experience. That's what forecast.io did.
Also as you probably know, in startups it's more about proving a model than having a fancy piece of software. Think about what features are going to attract customers asap. Iteration is easier when you have customers giving you feedback.
IMO RoR is the fastest way to make those vital iterations. Once you're sitting on your $5 million in venture cash you can worry about architecture and scalability.
That is one of my main worries actually. I want to have a solid foundation and principles of how I should build something. Or is my thinking flawed?
Nearly all modern languages have developed as some response to C, and Python is also studied because it has a good reputation as a first language.
Software development is about coordinating work so that it produces a product that is reliable and also on time and under budget. This is the sort of thing you can learn, somewhat, by examining the code and work done in open source, but mostly you learn it by working in a (good) software development office. It's important, but not something that is easy to teach while you are also learning how computer languages work.
2. Macs are popular for iOS, Android and web development so they're a good choice.
3. It's possible but it will be a lot of work. I don't have any recommendations on beginner courses. Maybe check out reddit.com/r/learnprogramming
4. As you implement your MVP, try to break each problem you face into smaller, manageable chunks. It's much easier to solve several easy - medium difficulty problems than 1-2 hard ones.
I have not enough experience with iOS/Android development to know, but I wonder if it isn't somewhat more easier to learn iOS for instance since it's just one language and IDE you have to focus on, while for web-dev you need to learn multiple languages. (Though at a certain point you'll need a server-side language to give your app the ability to communicate with a server...)
> If you're starting from scratch, learn HTML and CSS and make some simple static pages. Then once you're comfortable, learn a high level language (eg. Ruby or Python). Then learn a web framework for that language (Rails if you're focusing on Ruby, Django if Python). You'll probably want to pick up some Javascript too.
Exactly what I was thinking, but you gave actually steps.
Web development has many layers to it, but each layer is pretty straightforward and it all starts and ends with producing a text string (the web page) which is a much easier concept to get your head around when you're first learning.
Hardware, cheap laptop and a cheap desktop and a decent keyboard. I am partial to the Microsoft Natural Ergonomic 4000. With two computers running Linux you can learn about networking, hardware configuration, ssh, and using the shell.
Next, Emacs [or maybe Vim] there's a reason these are around after decades. Emacs is fully programmable which if your into programming makes logical sense. Plus it forces you to use the keyboard and the keyboard is the fastest most reliable interface.
Language? For learning programming nothing comes close to Racket/Scheme. Racket is huge and provides tools for just about any programming paradigm. The two best programming introductions are How to Design Programs and The Structure and Interpretation of Computer Programs. Both are free on the internet.
Racket: http://racket-lang.org
HtDP: http://www.ccs.neu.edu/home/matthias/HtDP2e/
SICP: http://mitpress.mit.edu/sicp/full-text/book/book.html
http://www.amazon.com/Beginning-Ruby-Novice-Professional-Exp... this is a good book for the Ruby path.
http://ruby.railstutorial.org/ This is the go-to rails tutorial. But beware that he doesn't explain things in super fine detail, so if Hartl tells you to do something that you don't understand stop and do some research on whats happening. Expect to spend a day or two on each chapter.
The learning curve for web related tech is much gentler than iOS or other compiled programming in that you can produce usable projects more incrementally and learn more about how stuff works as you go along. Just pick up an oreilly or other tech book on the framework you want to learn and it'll walk you through. You don't need a CS degree to learn how most of it works and it doesn't take long hours. It just takes patience and being willing to Google/man -k the things you don't know. And there will be alot you don't know.
Django is very friendly on the learning curve side, but deployment can be tough. I don't know about Ruby on Rails as I haven't touched it. PHP has a low learning curve, but also a large community of less capable users which can give it a bad rep.