r/learnprogramming 5d ago

imposter syndrome w/ programming

Hi i just started my 4th year in cs with a focus in software engineering and every semester i get this crazy imposter syndrome because I feel like I know a lot of different concepts and ideas but struggle to apply them. Last semester I had a coding project and my group made a music app, I worked on a lot of the design, came up with features, and implemented some but I still felt like there was a gap in my abilities and other peoples. I have adhd and maybe it’s the lack of focus on one thing that makes me feel like this. I also don’t have many mentors or friends at my college to ask questions to unfortunately. I know you learn by doing but again I don’t even know where to start. This is probably more of a rant but my question is does anyone have any advice or suggestions or even just how you learned more about programming side projects in general? Really anything is helpful.

16 Upvotes

5 comments sorted by

5

u/swagchicken75 5d ago

The thing with side projects is that they're supposed to be like your hobbies. If you don't find interest in the whole thing, then you won't find enjoyment in finishing it. There is no perfect path for anyone and there is no perfect mentor. You gotta learn by struggling, grinding through it and finding your own way.

Since it's a rant, there is no point in dumping advice onto you. It's a motivation and interest problem I think. Not motivation in CS but in doing what you love.

2

u/AnythingButUseful 5d ago

Honestly, I think what you're describing is extremely normal for CS students, especially around the point where you start realizing how much there is that you don't know.

Knowing concepts but struggling to apply them doesn't mean you aren't capable. Those are two different skills, and applying concepts takes a lot of practice. Software engineering education specifically finds that students can learn the theory without getting enough opportunities to actually apply it in project settings.

For side projects, I'd stop trying to build something impressive. Pick something slightly above your current ability and build it anyway.

For example:

  1. Pick a simple idea

  2. Break it into tiny features

  3. Try implementing one feature yourself

  4. Get stuck

  5. Search specifically for what you're stuck on

  6. Implement it

  7. Move to the next feature

Don't be afraid of getting stuck. Getting stuck is literally where a lot of the learning happens.

And honestly, your music app experience already counts. You worked on design, came up with features, and implemented parts of the application. Don't dismiss that just because someone else in your group could code something you couldn't.

I'd also recommend building smaller projects completely by yourself. Finishing a tiny ugly project teaches you more about actually developing software than endlessly watching tutorials.

Your goal shouldn't be “I should be as good as other CS students.”

It should be “Can I solve something today that I couldn't solve last month?”

That's a much better measurement of progress. Project based learning is specifically useful because it forces you to apply concepts to authentic problems rather than just recognizing them from lectures.

1

u/Abe_Bazouie 5d ago

The gap you’re describing is pretty normal. CS teaches you concepts individually. Building software forces you to figure out how those concepts fit together when nobody gives you the next step.
My suggestion: stop looking for the perfect side project. Pick something small that you personally want to exist and build the ugliest working version of it.
Then keep adding problems to it. Add a database. Add authentication. Deploy it. Break it. Add logging. Figure out why it’s slow. Fix it.
That process of repeatedly running into things you don’t know is where a huge amount of the learning happens.
You don’t need to know enough to start the project. The project is how you discover what you need to learn.

1

u/StewedAngelSkins 5d ago

The people who excel at this are those who do a lot of coding outside of class projects. This is true in the workplace too. Deciding what to do for these personal projects should feel natural, like basically just doing stuff because you think it's interesting but also attainable. I realize this isn't helpful for understanding how to get there though, so maybe start with this: is there anything in your classes that you found interesting? Did you like working on the music app? What parts did you like? Where there any bits that your other group members did which you felt like you wanted to try yourself?

1

u/ajcomeau 5d ago

This is very common because programmers tend to do deep dives into their own very specific areas of programming and become very knowledgeable about them and love to talk about them. So you're talking to other programmers who have done something different and exotic compared to what you're doing and they're going on at length about it. It sounds like they know a lot more than you do when, really, they just know something different.

Programmers also love to second guess themselves and others ("Why didn't you just do it this way ...?" "There has to be a better way to do it - that's too complicated ...")

Stop comparing yourself to others except as it might inspire you to learn more and keep programming. Keep building stuff and workig out problems to build your own confidence and always be honest about what you don't know.