Advice

M

Martin Piper

Hi all.

I've recently landed myself the position of trainee
C++ programmer which I'm extremely pleased about,
but also nervous.

According to the feedback from the interview, I
have a good basic knowledge of C++ (through college)
although my contract states that I must endeavour to
learn more, so my question is - which areas of C++
might I bone up on which will bring immediate benefits
to my C++ programming career.

Also can anyone reccomend a book of programming
algorithms (common problems) in C++ that will aid
my general programming logic/skills.

Thanks.
 
J

John Harrison

Martin Piper said:
Hi all.

I've recently landed myself the position of trainee
C++ programmer which I'm extremely pleased about,
but also nervous.

According to the feedback from the interview, I
have a good basic knowledge of C++ (through college)
although my contract states that I must endeavour to
learn more, so my question is - which areas of C++
might I bone up on which will bring immediate benefits
to my C++ programming career.

Also can anyone reccomend a book of programming
algorithms (common problems) in C++ that will aid
my general programming logic/skills.

Thanks.

I think the big issue for newbies is to learn the common programming idioms
that good C++ programmers use. There are a lot of ways to mess up in C++ and
there are plenty of important techniques that should be more widely known.

'Effective C++', 'More Effective C++' by Scott Meyers and
'The C++ Standard Library' by Josuttis

will give you a lot of good practical advice.

john
 
I

Ivan Vecerina

message | I've recently landed myself the position of trainee
| C++ programmer which I'm extremely pleased about,
| but also nervous.
Congratulations!

| According to the feedback from the interview, I
| have a good basic knowledge of C++ (through college)
| although my contract states that I must endeavour to
| learn more, so my question is - which areas of C++
| might I bone up on which will bring immediate benefits
| to my C++ programming career.

Well, there are different directions a C++ programming
career can take...

Before diving into C++ itself (which is good), I would
also take the time to read a book such as:
"The Pragmatic Programmer" (Hunt&Thomas).
It has a LOT of useful general advice.

For C++ itself, I can second John's advice for C++
books, with some additions:
- The Effective C++ and More ~ (Meyers)
The C++ ones provide sound advice (though I had
quickly found them to become obvious).
"Effective STL" is also useful (one you know the STL).
- The C++ Standard Library (Jossutis): excellent to
understand the standard library. Remains useful
as a reference (unless you prefer to use the
actual ISO document defining the C++ standard,
of which an inexpensive pdf can be obtained).
- Exceptional C++ and More~ (Sutter): teaches about
a lot of *useful* corner cases and situations.
See also http://www.gotw.ca/gotw from which
the book was derived.

*if* you want to get into advanced C++ design techniques,
using techniques that are unique to C++:
- "Modern C++ Design" (Alexandrescu)
- "Multi-Paradigm Design" (Coplien)
- "Generative Programming" (Czarmecki)

Make sure to also learn about design patters if you
haven't yet ("Design Patters", Gamma & al).
(If you want more about patterns, I liked "Pattern-
Oriented Software Architecture", vol 1 especially).
Make sure to learn other languages (Python/Perl/C#/...)
along the way.
Also learn about UML and software development processes.
RUP (Rational), XP (Extreme Programming), TDD (Test
Driven Development), DBC (Design by contract) are all
concepts to get familiar with...

Also check some less technical books about programming.
"Peopleware" (deMarco&al) and "The Mythical Man Month"
(Brooks) remain useful starting points.


| Also can anyone reccomend a book of programming
| algorithms (common problems) in C++ that will aid
| my general programming logic/skills.

For general programming/logic skills, I find that
doing a bunch of the problems available (with online-
submission and verification) at http://acm.uva.es/problemset/
Doing a few dozens of these (e.g. in Vol 1) can
teach you about a bunch of algorithms and approaches.


I may have been drawing too wide a picture... but
I hope this helps,
Ivan
 
M

Martin Piper

Ivan Vecerina said:
message | I've recently landed myself the position of trainee
| C++ programmer which I'm extremely pleased about,
| but also nervous.
Congratulations!

| According to the feedback from the interview, I
| have a good basic knowledge of C++ (through college)
| although my contract states that I must endeavour to
| learn more, so my question is - which areas of C++
| might I bone up on which will bring immediate benefits
| to my C++ programming career.

Well, there are different directions a C++ programming
career can take...

Before diving into C++ itself (which is good), I would
also take the time to read a book such as:
"The Pragmatic Programmer" (Hunt&Thomas).
It has a LOT of useful general advice.

For C++ itself, I can second John's advice for C++
books, with some additions:
- The Effective C++ and More ~ (Meyers)
The C++ ones provide sound advice (though I had
quickly found them to become obvious).
"Effective STL" is also useful (one you know the STL).
- The C++ Standard Library (Jossutis): excellent to
understand the standard library. Remains useful
as a reference (unless you prefer to use the
actual ISO document defining the C++ standard,
of which an inexpensive pdf can be obtained).
- Exceptional C++ and More~ (Sutter): teaches about
a lot of *useful* corner cases and situations.
See also http://www.gotw.ca/gotw from which
the book was derived.

*if* you want to get into advanced C++ design techniques,
using techniques that are unique to C++:
- "Modern C++ Design" (Alexandrescu)
- "Multi-Paradigm Design" (Coplien)
- "Generative Programming" (Czarmecki)

Make sure to also learn about design patters if you
haven't yet ("Design Patters", Gamma & al).
(If you want more about patterns, I liked "Pattern-
Oriented Software Architecture", vol 1 especially).
Make sure to learn other languages (Python/Perl/C#/...)
along the way.
Also learn about UML and software development processes.
RUP (Rational), XP (Extreme Programming), TDD (Test
Driven Development), DBC (Design by contract) are all
concepts to get familiar with...

Also check some less technical books about programming.
"Peopleware" (deMarco&al) and "The Mythical Man Month"
(Brooks) remain useful starting points.


| Also can anyone reccomend a book of programming
| algorithms (common problems) in C++ that will aid
| my general programming logic/skills.

For general programming/logic skills, I find that
doing a bunch of the problems available (with online-
submission and verification) at http://acm.uva.es/problemset/
Doing a few dozens of these (e.g. in Vol 1) can
teach you about a bunch of algorithms and approaches.


I may have been drawing too wide a picture... but
I hope this helps,
Ivan

That's fantastic, thanks Ivan.
 
T

Thomas Matthews

Martin said:
Hi all.

I've recently landed myself the position of trainee
C++ programmer which I'm extremely pleased about,
but also nervous.

According to the feedback from the interview, I
have a good basic knowledge of C++ (through college)
although my contract states that I must endeavour to
learn more, so my question is - which areas of C++
might I bone up on which will bring immediate benefits
to my C++ programming career.

Also can anyone reccomend a book of programming
algorithms (common problems) in C++ that will aid
my general programming logic/skills.

Thanks.
I highly recommend learning about:
Data Structures (many different books about this)
Design Patterns
Software Design
"Testing Computer Software" by Kaner, Falk & Nguyen
Numerical Algorithms
"Refactoring" by Fowler.
Software Development Processes:
Waterfall model
Spiral model
XP (Extreme Programming)
Test Driven Development
Agile Programming
See the C++ STL Library book link below.

--
Thomas Matthews

C++ newsgroup welcome message:
http://www.slack.net/~shiva/welcome.txt
C++ Faq: http://www.parashift.com/c++-faq-lite
C Faq: http://www.eskimo.com/~scs/c-faq/top.html
alt.comp.lang.learn.c-c++ faq:
http://www.raos.demon.uk/acllc-c++/faq.html
Other sites:
http://www.josuttis.com -- C++ STL Library book
 
J

John Dibling

which areas of C++
might I bone up on which will bring immediate benefits
to my C++ programming career.

Once the basics of the C++ language itself are learned to a degree, there is
still much learning to be done before one can is a competent programmer.
Your biggest hurdle next is probably learning to program for the specific
operating system you will be working with. You don't need to know every
nuance of the C++ standard to begin learning your operating system; in fact,
I would say if you have the rudimentary basics and are bright, you are ready
to start learning the operating sysytem. Your deficincies in the core
language itself will become apparent to you as you go, and you can cover
these JIT (just-in-time). For this use, I recommend referring to
Stroustrup, "The C++ Programming Language."

So for instance, if in your new job you will be doing Windows programming,
you should start learning Windows programming. But it's not as simple as
that, either. You also need to find out what technologies your shop uses to
do it's work (ie, MFC, dot NET, etc), and concentrate your efforts in
learning that technology. (OT: In the case of learning Windows programming
using MFC, a good starting point is "Programming Windows 95 using MFC," by
Jeff Prosise)

Now, a word of warning. You are still on the left side of the learning
curve. That is, even though just learning C++ itself was probably hard (as
it is for everyone), things are probably about to get *much* harder. You
will probably buy and read $500 worth of books in the next year. At some
point you may think to yourself, "I just don't get any of this. I'll never
be a good programmer." You might think this all the time, and start to hate
your job. Don't despair. Everybody goes through this. Really. Epiphany
is coming. You will go in to work one day and just *get* it.
Also can anyone reccomend a book of programming
algorithms (common problems) in C++ that will aid
my general programming logic/skills.

Read the C++ FAQ online (www.parashift.com/c++-faq-lite/), maybe even buy
the book.

Learn STL. It provides solutions to many common problems. Don't reinvent
the wheel. If you find yourself writing a linked-list class, or a sorting
function, or some kind of memory-managed array, *stop*! Use STL instead.
Its already in there, and it works. You can always come to this newsgroup
and ask, "Is there something in STL I can use to accomplish this?"

Good luck on your new job!

- John Dibling
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,139
Messages
2,570,805
Members
47,356
Latest member
Tommyhotly

Latest Threads

Top