

Ask HN: What laptop should I buy for programming and path to take? - joshfenmore

Hey guys,<p>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:<p>1. Eternal question..What language to start with? And what learning path to take?<p>2. What laptop do you recommend for a 1000-1500$ budget? I am inclined to go for a Mac for iOS&#x2F; ruby development although I am listening to any proposal.<p>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&#x27;t matter.<p>4. Software combo&#x2F;books to use to make things easier for a beginner?Or anything else for that matter.<p>I am really hungry to learn programming and since I don&#x27;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&#x27;m extremely hungry and eager to learn programming and anything tech-related. Thanks in advance for your help.<p>Joshz
======
larrybolt
Here's what my opinion is on those questions. (I'm an Engineering student,
web-developer in my free time).

1\. 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.

~~~
joshfenmore
Thanks for the reply. Luckily I am not gonna start from scratch scratch since
I have a little experience with front-end and I am "familiar" so to speak,
with the programming "environment" but I never really dived into it (a very
stupid decision).

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:)

~~~
bindley
I am actually working for a startup who is prepping an app for investors
approval, and what we have found is speed, and progress is important. I would
definitely recommend RoR because the speed to development is so critical. With
Rails it isn't unrealistic to have a MVP within 3 months. Especially with
10-15 hours a day.

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.

~~~
joshfenmore
I've seen some online courses like CS50 with C and MIT with Python. The
question is why are they starting with those programming languages and not
going straight to high level languages?

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?

~~~
nikdaheratik
The goals of those courses are different from the goals of building complex
software. Courses are designed to teach you how a language works in both
theory and practice and they generally go through a language and help you
understand what parts of it do and why it does what it does.

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.

------
lukeck
1\. It depends what platform you want to target with your MVP, and whether you
have any coding experience. Generally, web technologies have a somewhat
gentler learning curve than iOS/Android, and can still reach mobiles. 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.

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.

~~~
larrybolt
> Generally, web technologies have a somewhat gentler learning curve than
> iOS/Android

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.

~~~
nikdaheratik
iOS (and I'd assume Android as well) is a grab bag of technology. To learn it
correctly, you'd need to learn about memory management, enough graphics to
understand how to draw to the screen, interpret touches, etc. All of that is
wrapped up in a complex API.

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.

------
brudgers
My advice, start from Linux. It exposes all the moving parts, has the best
tooling, and pretty much anything you learn about it is applicable to Windows
or OSX - though there are parts of both that are unique. A mainline distro
with a long term support release makes sense.

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](http://racket-lang.org)

HtDP:
[http://www.ccs.neu.edu/home/matthias/HtDP2e/](http://www.ccs.neu.edu/home/matthias/HtDP2e/)

SICP: [http://mitpress.mit.edu/sicp/full-
text/book/book.html](http://mitpress.mit.edu/sicp/full-text/book/book.html)

------
nikdaheratik
As far as equipment goes, I _heart_ my MBP, but anything with an SSD drive
that runs some flavor of Unix/Linux is what you need for most development.
Adjust what you buy according to your budget, but unless you're wanting to do
3D graphics, the SSD is a much bigger usability factor than the processor in
most laptops.

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.

------
coledubz
Start with Ruby, build some command line apps. Make a chess/checkers/other
complicated game to cement in object oriented programming. Move to Rails.
Learn some SQL(sqlzoo is probably enough). Rails has a lot of magic, if
something seems magical learn what it does until it is no longer magical.
After that, add some javascript/jQuery to your rails apps. Once you feel
comfortable with that move onto a frontend framework like Backbone or Angular.

[http://www.amazon.com/Beginning-Ruby-Novice-Professional-
Exp...](http://www.amazon.com/Beginning-Ruby-Novice-Professional-
Experts/dp/1590597664) this is a good book for the Ruby path.

[http://ruby.railstutorial.org/](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.

~~~
joshfenmore
A lot of people recommended me ruby but I feel like I'm loosing the foundation
of programming and maybe somewhere along the line I won't understand something
because I skipped it.

~~~
sergiotapia
This is correct. Start with something like C#, Java or Go.

------
LarryMade2
First question for you is I want to develop an MVP for what type of project?
Depending on what you want to create, that will g a long way in determining
your language and possibly your platform for developing it.

