OSCON: Sessions Day Three

Below are my notes from the third and final day of sessions here at OSCON. The talks I attended were:

  • Practical OpenID
  • Highly-technical Management of Software Development

After the morning keynotes, I attended Practical OpenID, presented by David Recordon and Brian Ellin. They gave a quick overview of authentication and then discussed how OpenID works:

  • You obtain an OpenID from someplace like MyOpenID (linked below).
  • You add two lines of HTML to your site header – to prove you own that URL.
  • You then go to an OpenID enabled site and enter your URL.
  • The site goes to the URL you entered and determines the OpenID server from the information in the page header
  • The web app then redirects you to the login page on the OpenID server.
  • Once you’ve authenticated yourself with your password, the browser is redirected back to the web app with your credentials.

Then Brian ran the Rails demo and showed how his Rails app was able to authenticate through MyOpenID and redirect back to his Rails app with additional registration information.

David also mentioned that there is a $5,000 bounty for open source apps which integrate OpenID: iwantmyopenid.org.

Next up was Highly-technical Management of Software Development by Alex Martelli of Google. He started out by listing the three legs of the software development stool:

  • Right intention => strategic leadership
  • Right action => excellent developers
  • Right endeavor => effective highly-technical management

He then asked a series of questions regarding these three pillars:

  • What is great strategic leadership?
    • a strong vision of the business model
    • mutual trust, interaction and respect
    • courage, integrity, humility, etc

    They do their job well and let me to do mine.

  • What makes developers excellent?
    • great at design, coding, developing, testing, debugging, user interface design, etc.
    • mutual trust, interaction and respect
    • courage, integrity, humility, etc.

    They do their job well and enable me to do mine.\ Aside: How do you get excellent developers? Luck, choice or grow them.

  • What is effective highly-technical management?
    • start with a manager who’s a technical peer of the developers
    • develop mutual trust, interaction and respect with the developers
    • the manager deployes themself as a “wildcardâ€? technical resource – not for the “funâ€? tasks, for the urgent ones needing extra resourcesThere are usually three objections to this:
      • What about Brooks’ Law?

        • “Adding resources to a late project makes it laterâ€?
        • Yes, but in that case it’s due to the fact that the new developer must get up to speed on the project
        • The highly-technical manager should already be up to speed on the project – no extra overhead, so Brooks’ law doesn’t apply
      • Where does one find the time?

        • NOT in working long hours (aim for 40 a week).
        • NOT by telecommuting (communication is the most critical task and face-to-face communication is best)
        • Time management works (recommended Time Management for System Administrators – schedule 50% of your time each week for emergency tasks or with filler that can easily be post-poned
      • Shouldn’t a manager always delegate?

        • Yes, but delegation doesn’t remove your responsibility – you need to stay up to speed on all of your projects
        • You should trust your people to do what’s right, but you have to enable them to do it
        • Once they see your technical contributions are useful, they will want you involved – as long as you’ll never steal the credit

At the end of his presentation he mentioned that Joel Spolsky got it right about scheduling – a spreadsheet is all you need (Gantt/Pert charts usually don’t work). Use agile methodologies (agile planning, TDD, refactoring/DRY, 40-hour week, ego-less programming, frequent releases).

Alex’s final message was to control your dependencies or they will control you!