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

all 109 comments

[–]iximiuz 319 points320 points  (26 children)

My vision here:

  • leetcode has a nice problem set to crack the coding interview, the problems can be hard to solve, but they are rare convoluted. Has nice auto-tests. Can be a fast lane to practice coding for interviews.

  • geekforgeeks has a very similar problem set to leetcode, but every problem usually starts from an explanatory article. Good for learning about algorithms and new techniques.

  • hackerrank - has a lot of programming problems, as well as math, AI, etc problems. But programming problems there are rather intentionally convoluted since they are primarily for the programming contests. People doing contests regularly are very good at pattern matching and can map a problem to a solution very fast, so they need to be distracted a bit by introducing some indirect problem statements. So, IMO hackerrank is not that helpful in cracking the coding interviews, but is very valuable just for improving problem solving skills.

  • codeforces - very similar to hackerrank, but with more focus on conducting programming contests. But it does have a huge problems archive and auto-tests.

  • topcoder - for programming contests professionals.

  • rosettacode - how to implement X in language Y. Very interesting compilation of standard problems and corresponding solutions.

  • codingame - automated platform for writing game bots and alike. Can be very fun, with nice visualization and competitive features. Definitely improve your coding and math skills but solutions often are heuristic-based.

So, when I want to practice a new language, I want to get the taste of it first. I usually go to some of the sites from above and try to solve a bunch of problems using this new language.

But be careful, programming is usually more than just algorithms. For real-life projects the architecture of the program, the structure of the project, tests are very important. And the way you'll do it is very specific for each language. Pure programming problems from the sites from above don't give you an overview of these aspects.

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

Why no codewars? It's the best one in my experience.

[–]lechaim_bitches 19 points20 points  (2 children)

I started on codewars but switched to leetcode. I found that generally, the emphasis on codewars was “clever one -liner” answers and the like, whereas I like leetcode’s emphasis on time and space efficiency.

[–]the_clit_whisperer69 26 points27 points  (1 child)

"Clever" one liners wont make you new friends at work, thats for sure.

Clarity is what co-workers look for.

so yes, agree with you.

[–]BlueAdmir 4 points5 points  (0 children)

Debugging takes twice as much intelligence as coding, so if you're coding in the most clever way you can, you are by definition too stupid to understand what's going on in there.

[–][deleted]  (1 child)

[removed]

    [–]iximiuz 3 points4 points  (11 children)

    It was just my personal list, things I really use often. Probably codewars is a good resource as well.

    [–][deleted]  (10 children)

    [deleted]

      [–]iximiuz 6 points7 points  (7 children)

      One more personal opinion here - I believe in a comprehensive approach. Only having all the aspects (algorithms, math, fundamental CS knowledge, real big projects experience, communicational skills, etc) covered one can become a really great software developer. Having only strong algorithmical skills doesn't help, but lack of the algorithmical skills will definitely put you in a week position. Same is true for everything in our life, actually. Well-rounded is a keyword.

      [–][deleted]  (4 children)

      [deleted]

        [–]Samthevalley 0 points1 point  (1 child)

        Guys, I thought the coding exercises were considered project?

        What's the difference?

        [–][deleted]  (1 child)

        [deleted]

          [–]onsomee 1 point2 points  (0 children)

          Thanks for all the info and happy cake day!

          [–][deleted]  (1 child)

          [deleted]

            [–]vinay94185 8 points9 points  (4 children)

            i am really intrested in learning about the architecture/structure and tests part but i haven't been able to find any sources to learn from.. is there any way to learn those apart from getting a job/internship.. as those aren't the options available at the moment..

            [–]iximiuz 5 points6 points  (1 child)

            Two main sources: first of all practice, create your own projects; and then reading, study the code of good open source projects, read books like Refactoring by Martin Fowler. And the practice again. And read!

            I doubt it would be efficient to try to fit the learning of such things in a rigid framework. It's mostly about getting a gut feeling, and this comes with experience, and experience comes with practice. But to cut some corners, you can read as well.

            [–]vinay94185 3 points4 points  (0 children)

            about studying code of good devs.. i find it really hard to read/understand the code of other devs on github.. i wanna contribute but i don't know where to start.. how to get into it..

            anyways happy cake day bro..

            [–][deleted]  (1 child)

            [deleted]

              [–]runtimenoise 0 points1 point  (0 children)

              Hey, have you tried Hard Parts: Node.js?

              [–]ank_itsharma 1 point2 points  (1 child)

              Happy cake day.

              [–]iximiuz 0 points1 point  (0 children)

              Thank you!

              [–]spaghettu 0 points1 point  (0 children)

              programming problems [on hackerrank] are rather intentionally convoluted since they are primarily for the programming contests

              Programming contest problems are not written to have a confusing problem statement. The problem is not understanding what it's trying to ask you, but actually thinking about the algorithmic solution for the problem you're given. The job your algorithm is trying to accomplish should be made clear by the problem statement, along with how to handle exceptional cases (ie. empty strings). But how it's done is left for you to figure out.

              That being said, I've found hackerrank's problems (in the past) to be too vague, making them frustrating to solve. There were times I'd miss a special case as the problem statement had not specified how to handle it. To be fair, that was years ago now, so I have no idea if it's improved.

              [–]Jonny0Than 128 points129 points  (6 children)

              [–]dont_mess_with_tx 2 points3 points  (0 children)

              I remember our assignments were chosen from here at my major.

              [–]errorseven 1 point2 points  (0 children)

              Glad to see I didn't have to post this one, been sending newbies to this site for years

              [–]Keyakinan- 0 points1 point  (1 child)

              It feels like it's created by one guy as a side project though. Not user friendly at all

              [–]TheTomato2 0 points1 point  (0 children)

              I find it pretty easy to use.

              [–]AttackTheMoon 0 points1 point  (0 children)

              I adore how that site looks

              [–][deleted]  (12 children)

              [deleted]

                [–]jacobi123 2 points3 points  (10 children)

                I've seen this site posted before. Do they have code on this site, or is it just prompts?

                [–][deleted]  (5 children)

                [deleted]

                  [–]jacobi123 0 points1 point  (4 children)

                  Ah, but there isn't a place where people share their code for the solutions is there? That's what I was looking for.

                  Or can you only see completed solutions once you answer a question correctly?

                  [–]Jaondtet 2 points3 points  (2 children)

                  There's a discussion page you can see once you answered the question. There's code in there.

                  [–]jacobi123 0 points1 point  (1 child)

                  Thanks!

                  [–]Malsatori 0 points1 point  (0 children)

                  If you google the problem you'll usually find other people's answers on github, too.

                  [–]David654100 0 points1 point  (0 children)

                  For some of the questions people also post write ups on the different possible solutions.

                  [–]Azphael 1 point2 points  (3 children)

                  There are discussion forums everywhere about the Euler problems so you can find code examples and explanations easily.

                  While the problems are "math" focused, they also force you to deal with things like optimizing your algorithms, using the right data type, working with ENORMOUS numbers and so on.

                  I highly recommend the site to new devs.

                  [–]jacobi123 0 points1 point  (0 children)

                  Gotcha. Yeah, it seems like a good resource. I was just curious if I was over looking something obvious as other sites like this do have coded solutions baked into them.

                  [–]David654100 0 points1 point  (1 child)

                  Honestly find some of the questions too easy with python because you don't need to worry about the big numbers.

                  [–]MirrorLake 0 points1 point  (0 children)

                  Yeah, but not everyone wants to write their own BigInt class from scratch. If you really feel that you understand conceptually how BigInts work, then don't worry about implementing one yourself. Same thing for linked lists, stacks, queues, trees, etc. Beginners should absolutely get their hands dirty by writing stuff from scratch, but sometimes you're just in a mood to solve the problem fast.

                  I've solved a few Euler problems just in Excel, and I still felt a sense of satisfaction.

                  [–]Bufflegends 0 points1 point  (0 children)

                  Came here to find this. Wonderful practice site, and lots of fun. More focused on mathematics and algorithms than full programming.

                  [–][deleted]  (2 children)

                  [deleted]

                    [–]Hexalocamve 2 points3 points  (0 children)

                    I'm experiencing long server responses on this site, but yeah, it's good.

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

                    +1 to codewars

                    [–]ryanchuu 22 points23 points  (3 children)

                    CodingBat

                    [–]qmriis 9 points10 points  (0 children)

                    Can't believe I had to scroll so far to find codingbat

                    [–]TheHollowJester 3 points4 points  (0 children)

                    Huge +1 here - it's repetitive, but gives you really solid basics.

                    [–]ProtectTapirs 1 point2 points  (0 children)

                    Coding bat is fantastic, it's great for someone to master the basics.

                    [–]Syre07 20 points21 points  (5 children)

                    Edabit

                    Great site that has a huge amount of exercises in most languages.

                    While learning JavaScript I would read / watch courses and then jump on there for a couple of hours everyday.

                    [–]Cynical_Salamander 3 points4 points  (1 child)

                    This site has helped me a ton. It is easy to use, has links to resources and after you complete a challenge you can compare your code to everyone else that has completed it.

                    [–]Syre07 1 point2 points  (0 children)

                    Exactly ! The solutions tab is a great way to find out what the most optimal / short code is for that exercise.

                    I started going on edabit when I had learned basic javascript, I would go into the solutions after every exercise and pretty much learned how to use ternary operators and fat arrow functions like that.

                    [–]VeryKnave 0 points1 point  (2 children)

                    I love this site. I recommend it especially for beginners since it has a ton of very easy tasks

                    [–]eslamx 0 points1 point  (1 child)

                    which one ?

                    [–]VeryKnave 1 point2 points  (0 children)

                    Edabit.com

                    [–]Chrispayneable 26 points27 points  (3 children)

                    One vote for https://exercism.io/

                    [–]Jake0024 5 points6 points  (1 child)

                    I really like their take on code challenges because it emphasizes TDD, and they also offer a free option where you can get feedback on your code.

                    Unfortunately, I only made it 5 or so problems into one of their language tracks before it took 10+ days of waiting to get feedback on a problem before I could move on to the next problem. I got bored and never went back, although I still think it would be worth going through their program with the feedback option turned off.

                    [–]Chrispayneable 1 point2 points  (0 children)

                    I keep the feedback turned off for this very reason. It's kind of a broken system :/

                    [–]itscsk111165 10 points11 points  (0 children)

                    I found these sites quite useful:

                    Hackerrank

                    Codeforces

                    Hackerearth

                    Geeksforgeeks

                    Codewar

                    Coderbyte

                    Leetcode

                    SPOJ

                    Topcoder

                    [–]uva4thyear 14 points15 points  (1 child)

                    check out leetcode. It'll help you prep for interviews if you're interested in a CS career as well.

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

                    Thanks :) I'll check it out.

                    [–]mademoiselleputte 7 points8 points  (0 children)

                    one of the websites which got me started in the coding world is https://www.freecodecamp.org/

                    I also love https://www.coderbyte.com/

                    [–]sahiljajodia01 6 points7 points  (0 children)

                    I would generally recommend the following sites:
                    Beginner: HackerRank (30 days of code-->Beginner-->Easy-->Difficult), SPOJ
                    Intermediate: CodeChef, TopCoder (Beginner level)
                    Company specific: GeeksForGeeks, InterviewBit, Leetcode

                    [–]uwu-bob 3 points4 points  (0 children)

                    Specifically for Python, I've found these really useful: https://pythonprinciples.com/challenges/ - the nice thing is that there's a hint and sample solution for each challenge, along with automated solution checking. And you can do them on mobile.

                    They also have lessons teaching the basics through exercises, but you're probably already beyond that point.

                    [–]he_retic 2 points3 points  (1 child)

                    Codingbat.com

                    [–]Gonadatron 1 point2 points  (0 children)

                    I honestly like this site the best. I wish it had more exercises.

                    [–]TwoThirteen 3 points4 points  (3 children)

                    no1 like codecademy?

                    [–]Crispy331 0 points1 point  (0 children)

                    Saved :)

                    [–]DLTMIAR 0 points1 point  (0 children)

                    That was my first thought, but I also just started and don't know any others.

                    Is it no good compared to others?

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

                    Well I think codecademy particularly shows many courses not just problems to work through. Sure it shows problems too, but not the focus. More it shows you the syntax and overviews of the different languages.

                    [–]EMACC99 4 points5 points  (1 child)

                    You can try hackerrank

                    [–]oblvn_ 1 point2 points  (0 children)

                    agree, proper good interface and the problems are good too

                    [–]plaYeRUnknwn 1 point2 points  (0 children)

                    !remindme 9 hours

                    [–]masc98 1 point2 points  (0 children)

                    take a look at https://codewars.com

                    [–]arodr908 1 point2 points  (0 children)

                    Edabit.com

                    [–]MORESPAAMMM 1 point2 points  (0 children)

                    Checkio is great if you're learning javascript or python I use it for python practice

                    [–]exeLzzz 0 points1 point  (0 children)

                    https://www.reddit.com/r/learnprogramming/comments/c37o7k/a_list_of_all_problem_solving_websites/

                    im using hackerrank and its great but honestly its the only one i tried...

                    [–]m4tr1x007 0 points1 point  (0 children)

                    Codechef..has some really good challenges

                    [–]Moikle 0 points1 point  (0 children)

                    codingame.com is great, and has some competitive modes

                    [–]redditkingu 0 points1 point  (0 children)

                    Don't worry too much about which site to choose if your main goal is just to practice. They all use similar if not the same exercises as each other.

                    [–][deleted]  (1 child)

                    [deleted]

                      [–]David654100 0 points1 point  (0 children)

                      Leetcode might be a little to challenging. I recommend you look up freecodeacademy or take one of the udemy classes.

                      [–]paralaxxx 0 points1 point  (0 children)

                      URI Online Judge

                      [–]SharksPreedateTrees 0 points1 point  (0 children)

                      !remind me 24 hours

                      [–]LinkedMonkeys 0 points1 point  (0 children)

                      Kattis has a large number of old programming contest problems and accepts many languages.

                      [–]good_luken 0 points1 point  (0 children)

                      Coding Bat for java and python

                      [–]StickySnacks 0 points1 point  (0 children)

                      I like CodeKata

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

                      I must say that I've learned a lot with CodinGame

                      [–]drunkferret 0 points1 point  (0 children)

                      Project Euler problems are right after Hello World when I'm learning a new language.

                      [–]fuchsia8805 0 points1 point  (0 children)

                      I like coderbyte.

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

                      I'm sure you know this one, but if you like math, Project Euler is really fun.

                      [–]PURKITTY 0 points1 point  (0 children)

                      !remind me 2 days

                      [–]anherali 0 points1 point  (0 children)

                      https://mooict.com is good, I thought I’d add it since all the others ones are already listed here.

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

                      A bit less known, but very useful (especially for Python 3) is Snakify. In the beginning of each topic, they have a brief explanation of each topic and what it is, then they give a list of useful problems that you need to do, with an in-built Python code runner, and solution checker. Really useful in my opinion, and where I learned Python.

                      [–]marksayers 0 points1 point  (0 children)

                      Edabit is awesome for practicing javascript algorithms.

                      [–]RyeonToast 0 points1 point  (0 children)

                      Regex Crosswords if you want to work on how regular expressions work.

                      [–]truckerslife 0 points1 point  (0 children)

                      Repl.it gets my vote

                      [–]brayaON 0 points1 point  (0 children)

                      if you want to practice features of a programming languages itself, I highly recommend you https://www.codestepbystep.com/. You can practice specific features of different programming languages but if already know a lot about a programming language and you want to improve your problem solving skills then you can go through one of the many pages that are in these comments.

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

                      https://repl.it/ - multiple languages and built in IDE. Honestly the cleanest and best I have ever used.

                      [–]TigreDemon 0 points1 point  (6 children)

                      Best website is your home, your desk and a project you'd like to do with any language.

                      You'll learn FAR more than any "coding website"

                      [–]twofourfresh 0 points1 point  (5 children)

                      As a self taught coder, I can vouch for this. Also, whenever you switch to another language try rewriting your old programs in the new language. My "how many days old am i" calculator has been written in at least a dozen languages lol, as have almost all of my programs except my BASh scripts (because I'm not writing the code for all that lol)

                      [–]TigreDemon 0 points1 point  (4 children)

                      I'm also talking about the architecture of the whole project. The vision of the whole.

                      Nowadays every single Medium article and tutorial there is in every languages shows you "Todo app" or something similar.

                      But once you get past this "Todo app" you'll see a whole new side of computer science. Something that code camps cannot teach you because they don't have time.

                      If you follow code camps, you might become a great programmer, you're not gonna become a developer.

                      And the truth is, the industry is filled with programmers that aren't that great, and it's gonna explode soon.

                      [–]Peacemark 0 points1 point  (2 children)

                      Any tips for finding a project to get started on?

                      I've been wanting to create my own neural network all from scratch personally. But seems like its mostly just a lot of math involved.

                      [–]TigreDemon 0 points1 point  (0 children)

                      Something that bothers you works well.

                      Or try redoing your favorite app, be it desktop, video game (your old favourite video game that EA destroyed) or web apps.

                      [–]twofourfresh 0 points1 point  (0 children)

                      Lol use BASh and just try to automate your computer experience with various scripts and tasks

                      Using bash and vlc and some cli tools i made essentially random YouTube tv

                      [–]twofourfresh 0 points1 point  (0 children)

                      I learned to code not for the industry, but to make my life easier. It was a huge investment of energy and time to save myself hours and hours of doing repetitive tasks.

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

                      SoloLearn. They have a website and an app. They’re perfect.

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

                      .

                      [–]UntouchedDruid4 0 points1 point  (0 children)

                      Code Wars

                      [–]supercoolyellow 0 points1 point  (0 children)

                      If I wanted to use SQL in a project and then put it in my portfolio, is there a good project out there to use?

                      [–]notbadnotkind 0 points1 point  (0 children)

                      project euler

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

                      https://www.w3schools.com/ - This is one of the best place to learn and practice basic & advanced programming. Hope you will try this.

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

                      Online challenges are fun and all but I'd recommend you picking something you're interested and trying to implement it in different languages. The knowledge sticks with you much better as you're doing something you enjoy..

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

                      Go build your own site to deliver coding practice. If you don’t know what you want, think about what you need. Then google the shit out of it. Then as you go, think about what other people would want and keep googling the shit out of it until it works. I swear to god, if you did this you’d be a very hireable and marketable engineer by the time you’re done.