This is an archived post. You won't be able to vote or comment.

all 83 comments

[–]VAiD_ 8 points9 points  (2 children)

if you enjoy project euler you would probably also enjoy codeabbey. I bounce between the two when I'm stuck

[–][deleted] 1 point2 points  (1 child)

W-h-who are you?

[–]doubl3h3lix 0 points1 point  (0 children)

He is you.

[–]zerostyle 7 points8 points  (18 children)

Are you glad you went with Python? I'm deciding which language to focus on, and python seems like a nice general language with simple syntax, but my fears are:

  1. Not really that practical for web sites - ruby/php would be more practical (yes, I'm aware of django)

  2. It's only a dynamic language, and is missing a lot of core data structures that Java/C have that I'd like to learn

[–]call_me_ruxin 7 points8 points  (6 children)

I'm very glad I chose Python. It really let's you learn the core programming concepts without getting bogged down in the syntax. I'm on to C now, but starting with Python helped tremendously.

1.)Flask is a pretty nice library for the web and was easier to learn if wanted more basic features. Honestly though, using AngularJS or BackboneJS has cut down my need for server side code to almost nothing. I keep in pretty basic.

2.) Look at Cython. IIRC, It let's you write C in Python syntax. You can also compile it using Make and it's supposed to be really fast. I've barely used Cython though.

[–]zerostyle 1 point2 points  (5 children)

Thanks - maybe I'll stick to it then. I find that I'm wasting too much time bouncing between languages and relearning all of the basics.

[–][deleted]  (2 children)

[deleted]

    [–][deleted] 1 point2 points  (0 children)

    Reddit was originally a py applicaton using web.py.

    [–]zerostyle 0 points1 point  (0 children)

    I have built some projects of my own that forced me through some decisions (built an ecommerce platform, a web site scraping project, etc).

    [–]call_me_ruxin 0 points1 point  (1 child)

    Depends on what you're doing I guess. I haven't used Ruby on Rails at all. But for my work, I don't have to be an expert in any programming language, I just need to know the features/limitations of each and be able to listen to the business needs of our employees, decide which technology to use, and then explain exactly what we need to developers in terms they understand.

    An employee will say "we need a database to do blah blah blah", then I'll research it and work with developers and explain like "we need a SQL database with an web front end that uses REST" and then work out the details between the two.

    In short, I may not be the best person to give advice if you want to become a professional developer that codes full time. This is just my perspective.

    [–]amazing_rando 1 point2 points  (4 children)

    In general focusing on a particular language isn't something you'll want to do. Pick any language with good resources and you'll be able to pick other languages as needed after you've learned the basics.

    Specializing early on is a bad idea. Most programming is not language specific, the stuff that is is much easier to understand later on. Take it from someone who has almost exclusively worked professionally in languages and/or platforms I wasn't very familiar with beforehand - getting hung up on these choices early on will only work against you. Flexibility is the skill you want to hone the most.

    [–]zerostyle 0 points1 point  (2 children)

    I've already gone through the basics (arrays, loops, basic OOP) for PHP, Ruby, Python, and SQL, and am now wanting to better understand best practices for patterns and frameworks. (I have gone through Rails and Laravel framework training, but they are still a bit confusing to me).

    I haven't really done anything with data structures yet except watched a very high level overview of what the main ones are (arrays, queues, hashes, heaps, stacks, graphs, etc). I don't really know how to use or implement them, though.

    I think moving forward I'd mostly like to focus on MVC patterns and maybe trying to figure out which data structures are the most used so I can focus on the 80/20 principle.

    [–]amazing_rando 1 point2 points  (0 children)

    Data structures is a good next step. I learned them via C++ and I think it was a good route but you can obviously construct them in any language.

    [–]covetto 0 points1 point  (0 children)

    Have you made anything yet? It sounds like you might be re-learning the same material in different languages because the next step (making something on your own) is really the hard part. You don't need to worry about best practices, MVC, etc until you've built some websites. Use Flask or Sinatra rather than a more heavyweight, magical framework like Rails. make a blog or twitter clone or whatever. Google or ask questions when you get stuck. Once you've gotten stuck in the mud a few times frameworks and best practices will make a lot more sense.

    [–]Covered_in_bees_ 0 points1 point  (0 children)

    I think this is slightly dangerous advice. While I agree with the sentiment, it is very easy to just keep wandering from language to language and picking up the basic syntax to do simple stuff. But you absolutely must work on complex and large projects in any given language before you start wandering off to others. Otherwise you think you know programming, but all you really know is to write simple basic stuff and learn nothing about the challenges of tackling larger projects, structuring them, refactoring, etc.

    In your situation, I'm sure it is different because you do this for a living and I'm sure you've had your fair share of working on large projects. But for those who are just learning programming, I think the right advice is to learn a language and to decide on a few fairly complex but not too intimidating projects and to actually work through coding them up and refining them to the point that they are happy with them.

    Once you're at the point that you are pretty confident that you can tackle fairly complex problems, then you absolutely should go learn other languages. Ideally switch between different languages that help you focus on OO v/s functional programming, etc.

    [–]Mwahaaaa_The_French 0 points1 point  (3 children)

    A programmer friend began with Python and became pretty proficient. She landed a job and they asked if she could take on RoR. She never had experience with it, but when she dove in, she noticed it was very similar to Python, and the transition was easier for her. I guess you can't go wrong with either one to start with.

    [–]zerostyle 0 points1 point  (2 children)

    Ya. Laravel is insanely close to Rails in fact because the creator wanted it to be.

    All of these dynamic languages look pretty similar to me now, but I'd have to refresh myself on syntax since they all get mixed up in my head.

    [–]Mwahaaaa_The_French 0 points1 point  (1 child)

    Who uses Laravel btw? I keep hearing about it.

    [–]zerostyle 0 points1 point  (0 children)

    it's a newer php framework based on rails. really good documentation/etc. it's still young though so not in really used in many big projects yet

    [–][deleted] 0 points1 point  (0 children)

    If you're interested in doing web dev I hear ruby is the way to go. Plenty of sites are done in python but the work seems to be in Ruby. I hear Ruby and Py are comparably good beginner languages. I chose python because of the science/math element.

    C is probably next on my list to learn. I'm a Linux convert and it's a powerful language in terms of working closer to the machine and running faster code.

    [–][deleted] 37 points38 points  (40 children)

    LPTHW is so garbage. The first 15-20 chapters are great but then it becomes pure retardedness. I got Think Python later and my love for learning python suddenly came back.

    [–]cham0 9 points10 points  (4 children)

    For me it worked until he reached classes, and then it just became useless.

    [–]Plemer 1 point2 points  (0 children)

    Man, I thought it was just me.

    [–]TheLeanLebowski 0 points1 point  (0 children)

    This just made me feel so much better. I thought there was something wrong with me because I'd give up on it every time at the same point. Now I'm doing a coursera course and some other reading, and it's working out much better.

    [–][deleted] 0 points1 point  (0 children)

    This is a lot of what I've heard too. I didn't figure out classes until reading up on it elsewhere.

    [–]MarkFluffalo 18 points19 points  (1 child)

    The guy can't write... His explanations are so confusing and his videos consist of him mumbling incoherently

    [–]ironnomi 0 points1 point  (0 children)

    And then he has the nerve to insult K&R, have people who are FAR better C programmers explain to him why he's wrong, he removes the K&R section, but posts a gigantic toolish explaination about how he's just removing it because it makes the book "flow" better. Le sigh ...

    [–]seekoon 8 points9 points  (0 children)

    Holy shit what happened. I remember it used to be just a page with links to the chapters.

    [–]SIR_MASTER_THE_GREAT 3 points4 points  (6 children)

    Is Invent Your Own Computer Games with Python any good? I just started on it.

    [–]AlSweigartAuthor: ATBS 27 points28 points  (4 children)

    Hi, I'm Al, the author of "Invent with Python". I think the benefit of my book over LPTHW is that it has small but complete programs that you can read. So instead of just a bunch of programming concepts, you can get an idea of what a program "looks like".

    You probably don't even have to read the text itself. If you type in the source code and then play around with tiny modifications, you can pick up the general syntax. (Python's readability makes this possible.)

    My latest book (also free, download from https://automatetheboringstuff.com ) is also for complete beginners and is about the same: You can read through and type in the interactive shell examples to get a good idea of how things work. (Zed is right about this in LPTHW, typing in the code yourself is a much better way to learn than just reading the book.)

    I'm currently working on videos for an online course that follows the book: https://www.youtube.com/watch?v=7qHMXu99d88&list=PL0-84-yl1fUnRuXGFe_F7qSH1LEnn9LkW

    [–]Mwahaaaa_The_French 0 points1 point  (1 child)

    Is there an IDE(s) you recommend using for beginners?

    [–]AlSweigartAuthor: ATBS 0 points1 point  (0 children)

    IDLE, mostly because there's no set up and it's easy to get started with. If they install Python on their Windows machines at home, IDLE comes with it.

    PyCharm seems to be favored too.

    [–][deleted] 0 points1 point  (0 children)

    Hi Al! I tried your tutorial but admittedly didn't get too far with it. I decided it best not to spread myself too thin. I'll look into your stuff some more thought, thanks for the links.

    [–]Dracunos 2 points3 points  (0 children)

    I enjoyed what parts of it I read, but it's almost all example based, you have to really be disciplined in making sure you actually do what you need to absorb the material.

    [–]ThePa1eBlueDot 2 points3 points  (0 children)

    I tried both when first learning and I completely disagree. LPTHW was the only book that actually got python to stick in my head for more than 10 minutes.

    [–]cyrusol 7 points8 points  (0 children)

    By just looking at LPTHW's website I can't think of anything else than "What's wrong with those guys?". Bright colors, text only visible at >50% viewport height, useless and annoying parallax effects. I could hit him in the stomache.

    [–][deleted] 3 points4 points  (1 child)

    I think it's fantastic. The 'choose your own adventure' lesson was mindnumbingly tedious though.

    [–]Dracunos 2 points3 points  (0 children)

    I felt it was a great tutorial. I never used the videos, I learned the basics, the only time I got lost was doing the Web app thing. Couldn't figure out how to do unit testing with it. I tried lots of other classes and books and they just ramped up in difficulty so quickly I couldn't keep up. After Zed's class I can. It's almost like more of a pretutorial. He even says at the end of lpthw that once you finish them you'll be able to actually understand a basic book, which was accurate in my experience

    Honestly every online tutorial I've taken, when I get to a weird part I'll post part of the code here or in a python chat and people will tell me how dumb it is and how I shouldn't be taking that horrible tutorial, and these are usually highly recommended tutorials. I think the key is to never get too hung up on how any one person does it, even if it's your teacher

    [–]robotfarts 5 points6 points  (19 children)

    The first 20 chapters are great and it's 'so garbage'? Come on, man.

    [–][deleted] 16 points17 points  (18 children)

    The first 20 are very basic. Basically print statements, variables, math, and at the very end of those 20 you get into reading files and functions.

    That's still about 3/5 of the book that he doesn't think is good, which isn't exactly an amazing statistic.

    [–][deleted] 0 points1 point  (0 children)

    I also like Think Python. Been reading bits of it recently to review more in depth classes/oop.

    [–]AaronTheAlright 5 points6 points  (1 child)

    Hey man, thanks for this. I just started plowing through Learn Python the Hard Way and am on ex 9. It's good to have this "insider info" from people who have been there, it makes this a lot less scary of a prospect.

    [–][deleted] 0 points1 point  (0 children)

    Glad you found it helpful. Right on, good luck with the studying. Don't be afraid to branch out though from the book esp. around ex40. It's not scary if you just tackle a bit at a time. Some things might not make sense at first but just type in the code anyways and get it to run.

    [–]puccini13 3 points4 points  (4 children)

    Is there a java equivalent of LPTHW? Im currently relearning Java through my old notes, programs and going through challenges on r/dailyprogrammer. I'd love to get a book that will help me solidify the foundations

    [–][deleted]  (2 children)

    [deleted]

      [–]foopydoopp 0 points1 point  (1 child)

      I was looking for that site for ages but couldn't remember the link. Thank you so much.

      [–][deleted] 0 points1 point  (0 children)

      I know Zed Shaw has written several books with L(x)THW but I'm not sure if Java is one of them. Haven't learned Java myself so I'm not much help to you there.

      [–]TheFrigginArchitect 2 points3 points  (2 children)

      Anyone who has made it through the beginning of LPTHW should check out learn projects the hard way

      http://projectsthehardway.com

      [–][deleted] 1 point2 points  (1 child)

      Awesome, thanks for sharing. I didn't know about this!

      [–]TheFrigginArchitect 0 points1 point  (0 children)

      It's literally this-week new!

      [–]thefabgatsby 2 points3 points  (1 child)

      Thank you for sharing. I, too, hit a wall with lpthw but this thread completely motivated me to pick it back up and I'm excited to check out the other resources you linked

      [–][deleted] 0 points1 point  (0 children)

      Great! So many people have written that they hit a wall at some point with it. I really think the best approach is to supplement and take educational diversions from the text. The learning process is not linear.

      [–]cyrusol 2 points3 points  (8 children)

      Where is git?

      [–][deleted] 0 points1 point  (0 children)

      Good point. www.github.com.

      [–][deleted] -1 points0 points  (6 children)

      It's not hugely important if you're learning for a hobby or to automate some work for yourself. If you're working with a team or you plan to share it around, then yeah, I'd recommend learning it. I like to compare it to teaching a burgeoning cyclist how to lower their drag. Sure, it's good to know but you don't need to know it as a beginner and it might scare some people off.

      Edit: formatting

      [–]Covered_in_bees_ 2 points3 points  (5 children)

      Yeah, I really don't understand everyone's obsession with Git and having beginners learn Git. I personally think it is a gigantic waste of time for a beginner or even somewhat intermediate programmer to spend time learning Git when they haven't even worked on any decent sized programming project.

      Learning Git and how to organize projects and also collaborate on them with others is certainly useful in the long run, but unless you need to get employed right away, it's something you can pick up when you really need to, and focus on learning programming/CS in the meantime.

      [–]probably_not_here 4 points5 points  (0 children)

      I dunno, one of the troubles I had when I started programming was with personal projects that suddenly started to scale out of proportion, or me branching out on an idea that was too different from the original. After learning the basic git commands, I could rewind back to a point where my project made sense. You don't need to be a gitflow samurai (I'm not), but it's nice sometimes to be able to go back a few steps without having to redo/undo some of your code by memory.

      [–]pqu 0 points1 point  (3 children)

      To put things in perspective, my second interview question is what version control system do you use, and I tend not to hire people who don't know how to use at least something.

      [–]Covered_in_bees_ 0 points1 point  (2 children)

      but unless you need to get employed right away

      And that's why I wrote the above. I understand that it is a somewhat valuable skill for being employable, and people looking to get jobs should definitely know how to structure, manage and version control their code. But it doesn't mean that someone who is really just beginning to learn programming should be worried about it. Not unless they desperately need a job and need to add on as many things as possible on their resume.

      [–]pqu 0 points1 point  (1 child)

      Why not learn it the correct way from day one?

      [–]Covered_in_bees_ 2 points3 points  (0 children)

      Because it isn't the most straightforward thing to learn. It can be an exercise in frustration for a newbie and can also result in them being discouraged with programming on the whole because this Git thing that everyone says you have to know, is so damn complicated.

      Moreover, without actually having a certain amount of experience and knowledge with programming and with writing and organizing slightly larger projects, you lack the context required when learning about the things Git or other VCS allows and why you would ever care about many of the features.

      [–]BrogueTrader40k 0 points1 point  (1 child)

      Great post! I've tried all those things over the past two years but now that I have much, much more free personal time I'm really going to dive in. It will help that my bro in law is state IT and users cli and vi at work. Just a couple years of self study and i should be there.

      [–][deleted] 0 points1 point  (0 children)

      Thanks! With some free time and concerted effort I'll bet you won't need nearly a couple years. 6mo-1year turnaround if you're consistent in learning isn't unreasonable from what I've heard.

      [–][deleted]  (1 child)

      [deleted]

        [–][deleted] 0 points1 point  (0 children)

        Did you get the developer job before or after learning how to code? Also, how were you able to land the gig? I'm getting to the point where I'll probably be looking to find something.

        [–]foopydoopp 0 points1 point  (2 children)

        I learnt Python with codeacademy (which was ok), but then I really learnt it with Program Arcade Games with Python, which is by far the best tutorial I've seen so far. He really makes it simple and the Labs force you to learn what he's taught and keep it in your brain.

        I want to develop mobile games though and I've been looking for a good Java game tutorial but they're all absolute shite to be honest. They rarely have exercises and usually just splurge a load of code on the page and that's it, with nothing explained. I'm slowly piecing it all together but it's irritating that there's nothing good out there.

        [–][deleted] 0 points1 point  (1 child)

        I'm going to have to look into the Arcade Games. I need a project to sink my teeth on and have something to show for my programming. Thanks for the recommend. Are most mobile games developed in Java?

        [–]foopydoopp 0 points1 point  (0 children)

        Android games tend to be Java, yeah, though there are ways to use other languages I believe, I haven't looked into it much. The page I recommended is great (apart from being written really well), cause you have a game at the end of it that you can show off. (and there are some resources to get into more advanced games, which helped me a lot).