It's hard to give advice, at least as hard as to take advice.
Don't over specialize. Don't be
too sure that you know the future.
Be flexible, and remember
that careers and jobs is a long term
thing, as too many young people think. They can
optimize something and
then they find they've spent a couple of
years or more specializing in something that may not have been
the right thing. In the process, they burn out because they haven't spent
enough time building up friendships and having
a life outside computing. I meet a lot of
sort of, I don't know what we
call them, junior geeks that just think that the
only thing that matters is their subspecialty of
computing programming or AI or
graphics or something like that, and, well, it isn't.
And the rock might be pulled under them for
that. And if they do nothing else,
well, if you don't communicate your ideas,
you can just as well do Sudoku.
You have to communicate. And a lot of,
a lot of sort of caricature nerds forget
that. They think that if they can just write the best code,
they'll change the world. But you have
to be able to listen, you have to communicate with your
would be users and learn from them, and you have to be able to communicate
the ideas to them. So you can't just do
code, you have to do something
about culture and how to express ideas.
I mean, I never regretted the time I spent
on history and on math.
Math sharpens your mind. History gives you some
idea of your limitations and what's going on in the world.
And so don't be too sure. Take time
to have a balanced life and be
ready for the opportunity. A broad based education,
a broad based skillset, which is what you build
up when you educate. Basically, building a portfolio of skills
means that you can take advantage of an opportunity.
When it comes along, you can recognize it sometimes
we have lots of opportunities, but a lot of
them we either can't take advantage of or we don't notice.
It was my fairly broad education. I done standard
computer science, I've done compilers, I've done multiple
languages. I think I knew two dozen at the time. And I
have done machine architecture, I've done operating systems.
And that skill set turned out to be useful.