We define abstraction as selective ignorance.


My Talk with Dr.Stroustrup

Question_3: How do you describe your self? Programmer or expert?


Takashi Toyota asked:
C++ supports large-scale projects by providing mechanisms such as namespace and exception handling. I like those concepts. However, such big projects are led by those without exact knowledge of C++. The managers used to write C-based codes. They are old dogs. They do not know how to design the solutions. Bad design causes the programmers to have a hard time at a later stage. You once said you are a programmer, not a language designer.

How would you tell from programmers from "experts"? In my country, experts are well paid, while programmers are less paid. The number of experts increases and programmers decreases. Do you have the same problem with your country?

Any comment would be highly appreciated.

Reference:
Please choose your rules with care and with solid knowledge of your application area. Some of the worst coding standards (I won't mention names "to protect the guilty") were written by people without solid knowledge of C++ together with a relative ignorance of the application area (they were "experts" rather than developers) and a misguided conviction that more restrictions are necessarily better than fewer. The counter example to that last misconception is that some features exist to help programmers having to use even worse features. Anyway, please remember that safety, productivity, etc. is the sum of all parts of the design and development process - and not of individual language features, or even of whole languages.

Dr.Stroustrup answered:
I'm a professor of computer science in an engineering school. So the official answer must be that I'm a computer scientist, an engineer, a teacher, and a researcher. I designed and implemented C++ so I'm a designer and an implementer/developer. I have written a lot - and what I wrote is read by many - so I'm an author. Importantly, I also spend 25 years in industry applying my ideas and learning about problems. I guess that I must be an "expert", though I'm not exactly sure in what I'm an expert. However, everything I do (writing, designing, teaching, research, etc.) have to do with code, with writing, testing, and maintaining code, so I'm definitely also a programmer.

I think too many people ignore code and the structure of code as being "too low level to be interesting." They end up paying for that mistake in lost business opportunities and maintenance cost. It is naive and utterly self-defeating to think that a programming language will solve your problems for you - a language simply gives you a way of expressing your ideas, your domain expertise. On the other hand, a good language, such as C++, provides many ways of expressing ideas more concisely and truer to the original conception of a solution than does a less expressive language. That way, it can help with correctness, maintenance, and performance. My ideal for a developer is someone who is working hard to become an expert in some domain while continuously searching for the best ways of expressing solution in code.

Some of the worst management decisions I have seen has been by people who had programmed a dozen years ago, been good at it and promoted, but now think that they can still program and that nothing has changed in the world of software development since they stopped writing code. That kind of manager can be even more dangerous than a manager who has never programmed because the latter tend simply to underestimate the task and ask for miracles - you get over that after a failure or two, whereas seriously sub-optimal development can carry on (wastefully) for ages.


Previous | Next



Our approach is possible only because C++, and our understanding of it, has had time to mature.


Copyright©Takashi Toyota 2004- 2008
Today is 2008-07-07.