Thursday, June 8, 2023

Bug Lifecycle

Back in the International Conference on Software Engineering (ICSE) 2010, Philip Guo et al published a study on bug resolution in a paper "Characterizing and Predicting Which Bugs Get Fixed: An Empirical Study of Microsoft Windows". The paper investigates the factors that influence bug-fixing decisions in the development of Microsoft Windows, particularly Windows Vista and Windows 7. The authors aimed to understand why some bugs in the Windows operating system are addressed promptly while others remain unresolved for an extended period. They conducted an extensive empirical study by analyzing a large dataset of bug reports and their associated properties from the Windows bug tracking system.

The paper provides several key findings based on their analysis:

  1. Bug Characteristics: The study found that certain bug characteristics influence the likelihood of them being fixed. Bugs that are easier to reproduce, have clear descriptions, and affect a wider user base are more likely to be addressed promptly.
  2. Bug Severity: The severity of a bug plays a significant role in determining the likelihood of it being fixed quickly. High-severity bugs, which have a substantial impact on user experience or system stability, are given higher priority and are more likely to be fixed sooner.
  3. Developer Expertise: The experience and familiarity of developers with specific parts of the codebase influence bug-fixing decisions. Developers tend to fix bugs related to areas they are more knowledgeable about, resulting in variations in bug-fixing rates across different components of the system.
  4. Bug Reporting Quality: The quality of bug reports, including the level of detail, reproducibility, and clarity of description, affects the likelihood of a bug being fixed. Reports that provide more precise information are more likely to receive attention and prompt resolutions.
  5. Bug Activity and Age: Bugs that receive more comments, indicating active discussions and user interest, tend to be fixed faster. Additionally, the age of a bug influences its chances of being fixed, with older bugs often being prioritized to reduce the backlog.
  6. Based on these findings, the authors developed a prediction model to estimate the probability of bug fixes. They used machine learning techniques to train the model, incorporating various bug characteristics and contextual factors. The model showed promise in predicting which bugs are more likely to be fixed promptly. The paper presented a model based on some definition of bug reporter reputation, frequency of bug edits, bug reassignments, geographical distance, and reopenings. They present both the predictive and descriptive statistical models

Wednesday, June 7, 2023

How to do a code review, Part 2

Microsoft several years ago published a conversational article on their case study on code review as well as their own in-house code review tool CodeFlow.

  1. Code Review Challenges: The article highlights several challenges associated with code reviews, including time constraints, difficulty in coordinating reviewers, lack of context, and limitations of traditional review methods like in-person meetings or email-based reviews.
  2. Asynchronous Code Reviews: CodeFlow addresses the challenges by providing a platform for asynchronous code reviews. This allows developers to review and provide feedback on code changes at their own convenience, regardless of time zones or physical location.
  3. Distributed Collaboration: CodeFlow enables distributed collaboration by providing a centralized platform where developers can review, comment, and track the progress of code reviews. It eliminates the need for manual coordination and facilitates efficient communication between reviewers and authors.
  4. Code Quality Improvement: Code reviews play a crucial role in improving code quality. By involving multiple reviewers, CodeFlow helps identify defects, bugs, and design flaws early in the development process. This leads to better overall code quality and reduces the likelihood of introducing errors into the codebase.
  5. Knowledge Sharing: CodeFlow promotes knowledge sharing among developers. Reviewers gain insights into different codebases and programming practices, fostering a culture of learning and continuous improvement. It also helps distribute knowledge across teams and reduces reliance on individual developers.
  6. Iterative Review Process: CodeFlow supports an iterative review process where developers can address feedback, make changes, and have subsequent rounds of review. This promotes collaboration, allows for further refinement of code changes, and encourages constructive discussions between authors and reviewers.
  7. Metrics and Insights: The article presents statistical data on CodeFlow's usage, including the number of code reviews conducted, average review duration, and the number of code changes accepted or rejected. These metrics provide insights into the effectiveness and efficiency of the code review process.
Check out part 1 of these series on code review.

Monday, July 10, 2017

Corporate Governance Today

Once upon a time, companies were managed by founder-owners, engineers, gritty tradesmen, and the like. The current norm of companies managed by a class of professional managers is a relatively recent development. Once upon a time, the dream of an upstart company, especially a tech company, was to go public and become a publicly traded company. A couple of market crashes later and a rather unique interest rate environment has turned this aspiration upside down and many companies have chosen to delay initial public offerings. As of late, the pace in IPOs has picked up somewhat, but it still pales in comparison to the heyday of tech IPOs. One performance all publicly traded companies must have is the shareholders' annual meeting. There is quite a contrast from company to company in how they carry this out. For Berkshire Hathaway, it is a celebratory confab of the giants of industry and finance coming before the oracle of Omaha Warren Buffet. For most companies, it is a formal requirement that they rather do without. In some cases, annual meetings have become outright adversarial. Having already to file numerous SEC-required filings and give earnings calls for the benefit of Wall Street analysts, yet another venue where shareholders, the purported fractional owners of companies, and influencers can raise questions is probably few management teams' idea of fun. It seems to be all too easy for an annual meeting to become adversarial, whether it be due to an impending say-on-pay vote, some kind of environmental or social concern, or just plain input from the shareholders on how a company can tack to become more efficient, profitable, and fast growing. Few teams want to hear from the shareholders because the best input from shareholders always seems to be no input from the perspective of the management. With a large part of the public shares of companies held by mutual funds and ETFs, which in turn are held in 401k accounts, this affects many of us. Nearly all the time, funds carry out a perfunctory according to management recommendation without any consideration or else abstain from voting. This works very much in the favor of management since they can count on funds to support share value, their share value, while not having to worry about large shareholders attempting to get in their say. When did corporate governance become so adversarial and arguably dysfunctional?

This situation also affects tech companies. Though some of the leading tech companies are nominally run by engineers, most are backed by a senior leadership team of professional managers supported by legions of more professional managers. It's not to say that management's job is easy. It is very challenging and sometimes you are put in a no-win situation. However, the fact that communication has broken down or started to fray at the corners between management and their nominal bosses, the shareholders, points to some kind of sea change. Even the entry of activist investors such as Paul Singer's Elliot Management, Carl Icahn, and Third Point are a relatively new phenomenon.

I have written previously about shareholder meetings and how some small investors such as Matthew Rafat are trying to get their say in.

Sunday, July 9, 2017

Top Posts

  1. Share Buybacks is a four-part series that explores the historical performance of the share buyback strategy which seeks to overweigh companies with large share buyback programs.
  2. Buybacks and Dividend Growth explores the debate between proponents of each strategy.
  3. The Saving up for college tuition series muses on the value and underlying frictions found in college savings and investments accounts.
  4. Stock Price Limits and ADRs surveys the research literature on the impact of stock price limits on price discovery.
  5. Max Drawdown recaps a study on the performance of equities and the best and worse case scenarios for buy-and-hold investors during the height of the financial crisis.
  6. Market Indexing explores fundamental index including a brief history and the pros and cons.
  7. Probabilistic counter goes over some of the seminal papers describing the classic efficient non-comparison-based algorithms.
  8. Memory Management and Concurrency in C surveys the costs and benefits of various memory management techniques in software.
  9. Programming language theory meets popular programming languages in Formal Semantics for the Top 5 Programming Languages. Over the last couple of decades, the research community has built an amazing amount of technical machinery in the form of ever fancier type systems and logics to formalize the semantics of programming languages. Most of the time, the subject under study is some niche language that is relatively constrained to admit formalization. However, in the above mentioned post, researchers tackle the fickle and messy popular programming languages head on to try to bring reason and order to a disorderly world.
  10. Scientific method and epistemology presents a 10,000 foot level view of the philosophy of science and knowledge.