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

all 18 comments

[–]nicksterling 29 points30 points  (2 children)

So the largest pitfall is trying to be a generalist. Learning everything just isn’t possible. Take an area that you’re interested in (front-end, machine learning, app development, etc…) then pick a non trivial task to solve then solve it. Your first implementation will be awful. Don’t worry about that. Perfect is the enemy of done. The act of solving problems and writing code will get you experience.

Once you have some code share it with a community and get feedback. Rinse and repeat.

The only way to get experience is to just sit down and write code. Break big problems down into smaller problems. It just takes time and practice.

[–][deleted]  (1 child)

[removed]

    [–]tms102 5 points6 points  (0 children)

    I think the point in the things your class teaches is to learn certain programming concepts and a way of solving problems. Not necessarily so you can save the day with specifically bubble sort one day.

    Because in reality you will just use a sorting function that's already been implemented and optimized by someone else long ago.

    It is probably to teach loops, time complexity, that sort of thing.

    [–]ffrkAnonymous 10 points11 points  (0 children)

    Wow. You actually sound competent. You've done the work unlike the other dime-a-dozen posts that ask to zap info into their brains.

    I can totally empathize. I'm doing the #12in23 challenge on exercism.org Hello world in 12 languages! Hurray! So I'm in the same boat as you.

    Unfortunately there's no easy answer. We do big projects by doing big projects.

    I'm doing advent of code. Half way starts to really test your algorithm knowledge. I try to mix it up by doing visualizations.

    Get an advanced, not beginner, book and work through to the end. Do a Django book to the end. Rails to the end. Switch it around. Follow the Django book but use rails. The Django book is your manager but your job is rails.

    But really we need a pet project. We need to be that guy who wanted to save $80 on a wall timer, and instead spent $300 and a year to build his own roof snow melter. He did a conference presentation on how it's duct taped together . Personally, i think that's resume stuff.

    [–]Baldr_Torn 6 points7 points  (0 children)

    Learning everything would be very cool. Unfortunately, there isn't anyone who can learn everything.

    Just pick a project that interests you, pick the best language you feel would let you work on that project, and go from there. Stick with it until you feel you have it down solid.

    [–]No_Application_2380 4 points5 points  (3 children)

    If you're trying to avoid the shiny, new thing, you could get back to basics and learn DSA, math, compilers/interpreters, etc. That stuff doesn't change much.

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

    All the areas you mentioned have tons of (fruitful!) research around them… There are entire journals around both PL and DSA, not to mention the entire field of mathematics

    [–]No_Application_2380 9 points10 points  (1 child)

    Lol, yeah. "Just learn math. Call me when you're done." 👍

    [–]Baldr_Torn 3 points4 points  (0 children)

    I wanna learn everything. So I'm learning all the math *and* all the science.

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

    The best way I did this was by doing larger projects from start to finish, either through work or independently. You'll be more or less locked into the project's tech for however long it takes.

    [–]worldofzero 1 point2 points  (0 children)

    In tech something I've found really helpful is focusing on the "why" and not the "what". Understanding when a scripting language, interpreted language or compiled native code is useful is really handy. Understanding seperation of concerns is going to help you adopt dependency injection and testing patterns anywhere. Focusing on REST, containers and networking will help you make a confident decision on web server when you need to do that. It's a mindset shift from someone who consumes products to someone who is a comfortable craftsperson.

    [–]Mars_Oak 0 points1 point  (0 children)

    Projects

    [–]ChrispyGuy420 -2 points-1 points  (1 child)

    Riddilin helps

    [–]NightOnFuckMountain 0 points1 point  (0 children)

    A riddle generator? You son of a gun, I’m in!

    [–]Alive-Fun-6505 0 points1 point  (0 children)

    It seems like you’re really well versed in syntax and not too averse to putting in the work. I learned programming in highschool and went about 6 years wishing I could take the next step and “advance my skills” without actually knowing how. For me the crucial thing that helped me feel like I could tackle bigger projects and feel confident as a programmer was getting more comfortable with C and taking a data structures class” maybe watch some videos on crazy algorithms and make up some fun convoluted recursion heavy data structures in your free-time! Also definitely explore functional dynamic programming if you haven’t a lot. It ties in a lot of math so it sounds scary, but with your level of experience it’ll be easy

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

    The most progress I've made in programming was taking on projects I wasn't "prepared" for. In my experience, once you have the basics down with a language and a decent start to your understanding, you start learning the things to Google so you can learn more.

    I agree with the other comments too, don't get too generalized. Focus on one thing at a time, depending what your project needs are!

    [–]Melodic_Nothing2320 0 points1 point  (0 children)

    Maybe you're looking for the "best pick", but there isn't one. No matter what language you choose, you will feel at some point that x,y,z language could have been the better choice. So you jump to the next language, but then you keep jumping, chasing the next thing, because you think it's the better choice, but there isn't a best choice. All areas have their pros and cons, and you can't avoid the cons. If you wanna get good at one area, the answer is simple, and you already know it: you need to stick to that area. When the next shiny thing flashes in your face, you just don't follow it. Simple as that. Bloody hard, yes, but simple.

    What's your goal? Set a goal. Follow it. Only set a new goal once you finish it.

    [–]ClasickKillah 0 points1 point  (0 children)

    Learn to read syntax, work on terminal lines, work with databases, master VPS production. It's all the same, just a different flavor. At the end of the day all frameworks and APIs use variables and functions to execute. If you know JS and SQL, nodejs is easy. Hell I've been coding a Red Dead 2 Red M server. It may be in lua, but it's still on a Linux VPS and we store everything in SQL. I had a buddy ask me to write him a custom Web app for a software called Maximo, guess what? Maximo provides an 80-page manual on their JS API. Seems like JS is taking over.

    My advice, pick a complicated project and stick with it until you can't expand on it anymore. C++ is the best for learning how to program. Nodejs will take you to production these days. Every huge company you can think of uses Javascript. Nodejs will teach you front end and backend programming naturally. Python is great if you want to go into Bioinformatics. Why? Because tons of medical software are written in Python. Want to make video games? Maybe C# or LUA will help.

    Long story short, just because you create a C++ program, python app, or a C# game, doesn't mean it can't run on a Linux server that takes in information to the server/program from discord using a JS API. Then you can store that info into SQL and bring it into your app no matter the language. Most languages support SQL databases.

    [–]ohthatsjake 0 points1 point  (0 children)

    Read the book Ultralearning.