4 ms·
Love this book. I decided to make a career change about six months ago, found this book, and started learning Python. Over the past six months I've built four a
by anongraddebt 7y ago
Love this book. I decided to make a career change about six months ago, found this book, and started learning Python. Over the past six months I've built four apps (after learning JS and a couple different frameworks), and have multiple interviews lined up for back-end roles.
For anyone interested in possibly writing an intro book (or some such material) in the future, here are a beginners thoughts on what makes this a good read:
(1) Heavy use of code examples, with accompanying explanations. For myself, at least, I learn a lot through examples, and seeing so many examples of functioning code was very beneficial. The explanations are easy to grasp, without dumbing the material down.
Moroever, the examples are integrated with the flow of the material presented (so never arbitrary) and many build on each other as the chapters progress.
(2) Functions are presented before lists.
(3) He takes time to provide clear, precise, and deep definitions and explanations of the concepts. There is a near-philosophical exactness (like the exactness of analytical philosophy) in the descriptions.
(4) Formatting and organization. There was never a time where I felt lost as to where I was, where I was going, or where prior material was. Skim the book yourself to see the myriad ways it formats and presents the material to make study easy on the reader.
(5) The number of exercises/problems at the end of each chapter.
- hmart 7y agoHow did you learn JS?
- anongraddebt 7y agoI wish the author had written a Fundamentals of JavaScript Programming as well. I read bits and pieces from a lot of different JS books, and studied the first half of Eloquent JavaScript. I spent most of my time reading stuff online (especially the MDN docs).
- krumpet 7y agoConsider using a site like CodeWars where you're tasked with solving actual challenges. For years, I've read books and blogs as well as watched videos and learned some things, but, working through challenges is more motivating and forces me to produce. I rely on the same resources (books, blogs, videos), but through the lens of, "how can I accomplish X ?" Not sure you will have a similar experience, but it works for me.
- anongraddebt 7y agoDefinitely. I find that making solid progress on sites like codewars has been one of the best ways to improve my coding. Makes me better at planning as well as coming up with better solutions and is inherently motivating because you can hit well-defined goals in rapid succession.
- Jugurtha 7y agoWriting this up in a blog post would benefit many people thinking about a career change. What lead to it, how you went about it, etc.
- anongraddebt 7y agoIf I get an offer, then I'll definitely consider doing this.
- gojomo 7y ago> (2) Functions are presented before lists. You're not kidding! Lists aren't until page 339 (of 654).
- DonaldPShimoda 7y agoI'm a researcher interested in language acquisition so this is very interesting to me. Thank you for sharing! I have a couple questions: 1. Was Python your first programming language? / Was this book your first attempt at learning programming? 2. Why do you feel that presenting functions before lists was beneficial for you?
- anongraddebt 7y ago(1) If you count HTML as a programming language, then I had about 3 hours of HTML under my belt when I first started reading this book. Which is to say I understood nothing nothing about programming when I picked this up. I have a method for learning new domains, and a part of that method includes skimming intro books to find ones that seem well put together. So, I had also blitz skimmed a number of books before finding this one. One thing I noticed right away from this book was that it felt more like a normal textbook than most of the books I was skimming. (2) This is not an easy question to answer, because it includes a lot of speculation, but I'll try. For me, at least, it was important to understand - in some rough sense - the nature of the concepts. Obviously, there is plenty more to the nature of the following basic concepts than what I provide, but here's the way I was perceiving the concepts: Variables - being able to name and rename data (or code) and use different things you've named Conditionals - run code under certain conditions Loops - run the same code multiple times under certain conditions Functions - reuse the same code at different points in time Lists/Arrays - save code (or data) to later be used and/or manipulated Looking back on this textbook, as well as the other material I read where lists/arrays were presented very early, I just think it was more natural to think about code reuse before thinking about storing stuff for use and manipulation. Just my two cents.
- onei 7y agoI would naturally pair loops with iterables, such as lists, particularly in python. I wondered if it was more to do with learning to structure code before structuring data. Personally, I'd be inclined to teach basic types and control flow, e.g. loops and conditions, before teaching how to structure code so that you can start with something long and repetitive and understand the benefit of utilising functions. Having said that, both are fairly basic concepts so I don't think you'd lose much either way.
- Aengeuad 7y ago>(2) Functions are presented before lists. While it might not make the most sense for a beginner still learning the fundamentals to be taught lists before functions it's generally advantageous for introductory language books to focus on what the language excels at. But of course this is a fundamentals book and not every book needs to be general purpose! Some examples of where this holds true: The Rust Programming Language introduces ownership concepts, a difficult topic even outside of Rust, immediately after the chapter on fundamental concepts like the data types, functions, and control flow. It could be argued that such a concept needs to be introduced early to understand the language more, although you see similar things with OOP being emphasised very early on in Java on the tutorials on the Sun/Oracle website. Any introduction to Perl will be very string processing heavy, and Ruby introductions, like Python, will introduce lists/splicing very early on. It's easier to appreciate as you pick up more languages.
- anongraddebt 7y agoMakes sense. Thanks for the insight!
- neoncontrails 7y ago> I learn a lot through examples, and seeing so many examples of functioning code was very beneficial. Quick sidebar: if you're looking for an intermediate/advanced-level book with a similar style of pedagogy, I can't recommend highly enough The Python Cookbook by David Beazley. There are recipes in that book that I'm quite honestly unsure how I would function without. And to the credit of the author, every code example functions as a complete, minimal, working example: paste it into a live python3.8 REPL session and it "just works" (which is contrary to what you might expect of a book published in 2013). Also, it's one of a few books that has a puckish, hackery-sort of mentality and doesn't shy away from hot-button topics like metaprogramming, tampering with the GIL, mining program runtime data from previous stackframes, etc.
- victor106 7y agoWhat books did you find that helped you the most in learning JavaScript and web development in general?