Transcription
Today I'm sitting down with Andrew Hsburg, a technical fellow at Microsoft to talk about the future of coding and AI. If you're in computer science or are a tech beginner, you need to pay attention because Andrew is not just a tech leader, but he is the literal creator of programming languages, C and TypeScript. And so when he talks about AI and coding, he is speaking from decades worth of experience. and he dispels a lot of the lies and nonsense people have been spewing about AI. Plus, if you want to succeed and actually get ahead of most developers, he shares some crazy behind-the-scenes stories from building C# and Typescript and I am confident that will change the way you think about coding projects going into the future. So, a lot of value to unpack in this video and let's get to it right away.
In the world of AI that we live in today, a lot of people are even questioning, is it worth learning how to code?
Oh, I absolutely think it's worth learning how to code. Programming languages and code is how AI expresses itself. And there's a whole different world from AI below that has to exist that AI assumes the existence of in the code that it generates. That code has to come from somewhere. It's not all going to be generated by AI.
What are your opinions on vibe coding is going to replace coders.
I am highly skeptical for a lot of stuff that is wrote. How many times can you write this to-do list app? AI in its training set has seen it a gazillion times. So it can riff over that and it can actually get more and more creative now but when it comes down to business logic or you got to invent something that's how this industry makes progress right that's not going to come from AI.
True like understanding the fundamentals. Yesterday I got the opportunity to have a quick chat with Satya. I had asked him beginner level skills people need to know when they're getting into tech. He mentioned understanding the architecture that's something AI can help you generate the code but it won't do the fundamental design which comes from the human mind. And you designed language anguage such as C and TypeScript and were very cognizant what problems you were trying to solve. Rewinding the clock a little bit. What was the story of you creating C?
Well, the story probably starts like with my previous endeavor there at a company called Borland where I wrote Turbo Pascal and then worked also as the architect of a product called Deli. This was all about making programmers more productive, rapid application development, and we competed with Microsoft's marquee product, Visual Basic.
Right?
And you know, if you can't beat them, join them. So, I joined Microsoft in 96. There was this thing called Visual Basic that was super easy to write apps in. And then there was this thing called C++ that is where all the expressiveness and performance was available. And people really wanted a little bit of both. And so, we set out to create that sort of.
The best of both worlds.
The best of both worlds, you know, something that gave you the power and expressiveness of of C++ but with the ease of use of Visual Basic with a bunch of modern infrastructure behind it called .NET.
Are there any examples of features of the language that did both that you could explain?
Things like properties and events. There were object-oriented programming languages already, but everyone was working with this notion of properties on their objects and events on their objects. But no programming languages had given first class treatment to that before.
Do you have any example of a great project to create with C#?
Any kind of web backend or REST API or write a game? I mean like Unity, right? Like a third of the world's C# programmers write games. It almost doesn't matter what you write. Once you start writing code, you start understanding how programming languages work and how to build data structures and how to get performance, how to measure performance. When you're learning, it's less important exactly what you write.
But just the fact that you're writing.
Right?
You know, you could go write a framework or a set of collection classes if you wanted to. It doesn't matter.
Yeah. And did you think that C would be as big as it got to today?
No.
Of course not.
You never know, right? I mean, and and yes, C I am very proud that it stood the test of time. In fact, I was talking to someone earlier today that it's 25 years since we released C at the 2000 professional developers conference. So, 25 years, that's a long time for something to still be around and in in widespread use.
Fast forwarding a little into your journey. So, TypeScript. Yes. Right. Can you give us the story of that and what problem you were trying to solve?
Well, Typescript, the story probably starts about 15 years ago when a team at Microsoft, the Outlook team, came to us and I was doing C# at the time and they came to us and they asked, "Hey, could you guys productize this thing called script shock?" And I'm like, "What's script shock?" Well, it's this thing that takes C and cross-co compiles it to JavaScript.
Okay.
And I'm like, "Okay, and why would someone want to do that?" Well, we do that because that's the only way that we can get great tooling and scalability for a large project. And we're writing this enormous app in JavaScript because at the time everyone was moving to the browser and JavaScript as the true crossplatform solution. You know, there was like a whole diversity of device form factors coming out like phones and tablets and the PC wasn't you couldn't just assume that it was going to run on a PC and so browser was it.
Yeah. And HTML 5 had happened and you could actually write decent UI, right? And so people were just writing enormous apps in JavaScript and having a very hard time doing it. And this team had chosen to solve the problem by writing the app in C and cross-co compiling it to JavaScript. And I'm like, but that's crazy. Surely you're not going to write best of breed JavaScript apps by writing them in C. Wouldn't you rather write them in JavaScript? What is it about JavaScript that's broken? And can we fix it? And so that was sort of the genesis of of Typescript, fix JavaScript if you will, right? Make it usable for large scale projects and add those things to the language that are necessary such that we can build great tooling on top. And in particular, that meant adding a static type system to the language. We then enable the ability to write great tooling that you see in say Visual Studio Code and our.
Developer experience.
Exactly. Because that's ultimately where the productivity comes from, right? It's like having things like statement completion and code navigation and seeing red squigglies when you make a mistake and whatever. That's what developers love that stuff.
Once you give it to them, you can never take it away again, right? So.
Python developers might disagree slightly, but.
Well, they might, but you know what? I don't know that people are writing million line apps or programs in Python to the same extent. Once something gets big enough.
You really do need these things.
That readability. TypeScript. Yeah. As the creator of C# and TypeScript, when people are learning to code, what are some common mistakes you see people make?
Not spending enough time learning the basic principles and really sort of understand what is it I'm doing? What is a variable really? And what is an array and what is a data structure and how do pointers work? Once you grok that, then it doesn't really matter what language you're in. You know, that's just a veneer on top of the semantics, right? But really understanding the semantics is super important because that allows you to think in a more abstract fashion. If you don't get that deeper understanding of it, then you're sort of thinking at that veneer syntactic level of what do I have to write, but you're not really understanding why you're writing it.
Interesting. If I'm a beginner in tech and I wanted to get hired at a big tech company like Microsoft, what is your number one piece of advice?
Write a bunch of open-source code. Put it on GitHub. That becomes your resume. There's nothing like demonstrating the ability to code.
Mhm.
And a fantastic way to demonstrate that is by building stuff and putting it out in the open.
Yeah.
So don't sit on it, share it.
Yeah. And particularly with AI in the world that we live in, are there certain problems that you would choose to tackle?
It depends on what kind of programming excites you because there are many different things you could do with. Some people like building apps, the UI aspect of it and the experience of the app. Other people like systems like stuff that doesn't have a UI at all or but is like they're into making it perform incredibly well and you know that some people like the theory of it all right and then so there are many different ways you can dive into it. I mean for me I've always been fascinated with writing efficient data structures and understanding how they work. How does a hash work? Why does it work? And how do I make it more efficient? How can I structure the data in my program the right way? Because ultimately that's where the performance comes from.
Right. Right. Exactly. Exactly. It's like the small design choices that affect so much in performance.
Right. And do you think a computer science degree is worth it?
Oh, I I definitely think so. You know, I was sort of somewhat self-taught because at the time I went to college back in in Denmark. I grew up in Denmark. The engineering school I went to didn't even have computer science yet. They started it the following year, right? But I was like in the late '70s. You could go to the other university to for computer science but I was doing engineering and then so a lot of things I sort of had to learn by myself by doing. Boy, I could have saved a lot of time by getting an education that allows you to understand like the history of programming and like we've talked about here like what is a programming language, what are the principles of programming, what is data structures, what are databases, what are operating systems like all of this stuff. It certainly helps to have a passion for it, you know, for me I sometimes joke I never had a real job because I was always doing my hobby. Coding was always my hobby, right? And I was fortunate enough.
Yeah. If you aim to do your best work, you there's got to be a bit of passion in it, you know.
Right.
For sure.
And one final question, will AI replace software engineers?
No.
Who's going to make the AI, right? And who's going to make the programming languages that the AI expresses itself in? And who's going to write the frameworks that the AI talk? I mean, no. AI is an accelerant and it's going to change the way that we do things and it's going to remove a lot of grunt work that we don't need to do anymore cuz AI can help us do it. But it'll allow us to focus more on the creative side cuz AI is not going to innovate. It's not going to like bing have this crazy idea I had in the shower this morning. You know, AI doesn't work that way.
Right. Right. So right now as a software engineer we code. 5 years from now when AI is more into the work pervasive.
What do you see software engineers do? AI will be able to do a lot of that grunt work, but like I said, there's still the deeper side of the science, these frameworks that you have to target. Someone has to design the CPU. Someone has to design the operating systems. There's plenty left. Someone has to get the right idea and devise the right data structure for sharding this app so our startup can grow fast or what have you, right? AI is not going to do that. But it's going to help you with these like.
Yeah. Okay.
The grunt work of writing a test for a pull request. Fine. That doesn't really bring a lot to the table anyway. So yeah, hand that off.
Sweet.
Well, that's about all I have in this video. I really hope that you guys enjoyed it. And if you did, make sure to hit the like button, subscribe if you haven't already. If you're interested in my absolutely free tech newsletter, link for that down below in the description. And if you're interested in watching the conversation I had with the CEO of Microsoft, Satia Nadella, you might want to click right.