Originally posted by Madman
You made a post saying you had alot of resources for different things and I saw some things about python and I was hoping I could get everything you've got about python. I've worked as a tech before but never learned any programming. I've heard that if you know your stuff you can get a job without a degree, is this true? I don't really know what language to start with but I've heard that python programmers are in demand so that seems like a good of a spot to start as any.
You can get a job without a degree. Historically self-learners have been well respected among programmers and generally considered to be completely capable of competing with degree holders. Often because the norm for a number of years was that degree holders had programming experience before entering college and considered themselves self-learners at heart. There's various stereotypes of scrappy kids teaching themselves to code, being "unpolished" but smart, good and bad but I think it worked in your favor in general if you knew what you were doing.
The advent of "bootcamps", non-accredited and highly condensed programs somewhat reminiscent of trades schools, have muddied the waters somewhat. I think one criticism of the bootcamp phenomenon is that it's made the situation for actual self-taught programmers more difficult since non-degree holders are now split between some official training (with no promises as to quality) in the boot camp case and no official training. Instead of being viewed as a kind of parallel path to professional programming, self-teaching is now the bad end of a spectrum of certification (unfairly, if you ask me).
That said I still think you can make it as a self-taught programmer, you just need a bit more hustle than you used to.
If I spent 10-20 hours a week learning do you have any idea how long it would take before I would be able to handle anything an employer could throw at me?
You're never going to be able to put a good timetable on learning. Even in colleges where there's a formal scheduled curriculum there are people who could work as professional programmers their freshman year and people who graduate without being able to really put together a program. 20 hours a week is a lot, 10 hours a week is probably still a lot. I don't think most people can stomach that much of practicing something they're garbage at (and everyone's garbage when they start, naturally). You sometimes hear two years of regular practice tossed around, but no one seems to have any particular evidence for that number. It does seem uncommon to find someone who can go from no experience to being a reasonably competent professional in under a year. It was probably two years for me between starting to program seriously and realistically being able to hold down a job, although I was lucky to have a job I didn't really know how to do where I was allowed to learn as I went.
There's lots of resources for learning to program, which you choose really doesn't matter too much. I do like to plug
How to Think Like A Computer Scientist. It's a bit of a difficult pitch to people looking to learn since what you think you want to learn is python. But actually you want to learn programming, and this book will do both for you although its title suggests neither.
The reason I suggest it over the many other excellent introductory resources on Python is because it goes through language constructs a sequence that's "natural" in that they reflect complexity and dependence of ideas within the language. That probably doesn't sound very meaningful, but contrast it with the typical approach where an author sits down and says "I want the reader to be able to do X by the end of the book", they think "they need Y and Z to do X, so we have to include chapters on Y and Z before the chapter on X" and repeat the process for Y and Z until they run out of topics. On the other hand TLACS asks "what's the smallest next thing you can learn exhaustively from what you know right now". The downside is that the very first chapter is a somewhat painful discussion of the expression/statement distinction which is something you typically handwave around until it becomes relevant to do the big X the book is building up to. The upside that you as a reader can go off-script and not get bitten in the ass by previously hand-waved material. There's also the fact that the exercises don't treat the reader like a retard who's terrified of math, which is always a plus.
I think the closest analogue is probably The Little Schemer which is an absolute hidden gem of computer science education which has tragically fallen out of fashion half because no one likes scheme anymore for some reason and half because the socratic method sews the seeds of social upheaval.
Originally posted by esbity
The best way to learn Python is to Learn Python the hard way.
Putting the fact that Shaw is an asshole, I think there are some real flaws with LPTHW. The biggest being that it's woefully unambitious, it's not a small resource and the capstone project is a textmode adventure game. Shaw handwaves a bunch of stuff and, at least the last time I looked at it a few years ago, it was downright deceptive in how some of the more subtle language constructs operate. You can tell he's far more comfortable as a C programmer than in Python, which is curious seeing as he decided to write his python book before the C one (I have no idea how LCTHW turned out)