

Ask HN: Read or Jump Right In - DirtyPowder

I am new to programming and have decided to start with Python. My question is should I read up on the programming theory first or should I just jump in and start building things?
======
anthonycerra
Jump right in. If you take a CS class they'll have you coding right away.
Since you're doing this on your own you won't have that external force to keep
you moving. What will end up happening is you'll constantly read more and
more, but never feel "ready" to start coding. The solution is to just start
coding.

Though I had a lot of programming experience before I started to learn web
dev, I had zero Ruby on Rails experience. So I started reading, watching,
buying any material I could find. I _still_ didn't feel ready. Then I realized
I will never feel ready until I get started. The worst that can happen is you
make garbage and learn something while you're at it. And don't get down on
yourself if you're not producing right away. The learning curve is never
linear. You'll get better at it faster and faster.

Also, hang out in Python IRC rooms. If you can't find an answer to your
question through Google or Stack Overflow, chances are there will be someone
in there who can help guide you.

------
laughinghan
What prior experience do you have?

In general, I'd say jump right in: Dive Into Python
<http://diveintopython.org/>

The best way to figure out how to make things is to make things. It's
rewarding to be able to get stuff working from the get-go, and tinkering with
that, trying to bend it to your will motivates you to understand how it works.

However, if you're familiarity with computers is very basic, you may want to
do some reading about how computers work and the abstraction layers a program
has to deal with; for example, do you know what abstraction layer Python is
at?

Side note, you might find it even more fun and rewarding if your first
programs are graphical <http://raphaeljs.com/playground.html> instead of being
text-oriented, command-line programs that Python is most suited for.

If so, try learning JavaScript, that link uses the Raphael library, which you
can find out more about at <http://raphaeljs.com/reference.html>

~~~
DirtyPowder
I have a general understanding of computing and networking as I am currently
employed in the information assurance field (CISSP and Network +), programming
is however, completely new to me.

I guess the hardest part is I want to be an expert right away. I often read HN
for inspiration and therefore want to perform at the same level.

So far the basics seem, well very basic and easy to understand. When I start
looking at building something, I feel a bit overwhelmed. I want to push out
things that I can be proud of and will help the community develop, and I guess
that desire is conflicting with my current level of knowledge.

Sorry, bit of a rant and long post, but just trying to sort everything out so
I don't get disillusioned.

~~~
jolan
> I guess the hardest part is I want to be an expert right away.

Not possible, it's like learning a musical instrument.

> When I start looking at building something, I feel a bit overwhelmed.

What are you trying to build?

~~~
DirtyPowder
I have a lot of ideas, for instance an RSS feed filter to remove duplicates.
Same idea could also be used to filter twitter feeds, although I understand
the code would be different.

Do you think it would be better to work on my own projects and jump in the
deep end or should I start with cookbook code and learn from that first? Part
of the problem maybe is not understanding where to go once I learn the basics.

~~~
laughinghan
In this case, absolutely jump in the deep end. Find a way to get RSS feeds,
and a way to display them -- there's probably libraries for either, however
you plan on doing them -- and try to process them in between. Start with
something small that works, and add functionality piece by piece, careful to
make sure each change you made results in something that works. If you
understand each piece, you understand the whole. Every piece you understand,
you've learned something.

About "being an expert" -- programming is a very, very broad topic, with far
too many different technologies and libraries used in different situations, so
when even "experts" work, usually only a tiny amount of their work falls under
their actual "expertise" (as in what they could do blindfolded), and they are
always Googling what to do next. So when you do that -- constantly Google what
to do next -- don't feel like you're not an expert.

I guess what I'm saying is, (perhaps unlike other fields) the body of
knowledge in programming, not only that exists, but that any typical work
involves, is so vast, there are no "experts" that have intimate knowledge of
all of it.

~~~
DirtyPowder
Thank you. Definitely encouraging words and I am now going to jump in the deep
end (Canonball!).

------
rmk
Perhaps you could try out <http://learnpythonthehardway.org/index>

It appears to be a good mix of 'reading' and 'jumping in'.

~~~
brudgers
The jumping right in is of the jump-right-in-by-typing-in-code variety. And
that's the way to go.

