
I taught myself Python on the Internet and so can you - aoruz
http://aysinoruz.com/i-taught-myself-python-on-the-internet-and-so-can-you/
======
bluecalm
This post heavily resonate with my own experience. Specifically this:

>>During my studies I learned C++. Personally I think that C++ is quite a
challenging language for a beginner. I did get the occasional straight A but I
wished that I would have started with an easier language

I've took C++ course during my university days and that made me hate
programming for years. The language is huge and full of things which beginner
programmers shouldn't have to think about. It was back in early days of the
Internet so it was hard to find information. It was just too hard to me to
comprehend why we need virtual/friend classes, bizarre constructors rules and
why the code has all those strange symbols. The picture of programming I've
got is a lot of boilerplate and little essence. We were coding simplistic
calculators but the class hierarchy and all the nonsense had to be there.

I've learnt Python as my first programming language several years after
college (I dropped out; the reasons are many but one is that I really didn't
enjoy the perspective of becoming a programmer and it was all just a chore)
and my love for programming was resurrected. For me it was a web based
programming game
([http://www.pythonchallenge.com/](http://www.pythonchallenge.com/)) paired
with a lot of googling but today it would probably be Code Academy (it wasn't
available back then). What was really great about the experience is that I was
coding fun things like automatic downloaders, simple image generators and a
(again very simple) web crawler after a week of it. I didn't need to care
about arcane language constructs at all.

I've learnt C few years after that and today I do successful commercial
project in C and most of the auxiliary programming (accounting, hobby
projects, quick scripts etc.) in Python. The negative experience with C++ was
so strong I don't touch the language to this day. Programming gives me a lot
of joy and C++ was close to killing it forever. While it's a stronger
sentiment than the author expresses I have the same advice for people just
starting:

Go with Python and have fun!

~~~
HCIdivision17
I can echo quite a lot of your sentiment. In high school we learned C/C++ (on
TurboC++!) and had a blast. We were quite happy to get anything done, and
never aspired to much since it took so much effort to do even simple things.
Ideas and algorithms had a lot of hoops to jump through to get the computer to
understand them.

Fast forward a number of years, and I'm an engineer working in a plant. I need
to get some analysis done, and Excel just ain't cutting it. Somehow I happen
upon pandas and IPython, and it's _magic_. I remember building classes for
calculating vectors and such in high school, full of pointer nonsense and
terrifying piles of boilerplate. (You haven't lived until you're a newbie
attempting to code a templated class that makes doing physics look like an
ordinary equation - you'd think it's easy, and it is! Right until it _ain
't_.)

And now? I open up localhost:8888 and spin up a new Python kernel. Within
seconds I am importing opencv and doing stuff I couldn't _dream_ of in high
school. And it's fast! I lost years from the discouragement of fighting
linkers and arcane syntax errors. Intellectually gratifying sometimes, but
ultimately not worth starting in. Accomplishing real work early counts for a
_lot_.

Never mind that the curriculum attempted to switch to Java in our third year
in high school. We all rebelled and won, and I feel like we dodged a bullet
there.

------
Sirenos
I liken learning C++ as a newbie to using a chainsaw to slice a pizza: it's
not going to be pretty no matter how you do it and you might as well chug down
the whole thing. It's always important to pick the right tool for the job, and
when you are trying to get into the programmer's mindset, it's really easy to
miss the forest for the trees. Programming is a wonderful intersection of
math, algorithms, creativity, and the messy reality of modern hardware; that's
both a curse and a blessing because it means that you have so many ways of
looking at it that a beginner might just think that they aren't smart enough,
when the reality is just that they are trying to bite more than they can chew.

~~~
aoruz
Totally, slow by slow learning helps. I was overwhelmed when i started first
but then i took my time and tried to teach myself. Thank you for nice comment!

------
MarcScott
Other than a few lines of Basic when I was 10, I had never coded before. Three
years ago I sat down with my laptop, fired up the MIT Introduction to Computer
Science course, and began my journey into learning Computer Science and
Programming.

I've stuck with Python mostly, with forays into JavaScript, C and Haskell
since then.

In a couple of weeks time I'll be leaving main stream teaching and heading off
to work for The Raspberry Pi Foundation.

I can't recommend Python enough, as an entry level programming language. The
online resources are numerous and of high quality, the community is helpful
and welcoming to beginners, the language is human readable and easy to debug.

~~~
codygman
First of all, great work! That is an impressive journey. Secondly, what was
your Haskell experience like?

I'm always looking to see what others experiences are so I know how I can help
make future experiences better.

------
minimaxir
> _After 7 months of self studies, I can add “Python programmer” to my resume
> and I didn’t have to get a loan to pay for College_

You probably shouldn't put "took free online classes" as evidence of expertise
on a resume. That's not sufficient evidence of actual proficiency in the
language.

It's also the reason why many advocate having a populated GitHub profile in
lieu of professional experience/learning.

~~~
pianowow
I agree. I don't see any evidence he has attempted to solve any problem or
made something with Python. This is the measure of proficiency.

~~~
bluecalm
It's true but it's more of an evidence than graduating from college anyway.

(not to dismiss college education here but what you get there are good
theoretical fundamentals not anywhere close to proficiency in programming or
specific languages)

~~~
thekingofspain
I don't know whether you went to college/university or not, but my program
definitely gives you both of those things, in addition to very good
theoretical fundamentals. Not to say that you've got the necessary real-world
experience after completing it, but you're well on your way.

------
Splendor
I would add Google's Python Class to the author's list.

[https://developers.google.com/edu/python/](https://developers.google.com/edu/python/)

~~~
aoruz
I actually did complete this program too. Forgot to add on the list. Thanks
for the reminder!

------
adorton
Is Dive into Python still maintained by anyone? That's what I used when I
learned Python about 10 years ago.

~~~
aoruz
I am actually reading that book right now. Just started. It is quite
informative but the version is from 2004.

~~~
nubb
Byte of Python is good too.

------
thoughtpalette
I've been sending friends who want to learn to code in python to Learn Python
the Hard Way and more recently, have picked up
[https://hellowebapp.com/](https://hellowebapp.com/) that allows them to build
their first website using python. They've been a little overwhelmed (as
expected), but with a "mentor" there to answer questions, they seem to be
getting it.

------
daveloyall
A.O., I am glad that you've become a programmer. Keep it up.

Does anybody else dislike non-free (both in $ and license) educational
materials, particularly in the field of programming?

Full disclosure: I don't know anything about Udemy other than that they
apparently charge money for educational materials related to programming.

Seems to me that knowledge is passed around from person to person via various
mediums, but every given idea had to start _somewhere_. (Let's put
simultaneous independent discovery aside!)

So... Let's say that Bob learned the syntax of python array literals from Jane
who learned it from Mike who read the docs which were written by Fran who
first learned the syntax by reading a post on a mailing list written by Sam
who wrote the code that defines the darned syntax (though arguably he based it
his experience with other languages).

Where the does an outfit like Udemy fit in that picture? How does somebody
take public knowledge and charge for it? Should there be pushback against this
practice? Is the license under which the documentation was released relevant?

[EDIT: Hmm. Ok, I accept these answers. There was a reason I asked. :) ]

~~~
gms7777
Non-free educational materials aren't charging money for the public knowledge,
they're charging money for the effort it took to put the public knowledge in a
form that is easy to learn from. This effort is very often non-trivial. The
public knowledge is still out there, and the person putting up material behind
a paywall isn't subtracting from the availability of that knowledge.

Now, it would certainly be different if the person was literally just copying
the documentation, or somebody else's free or non-free materials, because
thats just plagiarism. But I think if a person goes to a significant effort to
make educational material and wants to charge for it, and there are people to
whom this material is valuable to pay for it, then power to them.

------
cenal
I've been learning Python myself but I'm fortunate to live in Chicago with the
excellent [http://chipy.org](http://chipy.org) group. I've even taken part in
their student mentorship program as a mentee. I hope to see more organizations
put together a mentorship program.

------
Arzh
I was taught the basics of c++ in three months. I'm not a genius or anything
but I never thought that it was any harder to use simple c++ than it is to use
python. C++ also allows you to learn programming at a much lower level as you
get better with it.

------
bitfury
A good foundation in math is imperative (if you're serious about programming).
Sure, anyone can pick up syntax but can you program, that's the question. In
my experience, it's what makes a difference between a good or bad programmer.

~~~
andybak
Couldn't disagree more. A recent link on HN was along the lines of "ability to
mange complexity is the key differentiator of a good programmer" and I think
this is vastly more important.

Most code has very little mathematics in - beyond the core skills of
recognising patterns and abstractions. If that's all you mean by 'a good
foundation in mathematics' then we agree but I don't think your formulation is
terribly useful.

~~~
bitfury
Code does not have to have mathematics for someone to have a difficult time
writing it. By a good foundation, I meant being able to understand fundamental
mathematical concepts such as those taught in discrete math. It's not a
numbers class but it makes you use your brain in ways which help and
facilitate the writing of code.

------
discardorama
Couple of things I see often in online language learning is that they (a)
assume everyone is a n00b programmer and doesn't know much programming; and
(b) often don't highlight the _idiomatic_ way to write code for that language.

------
maximedev
@aoruz : Please stop modifying the scroll behavior on your website. That's
boring.

~~~
aoruz
@maximedev Thank you for your feedback but i didn't change any behavior of the
scrolling. Can you send me a screen shot or give me an example what is the
issue. Sorry for the inconvenience, i am still learning how to handle this.

------
AMadinger
Loved the Codecademy course. Was able to complete a project in Rhino that
required phyton scripts after just two weeks.

------
sprkyco
@aoruz: My story matches up with your's quite closely. One suggestion I would
have for a future book to read is either Black Hat Python, Grey Hat Python, or
Violent Python all "hacker" related books that are great for anyone interested
in security at any level. BlackHat Python is number one pic.

~~~
aoruz
@sprkyco Thank you! I am more of a visual learner but I will def go ahead and
look into those books. I appreciate your input!

~~~
sprkyco
In that case I would recommend:
[http://www.pentesteracademy.com/course?id=1](http://www.pentesteracademy.com/course?id=1)

,but that is because I am an unabashed infosec enthusiast that attempts to
force feed everyone infosec information.

------
radicality
I'm a bit confused, doesn't the post say "I studied Computer Science at
college"? So the poster studied and has a CS degree and yet it took them '7
months' to learn Python?

~~~
sprkyco
Not sure how this is confusing. Studying Computer Science at college !=
programming proficiency. I'm finishing up my last college class (online
University) will graduate with B.S. in CS Major S.E. got good grades in both
C++, Java, and CS related classes and I have been attempting to get better at
Python for the better part of a year now and still don't know shit and would
hardly qualify my self as a web developer let alone a software engineer.

------
Walkman
Online courses are really great, but the Python tutorial is sufficient in
itself.

I did this:

\- Read edw519 free PDF book, jump out of the bed and start learning. [0]

\- Read the Python tutorial from A-Z and learned it. [1]

\- Read Learn Python the hard way book and practice. [2]

\- Solved some problems from Project Euler. [3]

\- Learnt Django. (Started with the tutorial) [4]

\- Built something with Django.

\- Solved some problems from CheckIO. [5]

\- Built something with PyQt. [6]

\- Built my own library, even if it's stupid. [7]

\- Released a couple of packages even if they are small. [8]

The key thing is to learn AND BUILD something at the same time, and try to
remember everything deeply. I used the Janki method [9] to learn statements,
code snippets. This took me about a year, but after that, I did not need to
apply for a job, however I did once and got that too.

[0]:
[https://news.ycombinator.com/user?id=edw519](https://news.ycombinator.com/user?id=edw519)

[1]:
[https://docs.python.org/2/tutorial/index.html](https://docs.python.org/2/tutorial/index.html)

[2]: [http://learnpythonthehardway.org/](http://learnpythonthehardway.org/)

[3]: [https://projecteuler.net/](https://projecteuler.net/)

[4]: [https://docs.djangoproject.com/](https://docs.djangoproject.com/)

[5]: [https://www.checkio.org/](https://www.checkio.org/)

[6]:
[https://github.com/kissgyorgy/Womanager](https://github.com/kissgyorgy/Womanager)

[7]:
[https://github.com/pokerregion/poker](https://github.com/pokerregion/poker)

[8]: [https://pypi.python.org/pypi/poker](https://pypi.python.org/pypi/poker)
[https://pypi.python.org/pypi/enum34-custom](https://pypi.python.org/pypi/enum34-custom)
[https://pypi.python.org/pypi/pytest-
raisesregexp](https://pypi.python.org/pypi/pytest-raisesregexp)

[9]: [http://www.jackkinsella.ie/2011/12/05/janki-
method.html](http://www.jackkinsella.ie/2011/12/05/janki-method.html)

------
supco
I would add [https://pythonspot.com](https://pythonspot.com) to the list.

------
iDemonix
Sorry for not commenting on the linked article, but websites that mess with
scrolling really irritate me, almost irrationally. I'm quite comfortable
scrolling, the innovation in trackpads over recent years has made it almost
pleasant to scroll down a page, why oh why do people feel the need to add some
sort of script where when I scroll 1cm it jumps 4 pages down, then when I try
and move a tiny bit it erratically jumps a paragraph and then all the way to
the top of the article!

~~~
PascLeRasc
And it disabled the swipe to go back gesture on Mac. I wish there was some way
to disable scroll takeovers.

~~~
data-cat
Open up your browser's debug tools and throw this in to the console
`document.addEventListener('mousewheel', function (event) {
event.stopPropagation(); });`

