How do I, unironically, get really good at programming? Primarily c++...

How do I, unironically, get really good at programming? Primarily c++. Is it just a matter of doing as many exercises as possible or am I missing something here? I feel like I have a solid foundation but I really want to fly through the upper level courses

Attached: 1553588384783.png (300x250, 151K)

A combination of studying algorithms and datastructures on their own and building your own projects that use those A&DS as building blocks

But that's what I'm saying, do I just go through a book to get good?

Go through a book to learn language basics and idioms and try to implement your own programs along the way.

That's pretty much what I was thinking. Any other advice?

I find reading someone else's code is very helpful, especially if we both solved the same problem in very different ways

read and write code

skill progression
1. understanding a particular language
2. solving a small self-contained problem (as you would doing challenges)
3. gluing shit together (webdev and using other people's shit)
4. solving larger more open problems

after this you are pretty good mid tier dev. doing excercises only help part 1/2.

Do you mean like reading random code or doing those find the error(s) exercises? Because I do enjoy doing the latter
What do you mean by 4? As in doing large projects? I still haven't figured out what projects I want to do yet. I don't feel like I'm good enough to do anything cool on my own either.

You can do a shit load of cool things just by knowing pointers and how to construct/use objects. It won't be pretty but you can brute force through a ton of bullshit.

What kind of foundation do you know? Do you know templates, STL, pointers, references, overloading, genetics? And how much have you actually used? ( just reading about it doesn't count)
You have to actually code things to get better, just reading someone's c++ blog or whatever is helpful, it's not real foundation.

Generics*

My method is
>Pick a cool project to build
>Before you start, consider what design patterns might he useful (Gang of Four and Head First design patterns both useful for this, tho there are others)
>try to use standard library to reduce the amount of code needed, but always make sure to learn about the standard library component in detail before using it and make your design more elegant

>good at programming?
>Primarily c++.
Avoid C++. You'll waste far to much time fighting the language and not enough time actually doing anything.

>doing as many exercises as possible
Also learn to read other peoples code. Like lots of it.

By foundation I was thinking strictly intro stuff, since I've done almost all of that stuff to the point that it's drilled in my head. I can reproduce almost all of it without looking up examples online. What you're talking about though I could use a lot more practice with, outside of pointers. This is part of what motivated me to ask this question. I'm not gonna take Data Structures until next spring so I have a lot of time between semesters to prepare. So I was planning to finish off the second half of the book my school uses, doing as many of the exercises as possible, that way I have a pretty solid base in C++ going in. It goes all the way up to graphs and the STL so I should be good to go by then.

How vital is knowing the STL though? I don't think I'm allowed to use it for my DS class, but I do plan on learning it anyway.
Why should I avoid C++? I enjoy the language for the most part, especially now that I'm getting into classes and what not

>Avoid C++. You'll waste far to much time fighting the language
Don't listen to this guy, C++ is probably one of the best skills to have as a software engineer and one of the most portable and powerful programming languages. The learning curve is steep but it's worth it.

I think he means to see which techniques others used to solve the same problem. Others may have come up with simpler or more performant solutions to the same problem, and you can learn from that.

>How vital is knowing the STL though? I don't think I'm allowed to use it for my DS class, but I do plan on learning it anyway.
Well, primarily in your data structures class you're probably going to be reimplementing things that are in the STL (and frameworks like boost) anyways, but in real projects (not leetcode interviews or undergrad exams) it's more important to be aware of the tradeoffs and use cases for a certain DS, type or algorithm than it is to be able to implement that DS from scratch. Although, there is definitely benefit to being able to know how to do that if you want a custom DS for your needs and that's definitely a skill you need to learn if you want to become a senior engineer.

But will what I learn in C++ transfer over to other languages well, or would I have to learn those languages from the ground up? I have heard that it's more important to learn the concepts of programming, but that it also hurts you if you only know one language, so I find that a little confusing.
I see, that makes sense. I do that from time to time if I had issues with a program I was trying to do, or if I'm curious how someone else did it.

Also I may be heading to bed soon, but if the thread is still up later I'll reply

Okay that makes sense, thanks for the advice user

A good programmer is first and foremost a TEAMPLAYER.
(And it makes me sad, that it was not mentioned yet here)

Learn to write clean code (code is written once but read very often)
Learn how to test your code (heard about Test Driven Development?)
Participate in pair programming and code reviews.

I recommend the books of Robert C Martin, if you need literature
- Clean Code
- Clean Coder
- Clean Architecture
- Art of Unit Testing (is this from Bob Martin?)

What language you are using does not matter at all!

>What do you mean by 4?

something like "how do i deliver what a client wants for the least amount of my own time?". obviously you can't google this the same way you can google "the 8 queens problem" to get the exact answer.

you will also need to use more tools and glue them more (database, libraries, APIs etc.) i.e. bringing every thing you know together to solve a larger problem.

Everyone in this thread is wrong, OP you should read books. Read C++ Primer and git gud.

OP i used to be in the same boat, only language I "know" is C++ because of my school. Just practice practice practice my man

make a connect four game
make a tic tac toe game
make a snake game
make a hentai game

I don't care with C++ the possibilities are finite

just write, and practically
experiment with language features
learn all of C++
all the bloat
everything from lockfree programming to template metaprogramming

embed and extend a scripting language
make some GUI based tools with Qt
write a physically based renderer using opengl
write a physically based renderer using vulkan
rewrite those GUIs with dear imgui or nuklear

learn assembly, try your hand at reverse engineering

lolno this is how you burn out
do not do this
do not listen to people who tell you to do this
tell them to go fuck themselves

>he uses unironically to sound smart

Honestly, skip the books and the bullshit and implement something you are interested in.
Programming is like playing the piano or riding a bicycle. Sure, there are books explaining how to do it, and they're useful, but at some point you need to practice.

In fact C++ books tend to focus on the useless stuff (arcane template crap) while in actual reality C++ developers spend more time chasing:
>Build system issues
>Linker issues
>Performance issues (learn how to use a profiler)
>Memory leaks and undefined behavior (learn how to setup sanitizers/Valgrind)
>Portability issues
And all that stuff.

Good ideas desu.
Before starting with OpenGL (or Vulkan which is even worse) you can go far with just using SDL to move pixels and shit, even implement a basic 3D engine using software rendering.

Learn data structures, and then apply them to your day to day problems