this post was submitted on 13 Oct 2023
12 points (92.9% liked)

Programming

17537 readers
181 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities [email protected]



founded 2 years ago
MODERATORS
 

I've been learning on and off about programming for 3 years now. Mostly front-end, html/css/js, for school projects. My degree isn't in CS or IT, so projects that give the opportunity to code are scarce and often short. So I get that I may simply may not have enough hours in coding.

So I'm delighted to be taking CS50 as a Minor at the moment, this has given me the chance to sink a lot of hours in coding, and currently I am in week 5 Data Structures.

But every time I start on the problem sets, I feel overwhelmed and feel like I don't understand anything. I have to Google/GPT the most basic of things. Even though I've been programming regularly the past 6 weeks, I don't feel as if I have improved and I'm starting to doubt if this is a career for me.

In a year I would like to find a career in development. Have any of you felt this way? And what has helped you get rid of this imposter syndrome?

all 20 comments
sorted by: hot top controversial new old
[–] Lmaydev 8 points 1 year ago

I see new developers say this all the time but how do you expect to know things without looking them up?

6 weeks really isn't a lot of time at all.

As you code more you'll start to notice patterns in code that you can apply elsewhere.

Once you've been doing it a long time it's basically a matter of combining things you've done 1000s of times in different ways.

Stick with it, often it'll "click" after a while.

[–] onlinepersona 7 points 1 year ago (1 children)

That's the great thing, you never get rid of imposter syndrome! The thing that helped me was the mantra "there's always someone better than you". It's true for everything, so I can focus on just having fun and delegating to those that know more (which is also an important skill since nobody knows everything).

As for improving skills, practice makes perfect. 6 weeks is pretty much nothing. If you work out on one muscle group for 6 weeks, the chances of you seeing significant gains is minimal. You've gotta stick with it for months or years. Just look at the weight-loss journeys of people - it takes some years to lose their weight.

Don't be hard on yourself, find interesting tasks or sites with challenges you consider interesting and try to solve them. https://exercism.org/ is OK, but there are many different ones out there. I can definitely recommend watching videos that explain data structures visually. They'll make much more sense.

Good luck!

[–] [email protected] 6 points 1 year ago* (last edited 1 year ago) (2 children)

Don't rely too much on chatgpt before you understand the basic concept.

You should also read the books. E.g. pick axe book(i.e. programming with ruby). You could also find the recommended books in your CS50 course. Also ask your online course buddies and instructors for help.

If you only have exp in html, css and js, don't regard yourself as you are already familiar with programming. Learn as a beginner. Go back to the earliest topics you have trouble with. Try to get the concept and work your ways to the situation where you feel overwhelmed.

Good luck!

[–] Lmaydev 5 points 1 year ago (2 children)

I personally disagree with this massively. ChatGPT is really good at explaining concepts.

Don't ask it to write your code though.

[–] bnjmn 1 points 1 year ago

The problem is, ChatGPT tends to be very willing to throw code at you, even if you didn't ask for it.

[–] atheken 1 points 1 year ago* (last edited 1 year ago) (1 children)

LLMs aren’t going to give you a roadmap or prioritize concepts. They also frequently produce contradictory information.

They’re good tools if you already have some experience and vocabulary in the field, but a more structured approach to building some projects and acquiring skills is better.

[–] Lmaydev 3 points 1 year ago* (last edited 1 year ago)

Indeed. But you just have to learn to use them like any tool.

Most things that used to be a Google followed by skimming articles can now be a question to them.

They are also remarkably good at explaining code snippets. If you drop a line of code in there and ask it what it is it'll explain it piece by piece with correct terminology and answer any follow up questions really well.

That gets around the not knowing terminology problem that many beginners have

I do this frequently with the legacy SQL I have to deal with at work. It can handle some really nasty stuff very well.

[–] [email protected] 2 points 1 year ago

If I go over existing code then it all seems to make sense. And when I start coding I can recall the relevant code from the lectures, notes and previous exercises. But I often get stuck on using the right syntax when working with new concepts. Then I prompt that part like a debugger, and ask it to explain how and why it works; so I can proceed. I haven't check any of the recommended books so i'll dive into those

[–] [email protected] 5 points 1 year ago

I dropped out of school for a job so take all of this with a grain of salt.

Learning to program is more about learning to think in a specific kind of way. Datastructures, algorithms, and other math-y aspects of programming are incredibly unimportant in the day to day of the average programmer. BUT, and this is a big but, learning these things will give you a better understanding of how to think about programs like a programmer.

Learning to think like a programmer is the single most important skill a programmer has, and it is the most difficult to acquire. In essence thinking like a programmer just means thinking like an engineer or a scientist but with a few extra bits

Generally this style of thinking focuses on key aspects:

  • iteration (tweak, try again, tweak, try again)
  • decomposition/divide and conquer (identifying when you can make a big hard problem into easier smaller ones)
  • analysis and testing ( logging, mentally tracking the programs "state", and learning how to prove yourself wrong through experimentation)
  • etc*

In general you'll need to develop a thick skin for that feeling of "I have no idea what I'm doing." Because it never goes away (I'm at 10 years as a hobbiest and 4 years professionally). Instead you should focus on the meta-process of developing your process for learning new things. At it's essence all engineering is learning to build tools that help you build other tools. Except right here and now the tool you are building is your mental process for problem solving

Stick with it. It does get easier

*There are other techniques as well but these are arguably the most fundamental

[–] [email protected] 3 points 1 year ago

I to this day still have to Google tons of stuff, even very simple things; sometimes it's just hard to remember that function's name or whatever, it's no big deal.

Programming didn't click for me until I actually built something. Just a little command line game. Eventually after a certain point I realized: oh my god I can do anything! (with enough time)

You'll get there, but try working on something bigger with zero stakes where you can feel out how code you write in one place ripples out to other places.

[–] philwills 3 points 1 year ago

Imposter syndrome is real... if you enjoy it, keep at it. So some Advent of code or leetcode problems (start on easy). Before long you won't need to Google the easy things. As with all things, it takes work and time to get good (for most people).

[–] bnjmn 3 points 1 year ago

Six weeks isn't much at all. Don't be too hard on yourself. Get used to being okay with Googling shit - you'll be doing that a lot.

Tbf, DSA is a hard topic. I struggled with them in bootcamp. Two years later, they're still hard - but much less so. I don't think they will ever be easy. But less hard is a small victory, and small victories - I take those anytime I can get them

[–] [email protected] 2 points 1 year ago

Just keep going.

Mood swings occur in any field. If you like the task of coding, problem solving and researching you are fine.

Everybody needs to look up stuff. The human brain was made to find patterns and think, not to store information indefinitely. For this we have made computers.

Try not to learn something by heart. But to hone your skills in doing/processing/solving things.

Looking at code and understanding it is much more appreciated than knowing specific algorithms.

Sure patterns are helpful and are actually necessary to be known. But those will come with time.

[–] [email protected] 2 points 1 year ago

Just for fun, this is what chatgpt would have told you:

It's completely natural to feel overwhelmed and doubt your abilities when faced with complex programming tasks, especially when you're just starting out or challenging yourself with new concepts. Many people in the field of programming have experienced the imposter syndrome at some point in their careers, so you're not alone.

Here are a few suggestions to help you overcome imposter syndrome and gain more confidence in your programming skills:

  1. Recognize your progress: Take a step back and reflect on how far you've come in your programming journey. It's important to acknowledge the skills and knowledge you have acquired over the past three years. Celebrate even the small victories, as they all contribute to your growth as a developer.
  1. Embrace the learning process: Programming is a continuous learning experience, and it's normal to encounter new and challenging concepts. Instead of being discouraged by what you don't know, embrace the opportunity to learn and grow. Remember that every problem you solve, even with the help of Google or GPT, is an opportunity to expand your knowledge.
  1. Break down the problem: When faced with a daunting problem, break it down into smaller, manageable tasks. Focus on solving one part at a time, and gradually build up to the bigger picture. This approach can help make complex problems appear more approachable and less overwhelming.
  1. Seek support: Don't hesitate to reach out for help and support. CS50 is a great course with a strong community. Engage with your peers, participate in discussion forums, attend office hours, or join study groups. Collaborating with others and sharing experiences can provide valuable insights and encouragement.
  1. Practice regularly: Consistency is key when it comes to improving programming skills. Try to allocate regular blocks of time (even small ones) to practice coding. The more you code, the more comfortable and confident you'll become.
  1. Focus on projects and practical experience: While courses are important for building a foundation, practical experience through personal projects or internships can significantly boost your learning and confidence. Look for opportunities to apply your programming skills outside of the classroom, even if they're small projects or contributions to open-source initiatives.

Remember, the imposter syndrome is common in the field of programming, and many experienced developers have gone through it. Believe in yourself, be patient, and keep pushing forward. As you gain more experience and tackle challenging projects, your confidence will grow, and the imposter syndrome will gradually fade away.

[–] [email protected] 2 points 1 year ago

I have also begun the CS50 and is not easy my friend, in particular if you start without much background. And week 5 add a pretty big piece of info to the mix. I'm also learning and feel often dumb, I know other people learning and they also feel dumb from time to time.

Keep learning you'll see the progress, and the imposter syndrome is what forces you to learn more and do better. Think of it as an ally instaed of a problem.

[–] [email protected] 2 points 1 year ago

Those cs50 courses are not particularly easy and the problem sets are designed to push you.

You'll always need to quick reference basic things, so don't worry about that, and ChatGPT is great for 'dumb' questions.

As far figuring out how to tackle a problem, remember to break things down into smaller problems and work with those. Each small problem should have it's own function and then test each function on its own to ensure you get the results you want.

Data structures and algorithms are not easy. While cs50 does a great job explaining things, look at other sources too for concepts your having trouble with to get a different perspective. While your doing that, experiment with the concept and play around with it in code.

[–] namingthingsiseasy 1 points 1 year ago

Lots of others have made good suggestions so far. The only one I'll add is, do you have anyone you can work together with? Or alternately, any sort of teaching assistant or tutor programs? It helps a lot because there's a lot of rote memorization when you're starting out. There are a lot of annoying things like language syntax, error messages, etc. where it's helpful to have a second set of eyes to help break through those mental blocks. Getting a quicker turnaround on these kinds of things will make the development process much more enjoyable.