My team has been designing and implementing a set of “systems programming” extensions to C# over the past 4 years. At long last, I’ll begin sharing our experiences in a series of blog posts.
What I am about to say admittedly flies in the face of common wisdom. But I grow more convinced of it by the day. Put simply, there ought not to be a distinction between software research and software engineering.
I am naturally drawn to teams that work at an insane pace. The momentum, and persistent drive to increase that momentum, generates amazing results. And it’s crazy fun.
It’s really hard to build a great team. It can take years of hard work and an enormous amount of patience.
The very notion of “authority” is 90% in your head. And it’s one that often holds back otherwise very capable people.
The best people in software have an innate ability to communicate using code. They have an idea and simply code it up, thereby making it reality. In fact, the best people are, I would say, obsessed with code.
I’ve been managing software teams for several years. Perhaps more importantly, I have worked for some excellent leaders and have had the opportunity to learn from their good (and bad) habits.
I mentioned recently that a paper from my team appeared at OOPSLA in October:
.NET has a lovely property: it’s got a single string type.
A glimpse of some research we’ve done recently just appeared at OOPSLA last week:
I often wish that .NET had erred on the side of offering postmortem instead of premortem finalization.
It’s been unbelievably long since I last blogged.
InfoQ recently asked me a few questions about concurrency and programming languages, and here is what I had to say:
After spending more time than I’d like to admit over the years researching memory model literature (particularly Java’s terrific JMM and related publications), subsequently trying to “fix” the CLR memory model, reviewing proposals for new C++ memory models, and beating my head against the wall for months developing a new memory model that supports weakly ordered processors like the kind you’ll find on ARM in a developer-friendly yet power-efficient way, I have a conclusion to share.