

Ask HN: How can I learn what I need to learn? - starshadowx2

I have things I want to build but I&#x27;m hampered by my super-basic programming ability.<p>I&#x27;m a tech-oriented person, I work IT support and build computers often, but I&#x27;ve just never been able to get the hang of learning how to code (well).<p>However I really want to learn so I can build my ideas. The major problem I&#x27;m having now is that I read about so many different languages, frameworks, structures, etc. that I really can&#x27;t figure out what I should be using, or what I should learn. I really couldn&#x27;t tell you the difference between different types of databases, but I know that I need to use one.<p>I&#x27;m guessing for a web&#x2F;mobile based app&#x2F;service I&#x27;m going to need JavaScript, but what &quot;kind&quot;? React, Angular, Node, or none of the above?<p>Is there anywhere I can look to to learn what I should be learning so I can do what I want to do?<p>EDIT: so far I&#x27;ve used Codeacademy a bit, but it&#x27;s hard to stay focused and disciplined using that I find. I&#x27;ve also started a few courses on Udemy but it&#x27;s the same thing.<p>My programming experience so far is using MIT App Inventor to make a Pokedex app (I think it&#x27;s pretty good though) and a little bit of VB back in highschool. I do know a tiny bit of HTML&#x2F;CSS and super beginner basics of JavaScript.
======
abathur
It probably sounds like I'm just being a shit, but any kind of anything is
better than every kind of nothing.

If you're hanging around here, you've probably seen the advice again and again
in terms of projects: get something (terrible) working, and start iterating. A
working project in the wrong language is almost always better than not having
a project. Programming languages/tools are similar. Thinking about the "right"
language or framework before you start is putting the cart before the horse in
a big way.

The reason for both of these is that most of the "hard" work is actually not
the code itself. In the case of a project or product, the "hard" work is
figuring out what to build and how it should work. In the case of becoming a
better programmer, the language or the framework is only a slice of what you
learn by building a project.

Almost inevitably, regardless of the technologies you use, you'll make some
decisions you'll wish you hadn't in a few months/years. This is especially
true when you're starting out. A project rewrite is usually faster than the
initial creation, and you'll tend towards picking up additional
languages/frameworks faster than the one(s) before.

~~~
starshadowx2
"the "hard" work is figuring out what to build and how it should work"

That's something I like to think I'm good at. For my major project I have a
6/7 page planning document that I've been working on, and I have design
mockups made. I think I know pretty well what I want to build.

I really would like to just start/try with something, but I'm worried that
could end up being a "death sentence" in the future where I find out I just
wasted a few months learning something that doesn't work or help me succeed.

~~~
rahimnathwani
"I really would like to just start/try with something, but I'm worried that
could end up being a "death sentence" in the future where I find out I just
wasted a few months learning something that doesn't work or help me succeed."

I'm assuming you're building a web app. Both Rails and Django work. There's
plenty of evidence that they work, and that people can learn either of them as
they build. Just toss a coin: heads->Rails, tails->Django.

If you chose Rails, start with 'Learn Ruby the Hard Way', and then progress to
Hartl's Rails Tutorial.

If you chose Django, start with 'Learn Python the Hard Way', and then progress
to the official Django Tutorial, and then to the book 'Two Scoops of Django'.

You don't need to worry that you're wasting time. It's the worrying itself
that is wasting time. Just toss a coin and get started.

(Many of us have been where you are.)

~~~
starshadowx2
I've eyed Rails a bit and it's something I'm going to look more into. I just
wasn't sure if it was what I was looking for.

If it's good for a web and mobile app then that's great, and I guess it can do
both front and backend so that seems pretty good too. Would you say it's a
better choice for my situation than going with some form of JavaScript?

~~~
rahimnathwani
Don't overthink it. Just start.

For your situation, I would pick Rails or Django. There's no reason not to
start with one of those. If you decide you want to use JavaScript, then your
next post on HN might be in one year:

"I've been trying to learn JavaScript for the past year, but I'm struggling to
get anything built. Every time I think I get it, I read about another new
stack which is meant to be better than the last. I started with just JQuery,
but then Backbone, and then Angular. Then I heard about React and decided to
start again from scratch. But I can't get past the todo app examples..."

------
exodust
Perhaps instead ask "I have this idea, it goes like this, how the hell do I
build it?"

Wait, is this the analytics for musicians idea we're talking about? (spotted
in OP's history). If so... my 2 cents is that analytics is a tricky game.
Platform providers have their own services be it Google or Soundcloud where
such data is stored and seen. You want to access and gather that data somehow,
and charge musicians to see it?

Anyway, before you can learn what you need to learn, you need to learn how the
basic building blocks of your idea are made. Eg, a global highscore table, how
to build one of those little suckers. Shop around the thousands of free
articles on that subject. Get things working in a dev environment.....
[actually getting things polished and finished takes sweat and long hours and
the odd bad day. The worst thing is when you think you've had a lightbulb
moment of progress, only for it to be actually confirmation that you went down
the wrong road 4 hours ago, or even days ago, and in some rare cases years
ago!]

~~~
starshadowx2
Smart to look through my history, but it's not really related to that. That
was something I was looking for during my research for this idea. That was
more like a side thing for the future.

------
nfriedly
To a large extent, you just need to pick something and try it out. Start
small, build something with react (or whatever). If you like it, great, maybe
build something else with it. If you didn't like it or got hopelessly stuck,
try something else.

I don't have the link now, but there was some one who made one website a day
for 30 days to learn different techniques and also just to get in the habbit
of _shipping something_. That might be one way to go.

~~~
starshadowx2
I appreciate your advice, but at the same time I don't just want to learn to
code for the sake of learning to code. I have specific goals and ideas but I'm
not in a place where I can achieve them.

I should've been more specific in my post that I'm trying to learn what
"technologies" (not my favourite word) are going to be most relevant/useful to
spend time learning.

~~~
carpo
I'd worry less about specific technologies and more about learning the basics
of building of a web app. It doesn't really matter what you use. Successful
sites have been built using pretty much all languages. When I taught myself
programming about 16 years ago, I bought a book on Cold Fusion that had step-
by-step chapters on building a CRUD app, I used MS Access as the database, and
did basic JavaScript for validation. If I was doing the same today, I'd use
PHP, PostgreSQL and JQuery. The concept is the same. Learn how to create,
read, update and delete records from a relational database via a web front
end. Learn how to loop over records and display them. You've got to walk
before you can run.

~~~
starshadowx2
That's actually what I'm looking for. I want to learn:

\- "the basics of building of a web app" \- "how to create, read, update and
delete records from a relational database via a web front end" \- etc.

The problem is that you can find so many tutorials or books, etc. on specific
things like Rails, JavaScript, or MongoDB but I don't know of anything for the
actual underlying thought to using those.

I don't know enough information to be able to choose what I should look at
using.

------
ruraljuror
MIT OCW's class Intro to Programming using Python will teach you general
programming concepts that are common to many languages. You will start with
basic things like iterators and work through some algorithms and the basics of
object-oriented programming. It is an awesome mix of challenging and a lot of
fun.

There are two versions but I think they are largely the same, just organized
differently. I took the earlier one:

[http://ocw.mit.edu/courses/electrical-engineering-and-
comput...](http://ocw.mit.edu/courses/electrical-engineering-and-computer-
science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/)

[http://ocw.mit.edu/courses/electrical-engineering-and-
comput...](http://ocw.mit.edu/courses/electrical-engineering-and-computer-
science/6-00-introduction-to-computer-science-and-programming-fall-2008/)

Feel free to e-mail me (address in the profile) if you have questions about
this particularly.

------
gt565k
I strongly suggest looking at udacity's nanodegrees or coursera's
certificates.

There are great courses and nanodegrees created by google, facebook, and other
employees from big companies where you'll get to build projects and learn best
practices.

Udacity recently released an android nanodegree co-created with Google.

[https://www.udacity.com/course/android-developer-
nanodegree-...](https://www.udacity.com/course/android-developer-nanodegree--
nd801)

There are great paid and free courses on those platforms that will take you
from intro to programming to deeper topics such as Machine Learning, Robotics,
etc.

------
kidlogic
Freecodecamp.com is superb

------
Teichopsia
I'm basically on the same boat as you (except that I am learning because I
enjoy it), and with one other difference, I had no previous experience except
for tinkering with things I didn't understand and didn't lead to any
meaningful insights.

To get a good feel on how to write simple scripts in python, you can take the
class on coursera: Programming for Everybody (Python). If you don't care about
the grade, there is a class currently going. The people in the forums for that
class are fantastic. There is another class starting on october 5.
[https://www.coursera.org/course/pythonlearn](https://www.coursera.org/course/pythonlearn)

A good follow up course which will get more in depth is Introduction to
Computer Science and Programming Using Python over at edx. This class is a bit
more demanding than the previous one that I mentioned.
[https://www.edx.org/course/introduction-computer-science-
mit...](https://www.edx.org/course/introduction-computer-science-
mitx-6-00-1x-0)

The first time around I dropped out, it was too much for me. So I took a few
other classes, including Introduction to Algebra at edx to give my brain some
exercise. [https://www.edx.org/course/introduction-algebra-
schoolyourse...](https://www.edx.org/course/introduction-algebra-
schoolyourself-algebrax)

If, you are interested in learning for the love of it, I would recommend
Systematic Program Design (which is divided in three parts - the first part
just finished last week but the materials will remain open for people to catch
up) [https://www.edx.org/course/systematic-program-design-
part-1-...](https://www.edx.org/course/systematic-program-design-part-1-core-
ubcx-spd1x)

This class will teach a design process that can be applied to any programming
language, using a simple programming language to help teach the design
process. The book can be found at:
[http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html](http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html)

There are a few other classes over at udacity that I'm planning on taking but
can't recommend them yet as I haven't seen them.

Lastly, a few months ago a friend asked me about programming, so I wrote a
quick and dirty blog post that has a little bit more information. Keep in mind
that I'm a beginner as well - so take it with a grain of salt.
[http://teichopsia.svbtle.com/how-to-get-started-in-
programmi...](http://teichopsia.svbtle.com/how-to-get-started-in-programming)

Note: There is a paragraph about a class called Intro to computer Science over
at udacity. The class mentioned in this post at edx is a better class.

