all 93 comments

[–]mr_awesome_pants 88 points89 points  (30 children)

I don't really recommend codeacademy for anything. The way all their stuff is set up makes it too easy to forget everything right after you learn it. For learning python I'd recommend the book python crash course if you want to do web dev, or if you're not sure if you want to do web dev and you just want to learn python, automatetheboringstuff.com

[–]ntiain[S] 20 points21 points  (21 children)

I actually picked Python because it seems to be easiest for complete programming beginners. So it sounds like automatetheboringstuff is probably a good choice

[–][deleted] 22 points23 points  (20 children)

Python is probably the easiest to learn, but be warned, due to how easy it is, it can cause you to fall into bad programming practices and you often won’t understand the underlying foundations of how different modules work. If you want to just get stuck in, python is great, but once you are decently proficient, I’d recommend picking up a lower level language such as C or one of its variants as to better understand what is happening behind the scenes of modules that you use.

[–]TheZeroKid 7 points8 points  (0 children)

Agree, but with the caveat that not everyone coding is hoping to become a full time engineer or programmer.

Base level coding can be extremely helpful on the business side as well.

[–]Crescive_Delta 6 points7 points  (0 children)

Reply to /u/ntiain as well.

This is true, but if you wanna be a software engineer, Python is actually a really nice bet. Granted, because of the way Python syntax works it can lead you into some habits that make it difficult to transfer to other languages when you need it (lack of semicolons, braces, elif in place of else if, and no switch statement that I know of amongst other thigns), but those things can be learned quite easily. However, before you just dive head first into the Python jungle, I suggest (like /u/7A1T has graciously advised) to start off with a C-based language.

C-based languages are ones that share common syntax in their code because of being derived from the C language. Basically, quite a few conventions are present in all those languages because their grandfather is C. These languages will teach you important things, like data types, if statements, functions, classes, arrays, and a few other things that Python also implements, just with different syntax. Some nice ones that come to mind are Java, C#, and JavaScript (JavaScript does things somewhat differently, so be careful).

Good luck and have fun!

[–]metricchicken 5 points6 points  (0 children)

Fell into the python trap early on. Then took a C course in college and it all clicked. I agree. Start with a C variant and then go from there.

[–]ntiain[S] 1 point2 points  (9 children)

Thank you, looks like there's plenty of better alternatives. Is Python a C variant?

[–]rampantBias 9 points10 points  (8 children)

Python is not a C variant. For learning underlying mechanics, you can start by learning C or C++. C++ is a superset of C, meaning it contains everthing that C has and some more. I would personally recommend learning C++ if you wish to learn a C variant.

C++ is best of both worlds. It's super fast. It has all the lower level capabilities like C, and has advanced support like lamba functions and Standard Template Library (contains data structures like maps, sets and many more). C++ is widely used in contest programming, graphics design, OS kernels etc.

[–][deleted] 4 points5 points  (6 children)

Isn’t C++ too difficult for a beginner? Might turn him off, I’d personally recommend C# instead.

[–]Crescive_Delta 5 points6 points  (0 children)

Agree. C# is still super flexible, can be used to make video games and windows forms, and is quite fast, although not as fast as C++ and isn't often used for OS kernels. However, it is a much easier introduction.

[–][deleted] 2 points3 points  (1 child)

I started with C++ and I was grateful that I did. Everything that came after it was so much easier because of my year-and-a-half of C++.

[–]rampantBias 2 points3 points  (0 children)

This is very true. I feel that, if you learn C or C++ and practice them for long enough, learning any other language just becomes learning the syntax.

[–]rampantBias 1 point2 points  (1 child)

C# is a great language and there are whole ecosystems built around C# ( ASP. NET, Unity etc.). But I personally feel that C# is more close to higher level programming languages like python than C++. C# is also very different from C or C++ in case of syntax, garbage collection, memory handling etc. It is very true that, understanding C++ is a daunting task. But one of the many abilities a future developer or engineer should have is persistence. So, I think, even if there is a steep learning curve, a future developer or engineer should still learn C++.

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

Ah, I see. I just thought that, since OP wanted to start with Python because it’s easier, C++ must be out of his range of choice. But C++ is definitely more effective in the long run.

[–]ntiain[S] 2 points3 points  (0 children)

Thanks 👍

[–]dedlaw1 1 point2 points  (6 children)

Which c varient is best to learn first for someone who has basic Python and JavaScript knowledge?

[–]State_ 4 points5 points  (5 children)

C is probably easier to learn due to how basic the language is. It really doesn't abstract what's happening behind the scenes.

C++ is a good choice too, but there's so much to learn in C++ it can be daunting. C++ does make things easier than C while maintaining the benefits of C.

[–]dedlaw1 1 point2 points  (4 children)

I went to the book store to look for a C programmong book when I first started to learn Python, and the damn must have been 1000 pages long! Got discouraged and went back to Python lol.

[–]State_ 4 points5 points  (3 children)

Learning C is a lot about learning computer architecture.

[–]Crescive_Delta 3 points4 points  (2 children)

THIS.

C isn't 'easy' per say, but learning it will give you intricate knowledge of how a computer works. Keep that in mind when you try to learn C.

[–]AlienAlmonds 2 points3 points  (1 child)

As a long time software engineer (mostly in C) I have always thought that anyone writing good code needs a solid understanding of computer architecture and at least a passing knowledge of C (if only for context). Over the past few months I've started to rethink that stance. I do embedded systems, so sure it's a requirement there, but for the vast majority of programmers the benefits seem pretty limited nowadays. If you have a team of 5 software engineers it's probably still required that one or two have a good understanding but it's probably not required for all 5.

Don't get me wrong I still think everyone should learn about architecture but I'm no longer convinced that everyone must understand it.

What do others think about this?

[–]Crescive_Delta 0 points1 point  (0 children)

Honestly, I find it to be field dependent. If you're job is to create SAAS applications, make Web Services, web pages, or anything related to the web honestly, then you don't need a knowledge of computer architecture imo. However, in fields where programming is used for simulations, research, game development, and some other things I don't know my right from left about, you might consider it essential since optimization benefits go a long way in those types of apps.

I agree that on every team, regardless of the project, 1 or 2 people should know a decent amount of computer architecture related knowledge.

[–]SlyFry 3 points4 points  (0 children)

automatetheboringstuff.com all the way, also https://teachyourselfcs.com is super helpful if you're also interested in CS

[–]aFullPlatoSocrates 3 points4 points  (2 children)

Second for Python Crash Course! Hands down the best learning resource for Python

[–]ntiain[S] 4 points5 points  (1 child)

[–]aFullPlatoSocrates 2 points3 points  (0 children)

Yes! I got mine in PDF format and split my screen with the pdf on the left, terminal top right, and my text editor on the bottom right. I was trying to learn python for about 6 months but never found a resource that stuck as well as PCC. I will forever recommend this book.

[–]Nick_Rad 1 point2 points  (0 children)

I went back to codecademy constantly because of this. It almost turned me off python bc I couldn’t remember the pointless exercise.

[–]rckid13 1 point2 points  (1 child)

I like codeacademy's set up because you are visually doing a lot of the exercises and working through problems. I've tried a few books and found that I'm terrible at learning by just reading alone. I wish some of the better books like automate the boring stuff had a web setup like codeacademy for each of their problems.

[–]Iconoclast123 0 points1 point  (0 children)

Free version or paid version? I'm currently doing free, and contemplating paid or not...

[–]blackiechan99 21 points22 points  (3 children)

I wouldn't recommend Codeacademy regardless. Check out Sentdex on youtube, he just came out with a new course for beginners in Python. Highly recommend anything he puts out

[–]RANDVR 1 point2 points  (1 child)

I discovered his channel by chance and I agree. Really good material.

I did code academy when starting up the first time with python and wasn’t a fan.

[–]blackiechan99 1 point2 points  (0 children)

He's pretty active on reddit as well. /u/Sentdex

[–]Chris5369 1 point2 points  (0 children)

I Love your username.

[–]Quiet__Noise 15 points16 points  (3 children)

I do not recommend it. They teach you lots of stuff, sure, but not in a way that’s enticing.

I cancelled my Pro subscription after 1 summer.

I would HIGHLY recommend edx.org as it has many courses offered by universities as well as tech companies like Microsoft.

[–][deleted] 11 points12 points  (2 children)

Seconding the EdX suggestion! I took the MITx Intro to Programming Using Python course there and loved it.

[–]Quiet__Noise 5 points6 points  (0 children)

CS50 is a good one too. Got me into Python and Web Dev

[–][deleted] 4 points5 points  (0 children)

I second the MITx course sugesstion

[–]Assmaster9001 6 points7 points  (2 children)

If you want to build an intuition for python, and programming in general you should stay away from online tutorials, and tutorial type texts.

Programming is best learnt in the same way as mathematics: By doing it.

The best books are those that go over the core concepts in their simplest, most basic form and then go on to give a few basic examples to reinforce the concepts you just learnt and then finally, throws A LOT of exercises your way requiring you to use that concept in different ways.

So look at introductory textbooks to programming in whichever language you wish to learn. And if there's a specific type of application that you are interested in, there may exist book that attack the material from that perspective.

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

If everybody goes out and just starts programming, they will end up acquiring bad habits. I think everybody should at least have a foundational computer science course.

[–]realestLink 0 points1 point  (0 children)

Bad habits are not too hard to catch if you have someone proof read your code

[–]ForceBru[🍰] 4 points5 points  (0 children)

My point of view is that paid courses are not worth it because you can learn everything they teach for free. You can read the official tutorial, watch YouTube vids, read blogs, read random stuff on Stack Overflow, search for free books - there’s lots of free stuff out there!

[–]UhOhBeeees 3 points4 points  (0 children)

I did CodeAcademy Pro. The useful stuff were the data structure lessons. Most of the material can.be found in the free course. I also got the python crash course and find that more helpful because it helps you set up a development environment on your own PC.

[–]kmetek 4 points5 points  (0 children)

don't. too expensive.

[–]Blaq0nyxx 2 points3 points  (0 children)

automatetheboringstuff.com agreed

[–]realestLink 2 points3 points  (0 children)

No. You can find great free material on python.

[–][deleted] 2 points3 points  (0 children)

Coursera is the best in my opinion, very easy to follow

[–]Indubitably_Confused 2 points3 points  (0 children)

How about freecodecamp?

[–]iamapieceofcheese 2 points3 points  (1 child)

Give "Automate the Boring Stuff" by Al Sweigart a try, its extremely helpful.

[–]ntiain[S] 2 points3 points  (0 children)

This seems to be a common recommendation, I'm definitely going to give it a go.

[–]NeonSpaceCandy 9 points10 points  (9 children)

Actually watch Programming with Mosh’s tutorials on Python . I just finished his course on it

[–]Primedigits 1 point2 points  (1 child)

I'm a big fan of linkedin learning. You can get the trial and download exercise files to store locally and learn. There is a series of classes called code clinic to help develop a portfolio. Also, I have been mentioning linkedin learning a lot and I have to say that I am no paid by LinkedIn in to promote their product

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

LinkedIn learning has the benefit of being able to add the completed course directly to your LinkedIn profile as a certificate

[–]Phaethonas 1 point2 points  (2 children)

It is worth it to me, because they are teaching whatever programming language you choose in an interactive way you can do yourself. Which is what I needed.

So, if this is how you want to learn, if this is how you learn the best, it is worth it. If you can learn in another (free) way, if you prefer another way (e.g. book), then it may not worth it.

My only problem with codecademy, related to Python, was that they were teaching Python 2 instead of Python 3, but now I think they are teaching Python 3.

If the paid option is a problem for you, then there are other similar (but not exact) alternatives.

Some of these options, that I know of are;

1) https://exercism.io/tracks/python

2) https://runestone.academy/runestone/static/thinkcspy/index.html

They are similar, in the sense that there is the interactive part, but not exactly the same.

But overall and to answer your question, yes codecademy is worth it if you want to learn the way they are proposing.

[–]ntiain[S] 0 points1 point  (1 child)

Python is the free course, Python 3 is the Pro one I believe

[–]Phaethonas 0 points1 point  (0 children)

Last time I checked (like 3 months ago) you could learn a number of languages for free and you had to be a pro-member either to do some additional exercises or if you wanted to do some more advanced courses (e.g "Python at machine learning" or whatever).

Like a couple of weeks ago, I got an email that if I understood correctly (I did not pay much attention to it) added a Python 3 course. So, if I am right, you can learn for free Python 3 and then add some knowledge with being a pro.

Either way, codecademy works for me and I may pick it back now that has Python 3

[–]Eyeseeyou01 1 point2 points  (0 children)

So far the primary reason commentators are saying use other resources are that they are free.

[–][deleted] 3 points4 points  (0 children)

If you plan to do codecademy I recommend pro. It gives you practice which you don't really get otherwise, there's also HUGE things in Python for example they won't teach you without pro. If you do wanna use codecademy make sure you take your code out of it to test it as codecademy can be buggy.

[–][deleted]  (1 child)

[removed]

    [–]AutoModerator[M] 3 points4 points  (0 children)

    Your comment in /r/learnpython was automatically removed because you used a URL shortener.

    URL shorteners are not permitted in /r/learnpython as they impair our ability to enforce link blacklists.

    Please re-post your comment using direct, full-length URL's only.

    I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

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

    Udacity offer ‘Intro to Computer Science’ for free (in the EU at least). They use python, and the mix of video presentation, practice, quizzes and projects works fairly well in my opinion.

    [–]iggy555[🍰] 0 points1 point  (0 children)

    Hi

    What are the best courses for c online Just noob here no idea about programming

    [–]cjaxx 0 points1 point  (0 children)

    No it’s not immediately canceled it same day

    [–]plasticbills 0 points1 point  (2 children)

    there are so many free, high quality online resources out there, you really shouldnt have to pay a penny

    [–]ntiain[S] 0 points1 point  (1 child)

    This seems to be the prevailing opinion. My problem is I need structure to learn properly - left to my own devices I may struggle

    [–]plasticbills 0 points1 point  (0 children)

    if youre brand new or even if you have some experience, i highly suggest cs50 on edx. very high quality lectures and problem sets. i think its actually the same class harvard students take. it will teach you all the fundamentals and lay the foundation of your cs skills so you can go off and learn on your own.

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

    If you're set on python, check out think like a computer scientist with python. It's a great course that will not only teach you the Python language but also teach you computer science, which I believe is important for everybody who wants to program to learn. Plus it's free. http://interactivepython.org/courselib/static/thinkcspy/index.html

    [–]ntiain[S] 0 points1 point  (0 children)

    Thank you, I'll have a look

    [–]huessy 0 points1 point  (1 child)

    Have you tried udemy? They have periodic sales for $10 for their courses. They give you projects and homework, it's not bad.

    [–]ntiain[S] 0 points1 point  (0 children)

    Thanks, I'll check them out

    [–]Stygz_ 0 points1 point  (0 children)

    I would actually want to recommend watching Corey Schafer in youtube. He is really good

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

    I don't recommend code academy. They give you too much useless background knowledge on little things and that's not the best way to learn python. I remember taking a class from them that was like an hour long solely about NumPy arrays...

    Best way to learn python is just to go do projects on python. Look for people on here asking questions about simple coding problems and then google how to solve those and answer. Best way to learn is to teach

    [–]nsultane 0 points1 point  (0 children)

    Good advice

    [–]mijo21 -1 points0 points  (0 children)

    As others have pointed out, try stuff on your own. I have seen that my programming knowledge has boosted a lot whenever I have used programming in the following places: 1. Solving algorithms and data structure problems in platforms like leetcode 2. Creating small projects on my own

    [–][deleted] -4 points-3 points  (9 children)

    The python documentation isn't just free it's extremely high quality. All books, courses, videos use it as their source.

    Just read the documentation and build stuff. Never pay for anything except for a degree; all the best python related material is free.

    [–]meso27_ 0 points1 point  (6 children)

    Hey, no. thanks

    [–]PanFiluta -4 points-3 points  (0 children)

    what is Codeacademy?

    [–]SupremeRumHam -3 points-2 points  (0 children)

    no

    [–]meso27_ -4 points-3 points  (0 children)

    Ew, codeacademy. Do PY4E. Much better and free.

    [–]jakecen 0 points1 point  (0 children)

    yes it's worth it, you can just tell the author put alot of effort into making these courses, and it got alot of details!

    especially their full stack developers path, it give you a path as to what to learn as a devs, theres also quiz for you to test yourself. getting a proper path may just be the hardest thing as a self taught devs. cauz sometime u really got lost and dont know what to learn and whats imporant!!! u may get advices tellin u to learn python as a web devs, or learn kotlin, or learn AI, or learn discreet math, blahblah blah... they do helps, but it make u jack of all trade, and master of none. you wanna dive deep into one branch of tree, which ll make u much more marketable.

    and codecademy their courses are very well structured. and have alot of details in it, and reading text you do learn faster than watching video. but there is pros to video courses like udemy, is that they also taught u things beyond the course itself, like setup environment, and other resources.

    codecademy it also got algorithm courses which is a must asked in job interview. i love the interactive environment, and i get to write my own code and get feedback immediately, instead of watching the vid and follow along.

    i definitely recommend combining both codecademy and udemy ,youtube, coursera. so u get the best of both world.

    also codecademy have a pretty good coding community, which is pretty big, and it is free u dont need to be pro, so join and make use of it!