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 ?

  1.  

  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

            Agreed

          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.

            Pros:

            • 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

            Cons:

            • 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.

            Pros:

            • 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.

            Cons:

            • 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.
            Conclusion

            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

                What?

                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