Ask HN: How much would you charge to mentor me in C++?
How much would you charge for this? Per hour? Please be realistic.
How much would you charge for this? Per hour? Please be realistic.
On the mentor charge, I think trying to get a mentor and pay a per hour thing maybe wrong. I mean, I can charge you for an hour for a skype 'lesson' but what about all the other work a mentor/teacher would have to do (checking code you wrote, writing notes, writing assignments or doing 'lesson plans')?
If you are interested, you can email me (info on profile) and we can discuss it further (for reference, I've wrote a book about C++ and having using it for more than 10 years as a developer).
You should probably find someone in the Open Source world who is willing to mentor you for free and you could contribute code to their project (thus building a profile for yourself).
I myself am not very good in C++, but the more you program, the better you become. You may need to read Exceptional C++ by Herb Sutter and some other style guides and other books including Modern C++ Design by Andrei Alexandrescu and C++ Templates : The Complete Guide by Josuttis and Vandevoorde. The Stanley Lippman book mentioned in another comment is also very good.
I work on an Open source project in C++ (but it's also got yacc and it's a compiler (so it may be a high barrier for you, but if you'd like to give it a try I would be happy to help for free) ), and I dont think I am good enough to mentor someone, but you should be able to find an Open Source dev who will mentor you, if you agree to contribute back. This way you can save yourself some money and build a profile at the same time.
email: nxd_in@yahoo.com, github neilxdsouza (same as my HN username).
the compiler is not yet pushed to github - I will do so and update you (but I dont have your email id either)
Are you a C++ novice or a programming novice? If you're a programming novice you should take some time and learn some standard algorithms and data structures. Introduction to Algorihms is fairly standard for university algorithm course. Make sure you understand complexity and big O notation. Understand typical container classes and their trade offs (lists, queues, stacks, deques, various types of trees, etc).
The best way to improve your code is to write code. Reading good code also helps but when you start out you can't tell good from bad. Here are some questions to ask yourself as you write: Is what I'm doing clear? Will I be able to understand what I did and why I did it if I read this a year from now? What could go wrong? What inputs do I expect and what happens if I get something unexpected? How hard will this be to update? How hard will this be to debug if things go wrong?
For a novice I'd suggest reading Effective C++ and More Effective C++ by Scott Meyers. Read a point or two a week and really focus on using them in your coding that week. This will help you build up good habits. A lot of good coding is good habits accumulated over time. Herb Sutter is another author with excellent books for beginning to intermediate coders. He's also got a really good blog.
Once you've read and used techniques from Meyers and Sutter get a copy of Code Complete by Steve McConnel This book is a great resource. Once you've read it all the way through you can read Modern C++ Design by Alexandrescu. Anytime you find yourself thinking you should use a technique from Alexandrescu stop. You've probably gone too far and over thought something. Maybe ten percent of the time this happens you'll be right and template craziness is the right approach. You'll save yourself a lot of headaches the other ninety percent of the time by thinking more about what you're doing.
I know that some of these books are expensive but you really don't need to get them all at once. You can take a long time reading through each of them and learning to apply their content.
Do you think it's worth learning esoteric algorithms or just the fundamental ones in order to get a job?
Also, what do you think about design patterns? Do you use it in practice (often)?
Esoteric algorithms aren't necessary but can be nice to know. If there's an area you want to specialize in or learn about you should learn the basic algorithms for that area. There are lots of things I've learned that I don't use regularly. For these things it's enough to know about them and have a rough idea. That's what books and the internet are for.
Design patterns can be useful if the people you work with know them. Their biggest benefit is giving you a common set of terminology that you can use to describe something. If I tell someone I'm using a factory they'll usually know what I'm talking about without needing more explanation. However, I wouldn't worry about them for now if I was you.
My goal is to contribute to open-source database (like create a data-type extension(ex:hll) for postgres (iknow it's in c))
you probably should have posted the thread on a weekday