J
James Kanze
"James Kanze" <[email protected]>
Of course it is not necessary. Just as there are winners on
lottery too, you can't rule out beforehand that buying a
ticket is a poor investment...
My RL experience is pretty sour, with long-time C users coming
to C++. For junoirs I'm the fan of tech that teaches C++
without C -- and on the average level C exposition hurts more
than helps.
Perhaps. But my experience suggests that people who don't
write clean code in C (or Fortran) won't do so in C++,
regardless, and people who write clean code in the languages
they already know will do so instinctively in C++. It's not a
question of how long they spend learning the language: the first
group will never write clean C++ (unless they relearn how to
write code in general), and the second will write clean code in
a subset of C++ very quickly.
For too many problems the C++ way differs drastically from the
C way. And in a properly shaped application the injected
C-stlye code will introduce problems.
Yes. Eventually. Not in 1 week.
Why not? The subset will be reduced, and a lot of the C++ won't
really be idiomatic, but if they were writing clean code in the
languages they used before, they should be able to learn a
minimally usable subset of C++ in about a week.
Just like with spoken language -- if pressed one can learn
basic interactive communication fast (where he can manage
everyday use cases). But if you have sophisticated thoughts
and want to express them precisely, that is far away. If ever
happens. I'm using English for what, 20 years? Read a ton of
books, no problem, but still struggle with stating what I
want.
Natural languages are several orders of magnitude more difficult
than C++. C++ has less than 100 keywords---some writers in
English use a vocabulary of something like 50000 keywords. And
while the C++ standard is already pretty large, it's nothing to
what it would take to define all of the idiosyncracies of a
natural language.
And of course, you can be productive in English with just "basic
English"---including, often, expressing some very complex ideas.
The expression may not be as concise as that of a native
speaker, but if you think clearly, and accept your limitations,
you can probably express yourself clearly enough to be perfectly
understood.
Certainly "productive" is not the same as "perfect" just to
map back to the original thread.
We didn;t yet see the answer to how "prodictive" is being
measured. So possibly speaking about different completely
different things.
Peopleware and similar books write about the effect of adding
manpower to a late project -- that makes it even later.
Getting productive in a new project takes a plenty of time by
itself. A realistic HR view is that the *properly* selected
new guy will gain 0-saldo in like half a year. Or one year.
Agreed, although it depends on the context. (The one year is
typically for fresh graduates. And no place I've worked would
accept more than three months from a consultant, and most
expected productivity in less time than that.)
At my last workplace I had knowledge and experience that
exceeded the sum of all the other members put together. With
weighted measure probably several times. Yet I'm quite sure
my net productivity was in the negatives for ~ 2 months.
So I keep my sceptical view on productivity when someone
doesn't even know the language -- and that is not a tuned one
like python.
I think that learning the language is often the simplest part.
I know that on the one project I did in Java, I became
fully proficient in Java in less than a month (and would have
been productive in less than a week, if there'd been something
to be productive on)---proficient enough to find a threading
error in some of the library code from Sun. It took me
considerably longer to learn the application domain, and what
was required of the program.