Bjarne Stroustrup is a New York-based managing director in the technology division of Morgan Stanley and an elected member of the U.S. National Academy of Engineering who teaches a computer science course at Columbia University. His main claim to fame is being the inventor – or the “original developer,” in his words – of the programming language C++ and author of The C++ Programming Language.
A native of Denmark who has lived in the U.S. for many years, Stroustrup is a member of the Electronic Design Hall of Fame and worked for many years as a research professor in computer science at Texas A&M University and, prior to that, Bell Labs.
So why did Stroustrup leave his prestigious position in academia to join a big bank? We spoke with him about his career path, how he’s working to make C++ even better and the impact that technology is having on the financial services industry.
[caption id="attachment_268088" align="alignnone" width="300"] Bjarne Stroustrup of Morgan Stanley[/caption]
I provide roving technical help, moving from group to group across the bank as needed. Most of it turns out to be work on distributed systems, reliability, performance and speed of our systems, and coding guidelines for people writing C++ for the firm. Those guidelines have turned into an open-source initiative gaining traction worldwide.
I’m also working on ISO standards, and C++ 17 is coming out next year.
In addition, I’m a visiting professor at Columbia, teaching design using C++, including how to build libraries, software and code bases mostly to do with the infrastructure.
I do work inside Morgan Stanley that's strictly internal, inside work that’s open-source and work outside the bank.
A lot of what I do has to do with C++ and its evolution. That is where there is the most gain for the firm. We have 4.5m users – C++ is used in every industry and at every level, and that leads to a lot of challenges. I’m trying to guide the standards committee to achieve a more powerful and easier-to-use language.
I get inspired by the ideas that I am seeing primarily within the firm and secondarily elsewhere else.
After getting my Ph.D. in computer science [from the University of Cambridge], I started working at Bell Labs [formerly AT&T Bell Laboratories, currently Nokia Bell Labs] in New Jersey, which is unique – it was the best place in the world for practical computer science and industrial research. There was always a very close connection between our research and practical projects. My role there was not so different from my role here [at Morgan Stanley] – I completed approximately 10 projects per year while doing research, generating ideas and getting them into real-world use.
After 24 years it got a bit boring, though, so I went to academia at Texas A&M University, partly because they have a good super-computing group, teaching various kinds of students, doing research, applying for research grants, and more.
I moved to Morgan Stanley to get back to solving real problems. Academia can get a bit, well, academic and too far from real-world problems, and I wanted to get back to the northeast, because I have family here.
The challenge at the time and today is that we want the computers to do a lot, and there are two things we need to deal with: the complexity of what we need to do and the performance of how we do it.
Even a cell phone carries many millions of lines of code within it. If your code is slow and uses a lot of resources, then the battery of your cell phone wears down in under 12 hours, so you have to improve the code.
If your code runs at half speed and you need two data centers instead of just one, then you just blew 60 million bucks plus the cost of running it.
You need your code to deal with efficiency and complexity.
To write large complex software, you have to abstract away from it. Mathematicians want to talk about matrices, IT guys want to talk about IP connections or addresses, finance people want to talk about financial instruments, loans, transactions and bank accounts. You need to be able to write the software in the terms you think about it, which is known as abstraction. That’s the other thing C++ is good at, abstraction, as well as performance. I work on improving code for our server farms, [technology] infrastructure and smartphones themselves.
There is so much strife in terms of which [programming] language is best at what. I don’t like language fanatics. I don’t think you can be a good professional if you only know one language. All the real big systems are built using more than one language, and if you want to be an IT [professional], then you better know a few. We use quite a few at Morgan Stanley, and a lot of them are the most common ones – I can think of about 10, but I wouldn’t want to leave any out, so I’ll decline to comment further.
I have not been in the financial services industry for very long, three years or thereabouts.
Think about low-latency trading – in the Middle Ages that meant getting a guy on a horse to go over the Alps from Italy to England, so low latency meant three weeks or more. That time has gone down, down, down as people have innovated and technology has evolved.
We have used tech to increase speed, reliability, to calculate correctly what the risks are, to get the various rates right, et cetera. Any improvements we’ve had over the past few hundred years in signaling, transportation, mathematics and other disciplines are being used for this. People want their money looked after, and security plays into it too.
With computers in place, everything gets faster and keeps getting faster at a faster rate over time. What used to take weeks can now be done in a millisecond. As more things handled by computers, banks and other financial institutions are turning more and more into tech shops – data gets more important, and communications get more important.
I deal with how to reliably move bits [of data] from point A to B at a reasonable speed, which is very important in a bank – it’s very important in just about any business you can think of.
We should always be worried about employment, but we shouldn’t be hung up on employment in one particular task or industry. Technological unemployment is almost complete – 200 years ago most of us were farmers, but everything changes over time.
The optimistic view is that automation and AI [artificial intelligence] destroy some kinds of jobs because they get taken over by machines but others open up. Some things we were doing in sweat-shop factories were not very fun, and now some people have gotten better jobs.
The question of whether we get more or less good jobs should be asked, but I don’t know the answer. I hope we get more appropriate outlets for people’s talents, but I’m not sure if anyone knows how to do it or predict what will happen as technology becomes more sophisticated. How many billions of people are looking for a job? [The impact of technology on employment] is a tremendously important question.
Things change, and the demands of people in various industries change. I have been in three industries in my career, but I’m a very steady guy – I do the same thing to prepare for a long career. You have to prepare for surprises and changes. The way you do that best is to work on solid fundamentals, because those will stay, but you will change and your job will change in surprising ways.
Working with computers, you have to know the fundamentals: machine architectures of the hardware, data structures, algorithms and operating systems – they will be here long term, then we can specialize in other things that come up, such as data mining and security. Prepare for surprises by working on the fundamentals.
What creates success? Curiosity and persistence – you can’t flip form easy task to easy task because eventually you’ll run out of easy tasks. Especially for geeks, soft skills are also important. Nobody wants to work for or with a jerk, so polish your manners and communication skills. You don’t know what other people know, so you have to express things in simple terms. Think about how you communicate ideas in ways that people will understand them. If you can’t express them in ways to be used on a larger scale, then you might as well play Sudoku or crossword puzzles.
Basic math is also incredibly important. You will never do well if you don’t know some math – it will surprise you how much you need.
Lead photo credit: DragonImages/GettyImages; photo of Stroustrup courtesy of Morgan Stanley