That depends on what you mean by “learning.” If you are a C
programmer you can learn enough C++ to make you more effective at
C-style programming in a day.
The book Programming: Principles and Practice using C++
has been used to get thousands of freshmen (1st year students) through
the fundamentals of C++ and the programming techniques it supports
(notably object-oriented programming and generic programming) in a
semester.
On the other hand, if you want to be fully comfortable with all the
major C++ language constructs, with data abstraction, Object-Oriented
programming, generic programming, Object-Oriented design, etc., you can
easily spend a year or two – if you aren’t already acquainted with those
techniques (say, from Java or C#).
Is that then the time it takes to learn C++? Maybe, but then again,
that is the timescale we have to consider to become better designers and
programmers. If a dramatic change of the way we work and think about
building systems isn’t our aim, then why bother to learn a new language?
Compared to the time required to learn to play the piano well or to
become fluent in a foreign (natural) language, learning a new and
different programming language and programming style is easy.
For more observations about learning C++ see D&E or a note Bjarne Stroustrup wrote some time ago.
Companies successfully teach standard industry “short courses,” where a university semester course is compressed into
one 40 hour work week. But regardless of where you get your training, make sure the courses have a hands-on element,
since most people learn best when they have projects to help the concepts “gel.” But even if they have the best
training, they’re not ready yet.
It takes 6-12 months to become broadly proficient in C++, especially
if you haven’t done OO or generic programming before. It takes less time
for developers who have easy access to a “local” body of
experts, more if there isn’t a “good” general purpose C++ class library
available. To become one of these experts who
can mentor others takes around 3 years.
Some people never make it. You don’t have a chance unless you are teachable and have personal drive. As a bare minimum
on “teachability,” you have to be able to admit when you’ve been wrong. As a bare minimum on “drive,” you must be
willing to put in some extra hours. Remember: it’s a lot easier to learn some new facts than it is to change your
paradigm, i.e., to change the way you think; to change your notion of goodness; to change your mental models.
Two things you should do:
- Get your people two books: one to tell them what is legal, another to tell them what is moral
- Consider bringing in a “mentor”
Two things you should not do:
- You should not bother having your people trained in C as a stepping-stone to learning OO/C++
- You should not bother having your people trained in Objective-C as a stepping-stone to learning OO/C++
No comments:
Post a Comment