I was hoping for some direction or guidance regarding my C++ learning experience
ID: 642505 • Letter: I
Question
I was hoping for some direction or guidance regarding my C++ learning experience.
I have now read two books, from cover to cover, twice. The first was Ivor Horton's Beginning Visual C++ 2010 and Starting out with C++ Early Objects (7th Edition). At this point and after several months I feel like all I know how to do in C++ is create a basic class, define some methods, use the STL, and read and write info to and from the console buffer (cin/cout). But simple things like saving data to a file, reading from a file, printing, connecting to an FTP site, doing some basic graphic manipulation on the screen (not even DirectX/OpenGL), and so-on I can't do or don't even know where to start. I feel I still haven't learned C++ thoroughly. I think you guys get where I'm going with this.
I tried downloading SFML and compiling it in Visual C++ 2010 Professional. After quite a bit of time, I got it, but then I was lost. I followed the tutorials and one didn't work. I kept getting an error regarding a missing symbol and after an hour or so on Google, I couldn't figure it out.
Can anyone point me in a direction of where one goes from here? I would imagine others have been at this point sometime during their early days.
Explanation / Answer
First off, your situation isn't at all unusual. Most, perhaps all, programmers will experience a moment when they realise that the basic book knowledge that they've acquired by slogging through some weighty tome seems to have left them entirely unprepared for making the jump to "real" coding and problem solving. I went through it, you're going through it, and I'd wager that 99% of the people who contribute to stackoverflow have gone through it at some stage or another.
The bad news is that there's no simple, surefire way to proceed from being someone who's read a few books to being someone who can actually implement that knowledge in real, living, breathing code. The good news is that with some perseverance and the right attitude, you'll eventually make that leap too.
Here's my experience. I started out in pretty much the same way as you, reading lots of books and taking some classes. There were a few steps I took to get to the stage where I finally felt confident in thinking of myself as a semi-decent programmer:
1) It helps to have some sort of idea of what you want to end up doing. Once you have a goal to aim at, learning becomes much, much easier. In my case, I was a physics student who knew that once I finished my (formal) education, I wanted to go to work designing and implementing automated trading systems. (Hey, I'm greedy, I admit!) That helped me to see that I'd benefit from learning as much C++ as possible, as well as knowing a thing or two about networking, concurrency, and machine learning. In other words, having a specific goal in mind helped me to identify the steps I needed to get there. I tailored my actions and education accordingly.
2) I took every opportunity to actually work as a programmer. Vacation jobs doing even seemingly meaningless code maintenance turned out to be invaluable experiences since I saw how code is actually written by real people (which is a huge help in bridging the gap between what you learn from a book and how that knowledge is applied in the real world).
In addition, I benefited immensely from having actual, experienced coders to talk to. Having someone next to you who can explain exactly what happens in a build process, the importance of documentation, or what the compiler is really doing when you pass it some obscure flag is truly invaluable. Reality really is the highest-bandwidth communication channel you can get your hands on!
3) I started contributing to a specific open source project that was relevant to my area of interest. This, actually, was the most difficult part since I was coming into a pretty huge existing codebase and didn't have the benefit of having someone who already understood the architecture sitting next to me in the office. Open-source involvement is a great way to learn, but it takes more effort than many people would lead you to believe.
4) Be realistic, hard-working, and above all, humble. Becoming even a semi-competent C++ programmer took me three years of hard work. It took longer than I expected. It was frustrating, demoralizing, and downright horrible at times, especially at the start. But I stuck with it and kept looking to learn from others. It was not only a great experience but turned out to be pretty lucrative as well. And learning C++ gave me the confidence to go on and learn other languages too (C#, Java, Erlang, Scala, Python, and the like).
Good luck with it. You'll get there in the end.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.