1. 7

I’m assuming you do have knowledge of Data Structures and Algorithms but what are some trade offs when doing leetcode or building side projects or even learning a new tool or learning a programming language.Leetcode can help you get into FAANG but doing side projects can help learn something new. So what do you guys think and what can be tradeoffs ?


  2. 17

    Possibly off topic but… what are you talking about???

    1. 17

      I was wondering the same question, and searching the web for “leetcode”, I found : https://leetcode.com/ which seems to be a platform for coding challenges.

      Hope it answers your question, it answered mine.

    2. 8

      depending on how much experience with that sort of data-structure-oriented algorithm you have, leetcode might push you out of your comfort zone and get you to learn new techniques, whereas you can build a side project using just the stuff you are already familiar with without suspecting there might be a better way to do some things.

      1. 1

        I am pretty okay with data structure like I do understand how they work but i always have difficult time getting started with leetcode plus it doesn’t really excites me as compared to working on something cool like automating or building a useful tool

      2. 8

        Leetcode and side projects gear you for different things.

        Leetcode: In combination with an interview prep book like “Cracking the Coding Interview” and “Elements of Programming Interviews” is a good prep for a common form of coding interview. The reason I find Leetcode useful is that it runs your code against a battery of tests and shows up your careless coding and also tells you if you’ve gotten the performant algorithm that is expected. I also did their mock interview questions and found that the timer put stress on me, and it was good to learn to deal with the stress.

        Side projects: This teaches you a new language and how to develop software. It depends on your learning style but I find this is how I learn a language - I love to see the end result, and creating a piece of software that does something I’m actually interested in using helps me keep my actual software skills sharp. A lot of side project work can be the mundane stuff - reading files, managing memory etc. etc. and I’m not always figuring out cool algorithms, but the end result is much more meaty and educational.

        1. 1

          Definitely true and I totally agree with you

        2. 6

          Side projects, if done in the way that demonstrates a mostly realistic deployment teach you a lot about the “shadow work” of developing software. Writing the code is only part of the work. Getting it tested, packaged, deployed, and monitored is the other 50% at least.

          Note - it may sound like I’m talking only about web services but those other “tasks” apply to desktop software as well. There’s a lot of peripheral work to go from “programming” to “software engineering”.

          1. 1


          2. 4

            I would say that side projects are a far better preparation for the real world than algorithm competitions. That being said, I have a lot more experience with side projects than I do with algorithm competition sites. I have messed with codewars some in the past.

            Guided Problem sets

            This includes leetcode, programr, codewars and other software educational sites, as well as large portions of CS degree homework.


            • They give you a concrete set of steps to take
            • They often give you a lot of examples to work with
            • (as pointed out by @zem): They can help you approach topics outside your comfort zone


            • They are almost always about already-solved problems
            • The solutions might already exist online
            • They are often more puzzle or homework oriented.
            • You know that a solution exists
            Side projects

            This is a wide-ranging spectrum. I’ve include writing a CMS to learn web programming, participating in Game Jams, setting up a VPS and hosting an unreasonable amount of stuff on it and so on. I’ve seen other people automate things using Arduinos or RPis. Basically, you find a project in your life you’d like to try to solve, and then learn what you can to try to solve it.


            • They allow you to actually have something that you can show off to other people.
            • If you actually make something in a shippable state (whatever that means for what you’re making), then you learn a lot of related skills that a guided problem set may never touch on.
            • They force you to perform a lot of critical thinking: You have to decide what to make and how to make it. This is something that a guided problem set will never quite be able to do on it’s own.
            • They allow you to try new/different/crazy ideas that may or may not have
            • And the biggest pro: They force you to deal with ambiguity and the real world in a way that guided problem sets do not.


            • It is easy to get lost in an infinite yak-shave, to always keep polishing one project, and never deciding to move on.
            • They, on average, will take more time and work than a guided problem set
            • It’s easy to fall into anti-patterns, where you learn a lot, but don’t end up making anything useful. If learning is what you’re aiming for, that is fine. One common side-project anti-pattern I’ve seen discussed is people who make game engines without making games to target them. They are often said to be not usable for actually making games. Or making a programming language that doesn’t have any good use-cases.

            So, all that being said, I think that guided problem sets are useful early in your life as a software developer as a source of guided practice, but many lose most of their utility after a year or so. When I’ve learned new programming languages or libraries, the ones that have stuck are ones where I picked them up with a goal in mind in addition to “Learn X”. Like learning Lua and Love2d in order to make game jam games, or picking up Nim to use for writing a jumplist or small wiki. Side projects also give a better representation of what it’s like to learn on the job than a guided problem set.

            Now, that being said, I am looking into a few guided problem sets, like 99 Bottles of OOP (a book), that might provide something new/unique. I do think they have their place, but I think you should favor less directed learning where you can.

            1. 1

              I totally agree with you and when you are working on side project it definetely excites you when compared to leetcode. I feel like leetcode helps you get into FAANG but besides that it does help you with problem solving but if you get deep into leetcode I feel like then its more like pattern recogntiton when you solved a good amount of problems.

              1. 1

                I wouldn’t over-rely on leetcode, or over-rely on getting into a FAANG company. Microsoft is an option, for one, and there are a lot of jobs outside the big 5-6 companies. And I think the heavy algorithm interviews are getting de-emphasised just a bit. @akkartik might know a little more.

                1. 1

                  Interesting point you made

            2. 3

              leetcode is fun from time to time to polish your algorithm knowledge but what I’ve found really helpful are code katas. They are the middle point between a pure algorithm exercise and a side project. I’ve found them super helpful at honing my methodologies skills.

              1. 3


                1. 2

                  Suppose you had a year to study anything you wanted without worrying about finances. What would you study?

                  Then ask yourself why you can’t make strides toward that now.

                  1. 1

                    I would build a side project that would benefit people.Hope that answers lol

                    1. 2

                      Side projects sounds like a good focus for you!

                      I tend to learn the algos/data structures I need for side projects rather than on their own. I’m lucky to have gone thru a CS education, mind you. But I tend to stay focused more if I have to produce a deliverable of some kind. Hope that helps.

                      1. 1

                        Same here CS algorithms teaches you underlying concepts of things we don’t see everyday and I think it’s useful to have that knowledge