
Ask HN: How much would you charge to mentor me in C++? - sedeki
I&#x27;m rather novice in C++. I know the basics. Where I lack is in design, design patterns and a higher level understanding.<p>How much would you charge for this? Per hour?
Please be realistic.
======
BSousa
Do you really need a mentor? Or just a list of good books and path to take?
What is your experience with other programming languages?

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).

~~~
ddorian43
i coudn't see any info on your profile

~~~
BSousa
Weird, email is there, anyway: brunomtsousa@gmail.com

~~~
jaredsohn
The email address field can only be viewed by you and Y Combinator. Put it in
'about' if you want it to be publicly visible.

------
neilxdsouza
Not a direct answer to your question but ...

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.

~~~
sedeki
Sounds interesting. Do you have a github and email?

~~~
neilxdsouza
Sorry about the late reply, I have no-procrast on, am going to disable it.

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)

------
fredophile
I write C++ for a living. I don't have time for Internet mentoring but I will
suggest a few resources and general ways you can improve your code.

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.

~~~
sedeki
Thank you for this answer. I will look into all these things but in particular
the algorithms.

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)?

~~~
fredophile
To start with it would probably be best to focus on fairly standard data
structures and algorithms. Here are some you should learn about: stack, queue,
dequeue, linked list, doubly linked list, binary tree, heap, B tree. You
should be able to identify some times when you'd want to use one vs another
from this list and what tradeoffs they have.

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.

------
fogleman
I was once contacted out of the blue by a local student who wanted some
programming lessons. I met him at a coffee shop and worked with him for about
an hour for free. We only did it once, but I was glad to help out.

------
codemonkeymike
I am sure if you went to any big CS university in your area you could find
some grad student who well versed in the requisite knowledge in being a good
C++ programmer (Like Algorithm design, linear algebra, discrete math), and
have them tutor you, generally the going rate is about $20-40 an hour. I would
also make it a point to make sure they are proficient in what they say they
are, a good set of questions or something of that sort. Find someone who
enjoys reciting what they know, and will let you pick their brain.

------
ddorian43
Also what would be a great resource to learn c++ ?

My goal is to contribute to open-source database (like create a data-type
extension(ex:hll) for postgres (iknow it's in c))

~~~
sedeki
"C++ Primer" by Lippman et al. is the best book in my opinion
[http://www.amazon.co.uk/C-Primer-Stanley-B-
Lippman/dp/032171...](http://www.amazon.co.uk/C-Primer-Stanley-B-
Lippman/dp/0321714113/ref=sr_1_1?ie=UTF8&qid=1393070675&sr=8-1&keywords=c%2B%2B+primer)

~~~
ddorian43
thanks

you probably should have posted the thread on a weekday

~~~
sedeki
Yes, probably :-)

