Joe Duffy's Blog

  • November 3, 2015
  • Blogging about Midori
  • Enough time has passed that I feel safe blogging about my prior project here at Microsoft, “Midori.” In the months to come, I’ll publish a dozen-or-so articles covering the most interesting aspects of this project, and my key take-aways.

  • November 2, 2015
  • Software Leadership #9: On the Importance of Intellectual Honesty
  • There’s one especially important trait I look for in great team members: intellectual honesty. Many other traits typically follow suit, but lacking this foundation can lead to frequent Kobayashi Maru situations. At best, those slow down the team without adding value, and at worst, turn an entire team toxic and ruin its core cultural values. And it can happen quickly.

  • November 1, 2015
  • Bringing back the blog
  • It seems that I completely blow away and recreate my blog every two years or so. The time has come. I ended up horking my prior setup and have moved everything over to GitHub.

  • October 13, 2014
  • If you're going to fail, do it fast
  • One technique we explored in my team’s language work is something we call “fail-fast.” The idea is that a program fails as quickly as possible after a bug has been detected. This idea isn’t really all that novel, but the ruthless application of it, perhaps, was.

  • October 10, 2014
  • Software Leadership #8: Empower Bottom-Up Innovation
  • No matter how smart of a leader you are, you’re going to be wrong sometimes. Often even. And you won’t always have the best ideas.

  • September 10, 2014
  • Software Leadership #7: Codevelopment is a Powerful Thing
  • I work in a team where the microkernel is developed in close partnership with the backend code-generator. Where the language is developed in close partnership with the class libraries. Where it’s just as common for a language designer to comment on the best use of the language style in the implementation of the filesystem, as it is for such an exchange in the context of the web browser, as it is for a device driver developer to help influence the overall async programming model’s design to better suit his or her scenarios.

  • February 12, 2014
  • Software Leadership #6: Read Every Checkin
  • One of the first questions I ask when joining a new team is: Where do code reviews happen?

  • December 27, 2013
  • C# for Systems Programming
  • 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.

  • July 13, 2013
  • Software Leadership #5: Blur the Line Between Research and Engineering
  • 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.

  • April 12, 2013
  • Software Leadership #4: Slow Down to Speed Up
  • 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.