>> That was a serious question though.
How important is it to be a good
computer programmer to be a good computer scientist?
>> I think it's very important to
have outstanding programmers in computer science but, I
don't think it is very easy to
be outstanding at every aspect of computer science.
Again as I mentioned, for me, I look at even
in the homework assignments that we give in algorithmic thinking.
We do, the homework assignments spans, spans the problem all the
way from the English description to the implementation and running the analysis.
And, in that part of that process is writing the program
and one has to be, very capable of writing the problem,
knowing the syntax of the language, knowing, you know, all sorts
of tricks and so on to implement the, to implement the program.
But there are many other skills that, that,
the computer scientists need to be aware of.
So many people, for example, are very good at designing
algorithms, and once they design the algorithm they figure it out,
that's where they stop and say someone else, let someone else
implement it, and I see a room for these things because.
It's not easy for everyone to claim that, I am good at
doing algorithms, I am good at, at coming up with the math.
And I'm the best also at doing the program,
because I am sure I can write the program
that implements my algorithm, but I am also sure
that there's someone who can optimize that code even better.
And make it even more usable.
>> Come on, you're being ni, you're being to nice here.
I'll, I'll shake it up, I'll get Scott inflamed here.
>> [LAUGH].
>> So, I've actually read this, and I subscribe to this little point
of view, that in some sense, programming
is actually probably the least important skill.
I kind of view that being the janitor of computer science.
And let me explain why the process of taking a well defined
description and turning it into code is actually a fairly straight forward thing.
The hard intellectual challenge is hearing a problem, thinking how to
formulate it, thinking about algorithms, data structures, how to solve it.
It's taking that high level problem and turning into a
specification and a program we can then turn into code.
And I mean you'll see this, for example outsourcing.
Outsource is going to take a lot of the
low end programming jobs and essentially kind of.
Kind of put them out to the world where they're really done by a low cost.
The people that are actually making the six
figure salaries in computer science are the problem
solvers, the one that a corporation can come
to and say hey, I have this computational problem
and I need you to take it and figure out how to solve it and build
me a description that I can then give
to some programmers and turn it into some code.
Now don't get me wrong, I don't think that programming is irrelevant.
I think it is very important to understand how
you actually implement these because it will influence your design.
But I think the role of programming is not as high as Scott might think.
>> So how important do you think it is to be disciplined in your approach
to doing this versus being a maverick and just going out there and doing it?
>> [LAUGH] So Scott was, so Scott and
I actually have many, many comments about this.
And I'll say in building IPP, I have learned the importance of discipline.
>> [LAUGH]
>> But I'll leave you a little background for what I do.
So for 25 years, I did basically computer graphics.
And so my kind of job was to solve problems in computer graphics.
And I had students that essentially translated my ideas into code.
And so a lot of code that they had built was kind of one-off code that
was used to demonstrate a concept or to
solve a problem and they weren't working in teams.
The thing that I've learned working with you
is that if you need to work with others,
and that's for most of the problems your
out there, you're going to have to work in teams.
Discipline is very important because the wild
hairy code that you write for one-off for
maybe a research paper is not the kind of code you want to have in say.