In this episode Matthew talks with Brad Wilson about Continuous Integration. The ASP.NET team has converted almost all of there projects to use some sort of continuous integration pattern. In this episode they discuss what CI is and how it helps the team produce a better product. 

Continuous Integration

  • What is continuous integration
    • What is the idea behind it
    • What is the difference between an integration build and an incremental build
  • Details about the CI server
    • What is run for each build
    • How often builds are run
    • What technology is used
  • How does CI help the team produce a better product
    • Provides quick feedback
    • Provides new bits to everyone
  • Tips & Tricks about using a CI server

 

Direct download: CodingQAEpisode40.mp3
Category: podcasts -- posted at: 5:32 PM
Comments[0]

In this episode Federico and Matthew talk about product metrics. Metrics are a common technique used by management to measure progress towards some goal, but they are not without risks. This show lays ground to understand what are product metrics and common pitfalls to avoid.

Product Metrics

  • Definitions (taken mostly from Cem Kaner's article and IEEE standard)
    • Attribute: measurable physical or abstract property of an entity.
    • Measurement: the assignment of numbers to objects or events according to a rule derived from a model or theory.
    • Metric: a measurement function.
    • Quality Factor: a type of attribute. A management-oriented attribute of software that contributes to its quality.
    • Software quality metric: a function whose inputs are software data and whose output is a single numerical value that can be interpreted as the degree to which software possesses a given attribute that affect its quality.
  •   Requirement statement
    • The most important aspect when designing a metric is to think about the intended goal.
    • "To [understand, evaluate, control, predict] the [attribute of the entity] in order to [goal]"
  • Metric design
    • Goal -> Questions -> Metric
  • Evaluation of a metric
    • How much do we need to know about an attribute before it is reasonable considering measuring it?
    • How do we know if we have really measured the attribute we wanted to measure?
    • Direct and indirect measurements.
    • Distortion: metric creates incentives for the employee to allocate his time so as to make the measurements look better rather than to optimize for achieving business goals.
    • Dysfunction: if optimizing for a measurement so distorts the employee's behavior that he provides less value to the organization than he would have provided in the absence of measurement.
  • Examples of bad metrics:
    • Bug counts as a metric of the work of testers and programmers.
    • Code coverage as a metric of code correctness.
    • Test case counts as a metric for quality.
  • Metrics pitfalls
    • Measuring too much, too soon.
    • Measuring the wrong things.
    • Collecting data that is not used or shared.
    • Defining the metric imprecisely.
    • Using a metric for individual evaluation.
    • Ignoring cultural issues.
    • Misinterpreting metric data.
    • Expecting the metric design to stay constant.

 

Direct download: CodingQAEpisode39.mp3
Category: podcasts -- posted at: 10:45 PM
Comments[0]

In this episode Matt and Federico have fun talking about tips to survive the corporate jungle. After too many serious episodes, in this show we joke about our secret strategies to avoid getting thrown under the bus.

Surviving the Corporate Jungle:

  • What to do when somebody asks for volunteers in a meeting?
  • How to handle feedback from a review meeting?
  • What to do when your manager tells that “this is a very good opportunity for you” and will “increase your scope of impact”?
  • Teach, don’t answer.
  • Avoid offering a suggestion you are not willing to do.
  • Research who will attend your meetings.
  • Don’t let your meeting be hijacked.
  • Have fun!

 

Direct download: CodingQAEpisode38.mp3
Category: podcasts -- posted at: 8:12 PM
Comments[0]