I’ve left Google after working there for 19 years.
For most of that time I’ve been fortunate in being able to work on the Go programming language. Go was started by Rob Pike, Ken Thompson, and Robert Griesemer in the fall of 2007. I joined the team in June, 2008, about the same time as Russ Cox. I’ve been very lucky to be able to work with such remarkable people on such an interesting project.
I am astonished at how much use Go has gotten over the years. Go has reached the status of being just another programming language, one that any programmer can choose when appropriate. That is far beyond what any of us expected in the early days, when our best hope was that Go might serve as an example for useful ideas that other languages and programming environments could adopt.
I started on Go by adding a Go frontend to the GCC compiler. The Go project already had a compiler, of course, based on the Inferno C compiler. Having two compilers helped ensure that the language was clearly defined. When the two compilers differed, we knew that we had to clarify the spec and figure out what the right behavior should be.
In general my self-appointed role on the Go team consisted of tracking everything I could about the project and looking for areas that needed help. Among other things in the earlier years I added Go support to Google’s internal build system, and to the SWIG tool. For a couple of years I was the team manager. From the first days of Go people asked for support for some sort of generics or type parameterization; working with Robert Griesemer I developed a series of language change proposals, and generics were added to the language in the Go 1.18 release in 2022.
My approach had its good points and its bad points. I was quick to see the problems that people were running into today, and the problems they would run into tomorrow, and I was often able to get those problems addressed. But I was slow to see the ideas that would help people do new things that they weren’t trying to do and thus weren’t missing, things such as the Go module proxy and the Go vulnerability database.
Overall I think my approach was a good one in helping to build a successful project. But Gooogle has changed, and Go has changed, and the overall computer programming environment has changed. It’s become clear over the last year or so that I am no longer a good fit for the Go project at Google. I have to move on.
I’m still interested in Go. I don’t think that the language is done. I don’t think that any programming language is ever done–the programming environment changes all the time, and languages must evolve or die. That is doubly true for a language like Go that comes equipped with a substantial standard library, one that must adapt to the new needs of programmers.
I will be taking a break for a while, but I hope to be able to contribute to Go again in the future.
Leave a Reply
You must be logged in to post a comment.