Ever tried designing a programming language? If you got far enough you’ll know that it is fun, exciting, exhausting, mind boggling, frustrating and utterly surprising.
I’m the language PM on the C# team here at Microsoft. I am part of the language design group, take notes from our meetings, communicate decisions to the production team and write some of the specs.
This is a wonderful team. Everyone has a strong sense of responsibility for the quality of our product, and not least for the design of our language. We all have our own opinions of course, and we happily volunteer them. Ever so often, profound discussions erupt, sometimes as galactic mail threads slowly revolving around a fiery core, sometimes as violent tornados of creativity sucking up all productivity in their devastating trail for a couple of days.
Some issues just keep coming back. We get fed up with them, make some decision and throw them out the window, only to see them boomerang back and whack us squarely between the eyes a couple of months later.
Most baffling is the complexity. Sometimes what seems like a small or arbitrary decision has vast consequences. Oftentimes we happily settle on a design, believing that we’ve thought it all through, only to find weeks later when someone has to implement it that the whole thing is impractical or impossible in its current form.
On this blog I want to share some of that with you; some of the hard issues, cool ideas, crazy mistakes and whirling discussions that are part of my life here at Microsoft.
Thanks for visiting our workshop, and come back soon. And, er… please don’t run that query over there – it has only been tested on Customers.